Víctor Cavero

Upload-Post

商业运营v1.2.0
作者:Víctor Cavero更新于 2026-09-01共 2 个版本 · 最新版本发布于 2026-09-01upload-post
#LinkedIn#Twitter

据 AlphaMoat 统计,截至 2026-10,Upload-Post 累计下载 10,934 次、获 50 个星标,按累计下载量在本次参与排名的 10,914 个 AI 技能中排名第 2,503 位,在「商业运营」分类(873 个)中排名第 206 位。

列表默认按累计下载量排序,也可按星标排序;详情页排名按累计下载量计算。

累计下载
1.1万
星标
50
全站下载量排名
#2,503
全站前 23% · 「商业运营」前 24%
平台累计下载星标评论
ClawHub ↗1.1万50-

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

先在仪表板连接账号,使用 API key 和目标 profile 名称。视频、图片、文本有对应端点,文档限 LinkedIn,各平台支持不同。异步接收不等于发布,应轮询并逐平台报告,谨慎重试失败目标并用幂等机制避免重复。TikTok 收件箱回退仍是草稿;排期还需明确时间和时区。

资料发布于 2026-10-27

可以用来做什么

  • 准备跨平台内容送达并检查结果

什么时候用

  • 已连接社交账号,需要统一发布或排期流程时

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

核对目标 profile、内容类型、平台和时区,并说明如何区分已发布、草稿和失败。

月度数据趋势

累计下载1.1万
7,9879,5701.1万2026-03 · 累计下载 8,2052026-05 · 累计下载 9,6672026-07 · 累计下载 1.0万2026-08 · 累计下载 1.0万2026-09 · 累计下载 1.1万2026-10 · 累计下载 1.1万26-0326-0926-10
星标50
4749502026-03 · 星标 472026-05 · 星标 492026-07 · 星标 502026-08 · 星标 502026-09 · 星标 502026-10 · 星标 5026-0326-0926-10

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-101.1万—50
2026-091.1万—50
2026-081.0万+1.4%50
2026-071.0万—50
2026-059,667—49
2026-038,205—47

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

15 KB · ClawHub v1.2.0
---
name: upload-post
description: "Publish and schedule content to 15 social platforms through one Upload-Post API call: TikTok, Instagram, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Reddit, Discord, Telegram, Mastodon, WordPress and Google Business Profile. Use when posting or scheduling videos, photo carousels, text or documents across several platforms at once, checking upload status, or pulling analytics."
allowed-tools: Read, Write, Bash(curl:*), Bash(jq:*)
version: "1.2.0"
author: Upload-Post <[email protected]>
license: MIT
compatibility: "Works in Claude Code, OpenClaw and any agent runtime supporting the Agent Skills spec. Requires curl on PATH and the UPLOAD_POST_API_KEY environment variable (optionally UPLOAD_POST_PROFILE). No local media tooling needed — uploads are server-side."
tags:
- social-media
展开全部(共 434 行)
- publishing
- scheduling
- api
- analytics
metadata: {"openclaw":{"emoji":"📤","homepage":"https://upload-post.com","requires":{"bins":["curl"],"env":["UPLOAD_POST_API_KEY"]},"primaryEnv":"UPLOAD_POST_API_KEY"}}
---

# Upload-Post API

Post content to multiple social media platforms with a single API call.

## Overview

One request fans out to every target platform and reports a per-platform result. Accounts are
connected once through OAuth in the Upload-Post dashboard, so this skill never handles
per-platform developer apps, review processes or token refresh — a single API key covers all
15 platforms.

Four content types are supported: video, photo carousels, text-only posts and documents
(LinkedIn). Each can be published immediately, scheduled for a future date, or added to a
posting queue.

## 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

## Configuration

The skill reads two environment variables. Nothing else needs to be installed or wired up:
the OAuth for every platform already happened in the dashboard.

| Variable | Required | Purpose |
|----------|----------|---------|
| `UPLOAD_POST_API_KEY` | yes | API key from the dashboard. Sent as `Authorization: Apikey $UPLOAD_POST_API_KEY`. |
| `UPLOAD_POST_PROFILE` | no | Default profile name for the `user` parameter, so it is not repeated on every request. |

Export them in the shell that runs the agent:

```bash
export UPLOAD_POST_API_KEY="..."
export UPLOAD_POST_PROFILE="mybrand"
```

On **OpenClaw / ClawHub** the skill is gated on `UPLOAD_POST_API_KEY`: until the key is set it
shows as ineligible in `openclaw skills list`. Put it in `~/.openclaw/openclaw.json` so it is
injected only for this skill (`apiKey` maps to `UPLOAD_POST_API_KEY`):

```json5
{
  skills: {
    entries: {
      "upload-post": {
        enabled: true,
        apiKey: "YOUR_UPLOAD_POST_API_KEY",
        env: { UPLOAD_POST_PROFILE: "mybrand" },
      },
    },
  },
}
```

Then confirm the key is accepted before posting anything:

```bash
curl -s "https://api.upload-post.com/api/uploadposts/me" \
  -H "Authorization: Apikey $UPLOAD_POST_API_KEY"
```

## Authentication

```
Authorization: Apikey $UPLOAD_POST_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` | 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 |

## Instructions

1. **Pick the endpoint** by content type — `/upload` for video, `/upload_photos` for photos
   and carousels, `/upload_text` for text-only, `/upload_document` for LinkedIn documents.
2. **Set `user`** to the profile name (`$UPLOAD_POST_PROFILE` when set), not a social handle. The profile determines which
   connected accounts receive the content.
3. **Repeat `platform[]`** once per target platform.
4. **Add a `title`.** Required for YouTube and Reddit, optional everywhere else. Override it
   per platform with `<platform>_title` when the copy should differ.
5. **Set `async_upload=true`** for anything but the smallest files, then poll
   `/uploadposts/status?request_id=…` until it reaches a terminal state.
6. **Read the per-platform result** and report which platforms published and which failed —
   a request can partially succeed.

To schedule instead of publishing now, add `scheduled_date` (ISO-8601) and optionally
`timezone` (IANA). To let Upload-Post pick the next free slot, send `add_to_queue=true`.

## Upload Videos

```bash
curl -X POST "https://api.upload-post.com/api/upload" \
  -H "Authorization: Apikey $UPLOAD_POST_API_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 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 $UPLOAD_POST_API_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

```bash
curl -X POST "https://api.upload-post.com/api/upload_text" \
  -H "Authorization: Apikey $UPLOAD_POST_API_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 $UPLOAD_POST_API_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 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 $UPLOAD_POST_API_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 $UPLOAD_POST_API_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 $UPLOAD_POST_API_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 $UPLOAD_POST_API_KEY"

# LinkedIn Pages  
curl "https://api.upload-post.com/api/uploadposts/linkedin/pages" \
  -H "Authorization: Apikey $UPLOAD_POST_API_KEY"

# Pinterest Boards
curl "https://api.upload-post.com/api/uploadposts/pinterest/boards" \
  -H "Authorization: Apikey $UPLOAD_POST_API_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 $UPLOAD_POST_API_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 $UPLOAD_POST_API_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](references/platforms.md) for detailed platform parameters.

## Media Requirements

See [references/requirements.md](references/requirements.md) for format specs per platform.

## Output

An accepted upload returns a `request_id`. With `async_upload=true` the platforms are still
processing at that point:

```json
{ "success": true, "request_id": "req_8f21c04a" }
```

Polling `/uploadposts/status?request_id=…` returns the per-platform outcome. Report each
platform separately — a request can partially succeed:

```json
{
  "status": "completed",
  "results": {
    "tiktok":    { "success": true,  "post_url": "https://tiktok.com/@brand/video/7412..." },
    "instagram": { "success": true,  "post_url": "https://instagram.com/reel/C8xY2..." },
    "youtube":   { "success": false, "error_code": "quota_exceeded" }
  }
}
```

A scheduled post responds `202` with a `job_id` instead, which later appears in upload history.

## Examples

**Publish a clip to three platforms with platform-specific captions**

```bash
curl -X POST "https://api.upload-post.com/api/upload" \
  -H "Authorization: Apikey $UPLOAD_POST_API_KEY" \
  -F "user=mybrand" \
  -F "platform[]=tiktok" -F "platform[]=instagram" -F "platform[]=youtube" \
  -F "[email protected]" \
  -F "title=How to build better habits" \
  -F "tiktok_title=the 1 habit that changed everything 🔥 #fyp" \
  -F "youtube_title=How To Build Better Habits (5 Minute Guide)" \
  -F "async_upload=true"
```

**Schedule a carousel for next Monday, Madrid time**

```bash
curl -X POST "https://api.upload-post.com/api/upload_photos" \
  -H "Authorization: Apikey $UPLOAD_POST_API_KEY" \
  -F "user=mybrand" -F "platform[]=instagram" \
  -F "photos[][email protected]" -F "photos[][email protected]" \
  -F "title=Five lessons from year one" \
  -F "scheduled_date=2026-09-01T09:00:00Z" -F "timezone=Europe/Madrid"
```

**Retry only the platforms that failed**

```bash
curl -X POST "https://api.upload-post.com/api/upload" \
  -H "Authorization: Apikey $UPLOAD_POST_API_KEY" \
  -F "user=mybrand" -F "[email protected]" -F "title=..." \
  -F "retry_request_id=req_8f21c04a"
```

## Error Handling

| Code | Meaning |
|------|---------|
| 400 | Bad request / missing params |
| 401 | Invalid API key |
| 404 | Resource not found |
| 429 | Rate limit / quota exceeded |
| 500 | Server error |

The failure modes that actually bite:

- **`401 Invalid or expired token` with a key you know is good** — the key was sent as
  `Bearer`. API keys use the `Apikey` scheme. The message is misleading: the key is fine,
  the scheme is wrong.
- **Some platforms succeeded, others failed** — this is normal, not an exception. Read
  `results` per platform and retry only the failures with `retry_request_id` instead of
  re-uploading everything.
- **The request timed out** — uploads longer than 59 seconds switch to async automatically.
  Do not treat a timeout as a failure; poll `/uploadposts/status` with the `request_id`.
- **`reached_active_user_cap` on TikTok** — TikTok's daily cap was hit. By default the video
  falls back to the TikTok inbox as a draft: `success` is still `true`, the result carries
  `fallback_to_inbox: true`, and the id starts with `v_inbox_file`. The video is waiting in
  the app, not live.
- **Missing title on YouTube or Reddit** — both reject the upload; every other platform
  accepts an empty title.
- **Duplicate posts after a retry** — send an `Idempotency-Key` header. A retried request
  with a matching key returns the existing job rather than publishing twice.

## 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)

## Resources

- API documentation: https://docs.upload-post.com
- LLM-friendly dump: https://docs.upload-post.com/llm.txt
- Platform-specific parameters: [references/platforms.md](references/platforms.md)
- Media format requirements: [references/requirements.md](references/requirements.md)
- Dashboard and API keys: https://upload-post.com
- MCP connector: https://mcp.upload-post.com/mcp

「商业运营」分类下的热门技能

标书写作专家【百炼标书】商业运营

百炼®标书是一个面向投标场景标书写作的skill,可以帮用户完成四件事:解读招标文件、生成投标文件、审查投标文件合规风险以及标书查重。它适合用自然语言直接写作,用户只要提供文件和需求,就能拿到解读结果、成品标书、审查报告、查重报告。百炼®标书官网:https://biaoshu.zhiliaobiaoxun.com

↓ 70.7万★ 61u_62be253f
AdMapix广告投放工具商业运营

AdMapix广告原始数据层,广告创意/应用/排名/下载收入

↓ 30.9万★ 1u_8ee34d77
全国招标中标查询及分析【知了标讯】商业运营

知了标讯:查询和分析招标、中标、供应商与采购市场信息。

↓ 21.4万★ 14user_98035bfb
招标中标查询及分析服务商业运营

通过知了标讯接口查询和分析招投标相关信息。

↓ 12.1万★ 16user_98035bfb
标书审查【喜鹊标书】商业运营

喜鹊标书审查|让投标风险看得见、查得清、改得准 投标文件准备好了,还有哪些遗漏和隐患?喜鹊标书审查对照招标要求,检查投标文件中的响应缺漏、内容矛盾和潜在风险,帮助您在提交前发现问题、明确修改重点。 - 问题一目了然:区分已确认风险与待核实事项,清晰呈现问题位置、具体表现及潜在影响。 - 审查有据可查:关联招标条款与投标内容,让您看清“要求是什么、哪里存在问题、判断依据是什么”。 - 原文快速定位:结合页码、检索线索和证据截图,减少来回翻找,方便逐项核对。 - 完整报告可交付:提供 Word 审查报告及审查版 PDF,便于团队复核、修改和留档。 支持 PDF、DOCX 及多附件审查。先检查文件,再展示价格并按次付费;支持随时查询进度、继续已付款任务和补领报告,让每一次审查都有清晰结果。 https://www.xiquebiaoshu.com/?source=skillhub](https://www.xiquebiaoshu.com/?source=bid-review-pay

↓ 10.5万★ 1u_84923c62
PollyReach商业运营

为 AI agent 提供电话号码并代办电话事务的技能。

↓ 10.2万★ 56PollyReach
商品图商业运营

将真实产品照片制作成影棚级电商主图、场景图或面向市场平台的高清商品图。这款 AI 商品图工作室用于商品图片处理和电商图片编辑,可替换背景、改善光效、搭建场景。它以原图中的商品外观特征为依据,从一张手机随拍就能做出白底主图、生活场景图和高级广告图。适用于亚马逊白底产品图、淘宝主图、Shopify 产品大图和社交媒体商品图。从一张产品照片出发,组合多张参考图,或在选定草稿上做定向精修,完成适合上架使用的成品;生活场景图和广告图也能直接用作商品详情页图片。

↓ 10.2万★ 10user_87b8e34f
会员体系搭建商业运营

【零一数科·出品】会员体系搭建(免费版)。为私域用户设计会员体系搭建,产出会员等级成长表、积分获取消耗规则表、权益配置矩阵、积分财务测算表四件套。适用于会员积分体系设计、会员等级阶梯、成长值规则、权益配置、积分获取与消耗、积分财务测算、私域会员运营。

↓ 9.7万★ 8u_c19e970c

数据月份:2026-10 · 下载/星标数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。