Initial commit with translated description
This commit is contained in:
262
SKILL.md
Normal file
262
SKILL.md
Normal file
@@ -0,0 +1,262 @@
|
||||
---
|
||||
name: upload-post
|
||||
description: "通过Upload-Post API将内容上传到社交媒体平台。"
|
||||
---
|
||||
|
||||
# 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
|
||||
|
||||
1. Create account at [upload-post.com](https://upload-post.com)
|
||||
2. Connect your social media accounts
|
||||
3. Create a **Profile** (e.g., "mybrand") - this links your connected accounts
|
||||
4. Generate an **API Key** from dashboard
|
||||
5. Use the profile name as `user` parameter 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
|
||||
|
||||
```bash
|
||||
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:
|
||||
- `user`: Profile username (required)
|
||||
- `platform[]`: Target platforms (required)
|
||||
- `video`: Video file or URL (required)
|
||||
- `title`: Caption/title (required)
|
||||
- `description`: Extended description
|
||||
- `scheduled_date`: ISO-8601 date for scheduling
|
||||
- `timezone`: IANA timezone (e.g., "Europe/Madrid")
|
||||
- `async_upload`: Set `true` for background processing
|
||||
- `first_comment`: Auto-post first comment
|
||||
|
||||
## Upload Photos
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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).
|
||||
|
||||
```bash
|
||||
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:
|
||||
- `document`: PDF, PPT, PPTX, DOC, DOCX (max 100MB, 300 pages)
|
||||
- `title`: Document title (required)
|
||||
- `description`: Post commentary
|
||||
- `visibility`: PUBLIC, CONNECTIONS, LOGGED_IN, CONTAINER
|
||||
- `target_linkedin_page_id`: Post to company page
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
| Platform | Videos | Photos | Text | Documents |
|
||||
|----------|--------|--------|------|-----------|
|
||||
| TikTok | ✓ | ✓ | - | - |
|
||||
| Instagram | ✓ | ✓ | - | - |
|
||||
| YouTube | ✓ | - | - | - |
|
||||
| LinkedIn | ✓ | ✓ | ✓ | ✓ |
|
||||
| Facebook | ✓ | ✓ | ✓ | - |
|
||||
| X (Twitter) | ✓ | ✓ | ✓ | - |
|
||||
| Threads | ✓ | ✓ | ✓ | - |
|
||||
| Pinterest | ✓ | ✓ | - | - |
|
||||
| Reddit | - | ✓ | ✓ | - |
|
||||
| Bluesky | ✓ | ✓ | ✓ | - |
|
||||
|
||||
## Upload History
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
```json
|
||||
{
|
||||
"scheduled_date": "2026-02-01T10:00:00Z",
|
||||
"timezone": "Europe/Madrid"
|
||||
}
|
||||
```
|
||||
|
||||
Response includes `job_id`. Manage with:
|
||||
- `GET /uploadposts/schedule` - List all scheduled
|
||||
- `DELETE /uploadposts/schedule/<job_id>` - Cancel
|
||||
- `PATCH /uploadposts/schedule/<job_id>` - Edit (date, title, caption)
|
||||
|
||||
## Check Upload Status
|
||||
|
||||
For async uploads or scheduled posts:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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):
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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 `{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](references/platforms.md) for detailed platform parameters.
|
||||
|
||||
## Media Requirements
|
||||
|
||||
See [references/requirements.md](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)
|
||||
Reference in New Issue
Block a user