Upload Post OpenClaw Skill - ClawHub
Do you want your AI agent to automate Upload Post workflows? This free skill from ClawHub helps with communication tasks without building custom tools from scratch.
What this skill does
Upload content to social media platforms via Upload-Post API. Use when posting videos, photos, text, or documents to TikTok, Instagram, YouTube, LinkedIn, Facebook, X (Twitter), Threads, Pinterest, Reddit, or Bluesky. Supports scheduling, analytics, FFmpeg processing, and upload history.
Install
npx clawhub@latest install upload-postFull SKILL.md
Open original| name | description |
|---|---|
| upload-post | Upload content to social media platforms via Upload-Post API. Use when posting videos, photos, text, or documents to TikTok, Instagram, YouTube, LinkedIn, Facebook, X (Twitter), Threads, Pinterest, Reddit, or Bluesky. Supports scheduling, analytics, FFmpeg processing, and upload history. |
Upload-Post API
Post content to multiple social media platforms with a single API call.
Documentation
- Full API docs: https://docs.upload-post.com
- LLM-friendly: https://docs.upload-post.com/llm.txt
Setup
- Create account at upload-post.com
- Connect your social media accounts
- Create a Profile (e.g., "mybrand") - this links your connected accounts
- Generate an API Key from dashboard
- Use the profile name as
userparameter in API calls
Authentication
Authorization: Apikey YOUR_API_KEY
Base URL: https://api.upload-post.com/api
The user parameter in all endpoints refers to your profile name (not username), which determines which connected social accounts receive the content.
Endpoints Reference
| Endpoint | Method | Description |
|---|---|---|
/upload_videos |
POST | Upload videos |
/upload_photos |
POST | Upload photos/carousels |
/upload_text |
POST | Text-only posts |
/upload_document |
POST | Upload documents (LinkedIn only) |
/uploadposts/status?request_id=X |
GET | Check async upload status |
/uploadposts/history |
GET | Upload history |
/uploadposts/schedule |
GET | List scheduled posts |
/uploadposts/schedule/<job_id> |
DELETE | Cancel scheduled post |
/uploadposts/schedule/<job_id> |
PATCH | Edit scheduled post |
/uploadposts/me |
GET | Validate API key |
/analytics/<profile> |
GET | Get analytics |
/uploadposts/facebook/pages |
GET | List Facebook pages |
/uploadposts/linkedin/pages |
GET | List LinkedIn pages |
/uploadposts/pinterest/boards |
GET | List Pinterest boards |
/uploadposts/reddit/detailed-posts |
GET | Get Reddit posts with media |
/ffmpeg |
POST | Process media with FFmpeg |
Upload Videos
curl -X POST "https://api.upload-post.com/api/upload_videos" \
-H "Authorization: Apikey YOUR_KEY" \
-F "user=profile_name" \
-F "platform[]=instagram" \
-F "platform[]=tiktok" \
-F "[email protected]" \
-F "title=My caption"
Key parameters:
user: Profile username (required)platform[]: Target platforms (required)video: Video file or URL (required)title: Caption/title (required)description: Extended descriptionscheduled_date: ISO-8601 date for schedulingtimezone: IANA timezone (e.g., "Europe/Madrid")async_upload: Settruefor background processingfirst_comment: Auto-post first comment
Upload Photos
curl -X POST "https://api.upload-post.com/api/upload_photos" \
-H "Authorization: Apikey YOUR_KEY" \
-F "user=profile_name" \
-F "platform[]=instagram" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "title=My caption"
Instagram & Threads support mixed carousels (photos + videos in same post).
Upload Text
curl -X POST "https://api.upload-post.com/api/upload_text" \
-H "Authorization: Apikey YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"user": "profile_name",
"platform": ["x", "threads", "bluesky"],
"title": "My text post"
}'
Supported: X, LinkedIn, Facebook, Threads, Reddit, Bluesky.
Upload Document (LinkedIn only)
Upload PDFs, PPTs, DOCs as native LinkedIn document posts (carousel viewer).
curl -X POST "https://api.upload-post.com/api/upload_document" \
-H "Authorization: Apikey YOUR_KEY" \
-F "user=profile_name" \
-F 'platform[]=linkedin' \
-F "[email protected]" \
-F "title=Document Title" \
-F "description=Post text above document"
Parameters:
document: PDF, PPT, PPTX, DOC, DOCX (max 100MB, 300 pages)title: Document title (required)description: Post commentaryvisibility: PUBLIC, CONNECTIONS, LOGGED_IN, CONTAINERtarget_linkedin_page_id: Post to company page
Supported Platforms
| Platform | Videos | Photos | Text | Documents |
|---|---|---|---|---|
| TikTok | ✓ | ✓ | - | - |
| ✓ | ✓ | - | - | |
| YouTube | ✓ | - | - | - |
| ✓ | ✓ | ✓ | ✓ | |
| ✓ | ✓ | ✓ | - | |
| X (Twitter) | ✓ | ✓ | ✓ | - |
| Threads | ✓ | ✓ | ✓ | - |
| ✓ | ✓ | - | - | |
| - | ✓ | ✓ | - | |
| Bluesky | ✓ | ✓ | ✓ | - |
Upload History
curl "https://api.upload-post.com/api/uploadposts/history?page=1&limit=20" \
-H "Authorization: Apikey YOUR_KEY"
Parameters:
page: Page number (default: 1)limit: 10, 20, 50, or 100 (default: 10)
Returns: upload timestamp, platform, success status, post URLs, errors.
Scheduling
Add scheduled_date parameter (ISO-8601):
{
"scheduled_date": "2026-02-01T10:00:00Z",
"timezone": "Europe/Madrid"
}
Response includes job_id. Manage with:
GET /uploadposts/schedule- List all scheduledDELETE /uploadposts/schedule/<job_id>- CancelPATCH /uploadposts/schedule/<job_id>- Edit (date, title, caption)
Check Upload Status
For async uploads or scheduled posts:
curl "https://api.upload-post.com/api/uploadposts/status?request_id=XXX" \
-H "Authorization: Apikey YOUR_KEY"
Or use job_id for scheduled posts.
Analytics
curl "https://api.upload-post.com/api/analytics/profile_name?platforms=instagram,tiktok" \
-H "Authorization: Apikey YOUR_KEY"
Supported: Instagram, TikTok, LinkedIn, Facebook, X, YouTube, Threads, Pinterest, Reddit, Bluesky.
Returns: followers, impressions, reach, profile views, time-series data.
Get Pages/Boards
# Facebook Pages
curl "https://api.upload-post.com/api/uploadposts/facebook/pages" \
-H "Authorization: Apikey YOUR_KEY"
# LinkedIn Pages
curl "https://api.upload-post.com/api/uploadposts/linkedin/pages" \
-H "Authorization: Apikey YOUR_KEY"
# Pinterest Boards
curl "https://api.upload-post.com/api/uploadposts/pinterest/boards" \
-H "Authorization: Apikey YOUR_KEY"
Reddit Detailed Posts
Get posts with full media info (images, galleries, videos):
curl "https://api.upload-post.com/api/uploadposts/reddit/detailed-posts?profile_username=myprofile" \
-H "Authorization: Apikey YOUR_KEY"
Returns up to 2000 posts with media URLs, dimensions, thumbnails.
FFmpeg Editor
Process media with custom FFmpeg commands:
curl -X POST "https://api.upload-post.com/api/ffmpeg" \
-H "Authorization: Apikey YOUR_KEY" \
-F "[email protected]" \
-F "full_command=ffmpeg -y -i {input} -c:v libx264 -crf 23 {output}" \
-F "output_extension=mp4"
- Use
{input}and{output}placeholders - Poll job status until
FINISHED - Download result from
/ffmpeg/job/<job_id>/download - Supports multiple inputs:
{input0},{input1}, etc.
Quotas: Free 30min/mo, Basic 300min, Pro 1000min, Advanced 3000min, Business 10000min.
Platform-Specific Parameters
See references/platforms.md for detailed platform parameters.
Media Requirements
See references/requirements.md for format specs per platform.
Error Codes
| Code | Meaning |
|---|---|
| 400 | Bad request / missing params |
| 401 | Invalid API key |
| 404 | Resource not found |
| 429 | Rate limit / quota exceeded |
| 500 | Server error |
Notes
- Videos auto-switch to async if >59s processing time
- X long text creates threads unless
x_long_text_as_post=true - Facebook requires Page ID (personal profiles not supported by Meta)
- Instagram/Threads support mixed carousels (photos + videos)