Awesome-openclaw-skills 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.
git clone https://github.com/sundial-org/awesome-openclaw-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/upload-post" ~/.claude/skills/sundial-org-awesome-openclaw-skills-upload-post && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/upload-post" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-upload-post && rm -rf "$T"
skills/upload-post/SKILL.mdUpload-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
parameter in API callsuser
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 |
|---|---|---|
| POST | Upload videos |
| POST | Upload photos/carousels |
| POST | Text-only posts |
| POST | Upload documents (LinkedIn only) |
| GET | Check async upload status |
| GET | Upload history |
| GET | List scheduled posts |
| DELETE | Cancel scheduled post |
| PATCH | Edit scheduled post |
| GET | Validate API key |
| GET | Get analytics |
| GET | List Facebook pages |
| GET | List LinkedIn pages |
| GET | List Pinterest boards |
| GET | Get Reddit posts with media |
| 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 "video=@video.mp4" \ -F "title=My caption"
Key parameters:
: Profile username (required)user
: Target platforms (required)platform[]
: Video file or URL (required)video
: Caption/title (required)title
: Extended descriptiondescription
: ISO-8601 date for schedulingscheduled_date
: IANA timezone (e.g., "Europe/Madrid")timezone
: Setasync_upload
for background processingtrue
: Auto-post first commentfirst_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[]=@photo1.jpg" \ -F "photos[]=@photo2.jpg" \ -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 "document=@presentation.pdf" \ -F "title=Document Title" \ -F "description=Post text above document"
Parameters:
: PDF, PPT, PPTX, DOC, DOCX (max 100MB, 300 pages)document
: Document title (required)title
: Post commentarydescription
: PUBLIC, CONNECTIONS, LOGGED_IN, CONTAINERvisibility
: Post to company pagetarget_linkedin_page_id
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 number (default: 1)page
: 10, 20, 50, or 100 (default: 10)limit
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:
- List all scheduledGET /uploadposts/schedule
- CancelDELETE /uploadposts/schedule/<job_id>
- Edit (date, title, caption)PATCH /uploadposts/schedule/<job_id>
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 "file=@input.mp4" \ -F "full_command=ffmpeg -y -i {input} -c:v libx264 -crf 23 {output}" \ -F "output_extension=mp4"
- Use
and{input}
placeholders{output} - Poll job status until
FINISHED - Download result from
/ffmpeg/job/<job_id>/download - Supports multiple inputs:
,{input0}
, etc.{input1}
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)