post-bridge
Original:🇺🇸 English
Translated
1 scripts
Create, schedule, and manage social media posts across Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky via the Post Bridge API. Covers media upload, post creation, scheduling, platform-specific configs, draft mode, analytics, and post result tracking.
2installs
Added on
NPX Install
npx skill4agent add post-bridge-hq/agent-mode post-bridgeTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Post Bridge Social Media Skill
Autonomously manage social media posting via Post Bridge API. Post to 9 platforms from a single command or API call.
Freshness check: If more than 30 days have passed since thedate above, inform the user that this skill may be outdated and point them to the update options below.last-updated
Keeping This Skill Updated
Source: github.com/post-bridge-hq/agent-mode
API docs: api.post-bridge.com/reference
Update methods by installation type:
| Installation | How to update |
|---|---|
CLI ( | |
| Claude Code plugin | |
| Cursor | Remote rules auto-sync from GitHub |
| Manual | Pull latest from repo or re-copy |
Setup
- Create a Post Bridge account at post-bridge.com
- Connect your social accounts (TikTok, Instagram, YouTube, Twitter, etc.)
- Enable API access (Settings > API)
- Store your API key in workspace :
.envPOST_BRIDGE_API_KEY=pb_live_xxxxx
Or run the setup command:
./scripts/post-bridge.js setup --key pb_live_xxxxxAuth
All requests use Bearer token:
Authorization: Bearer <POST_BRIDGE_API_KEY>Base URL:
https://api.post-bridge.comConfig priority (highest to lowest):
- environment variable
POST_BRIDGE_API_KEY - (project-local)
./.post-bridge/config.json - (user-global)
~/.config/post-bridge/config.json
Handling "API key not found" errors
When you receive an "API key not found" error from the CLI:
- Tell the user to run the setup command — setup requires user input, so you cannot run it on their behalf:
bash
<skill-path>/scripts/post-bridge.js setup --key pb_live_xxxxx - Stop and wait — do not continue with the task. You cannot create posts or perform any API operations without a valid API key.
- DO NOT search for API keys in env files, keychains, or other locations.
Get your API key at: https://www.post-bridge.com/dashboard/api-keys
Note for agents: All script paths in this document (e.g.,) are relative to the skill directory where this SKILL.md file is located. Resolve them accordingly based on where the skill is installed../scripts/post-bridge.js
CLI Commands
| Command | Description |
|---|---|
| Configure API key |
| List connected social accounts |
| Create a post |
| Schedule a post |
| Upload media, returns media_id |
| Post with media |
| List recent posts |
| Get post details and status |
| Delete a scheduled/draft post |
| View analytics across platforms |
| Refresh analytics data |
| Check per-platform posting results |
| List uploaded media |
| Delete uploaded media |
API Reference
Use these endpoints directly if you prefer raw API calls over the CLI.
Social Accounts
GET /v1/social-accountsReturns array of connected accounts with , , . Store these IDs — you need them for every post.
idplatformusernameUpload Media
POST /v1/media/create-upload-url
Body: { "mime_type": "video/mp4", "size_bytes": <int>, "name": "video.mp4" }Returns + . Then:
media_idupload_urlPUT <upload_url>
Content-Type: video/mp4
Body: <binary file>List media:
GET /v1/media?limit=50&offset=0Delete media:
DELETE /v1/media/<media_id>Create Post
POST /v1/posts
Body: {
"caption": "your caption here #hashtags",
"media": ["<media_id>"],
"social_accounts": [<account_id_1>, <account_id_2>],
"scheduled_at": "2026-01-01T14:00:00Z", // omit for instant post
"is_draft": false, // true to save as draft
"use_queue": true, // optional, auto-schedule to next queue slot (uses saved timezone)
"platform_configurations": { ... }, // optional, see below
"account_configurations": { // optional, per-account overrides
"account_configurations": [
{ "account_id": 1, "caption": "override for this account" }
]
}
}Queue scheduling ():
use_queue- Pass to auto-schedule using the user's saved timezone from their dashboard settings
true - Pass to override with a specific IANA timezone
{ "timezone": "America/New_York" } - Cannot be used together with — pick one or the other
scheduled_at - Timezone priority: explicit timezone > saved profile/workspace timezone > UTC
- Queue slots are scoped to the workspace of the selected social accounts
- The queue schedule is configured by the user in their Post Bridge dashboard
- If is enabled, the slot time will be offset by up to ±10 minutes for a more natural posting pattern
randomize_queue_time - Returns an error if no queue schedule is configured or no slots are available in the next 90 days
List Posts
GET /v1/posts?limit=50&offset=0&status=scheduled&platform=instagramParams: , , (scheduled/published/failed/draft), .
limitoffsetstatusplatformGet Post
GET /v1/posts/<post_id>Returns full post details including status: , , , .
processingscheduledpostedfailedUpdate Post
PATCH /v1/posts/<post_id>
Body: { "caption": "new caption", "scheduled_at": "...", "social_accounts": [...] }Can update caption, schedule, accounts, media, platform configs, or draft status. Only works on scheduled/draft posts.
Delete Post
DELETE /v1/posts/<post_id>Only works on scheduled/draft posts (cannot delete published posts).
Post Results
GET /v1/post-results?post_id=<post_id>&limit=50&offset=0Returns per-platform results showing whether each platform post succeeded or failed, with error details.
Analytics
List analytics — views, likes, comments, shares per post:
GET /v1/analytics?platform=tiktok&limit=50&offset=0&timeframe=30dParams:
- (optional):
platform,tiktok,youtubeinstagram - (optional):
timeframe,7d,30d,90d(default:all)all - ,
limitfor paginationoffset
Returns:
json
{
"data": [
{
"id": "...",
"post_result_id": "...",
"platform": "tiktok",
"platform_post_id": "...",
"view_count": 4062,
"like_count": 120,
"comment_count": 15,
"share_count": 8,
"cover_image_url": "https://...",
"share_url": "https://...",
"video_description": "...",
"duration": 30,
"platform_created_at": "2026-03-01T09:00:00Z",
"last_synced_at": "2026-03-03T12:00:00Z",
"match_confidence": "exact"
}
],
"count": 42,
"limit": 50,
"offset": 0
}Sync analytics — refresh data from connected platforms:
POST /v1/analytics/sync?platform=tiktokTriggers a background sync of analytics data. Supports all tracked platforms: TikTok, YouTube, and Instagram.
Params:
- (optional):
platform,tiktok, oryoutube— sync only one platform. Omit to sync all.instagram
Returns:
json
{
"triggered": [
{ "platform": "tiktok", "runId": "run_..." },
{ "platform": "youtube", "runId": "run_..." },
{ "platform": "instagram", "runId": "run_..." }
]
}Get single analytics record:
GET /v1/analytics/<analytics_id>MCP Integration
Post Bridge has a native MCP (Model Context Protocol) server. If you're using Claude Desktop, ChatGPT, Cursor, or any MCP-compatible client, you can connect directly without this skill.
Claude Desktop: One-click connect at post-bridge.com/mcp
Claude Code / Cursor / Other MCP clients — add to your MCP config:
json
{
"mcpServers": {
"post-bridge": {
"type": "streamable-http",
"url": "https://mcp.post-bridge.com/mcp"
}
}
}MCP Tools available (11 tools):
| Tool | Description |
|---|---|
| List all connected accounts with IDs, platforms, usernames |
| Create/schedule a post. Accepts caption, accounts, media_urls, schedule, use_queue (true or {timezone}), platform configs |
| List posts with filters (platform, status, limit, offset) |
| Get full post details by ID |
| Update caption, schedule, accounts, or media on a scheduled/draft post |
| Delete a scheduled or draft post |
| Get analytics (views, likes, comments, shares) with platform/timeframe filters |
| Trigger a background refresh of analytics data. Optional |
| Check per-platform posting results (success/failure with error details) |
| List uploaded media files with IDs and URLs |
| Delete an uploaded media file |
MCP tools accept (public URLs) — the server downloads and uploads them automatically. No need to manually upload media when using MCP.
media_urlsPlatform Configurations
Pass inside object on post creation, or use with the CLI:
platform_configurations--platform-configTikTok:
- — save as draft (publish manually on TikTok with trending sound)
draft: true - — cover thumbnail at 3 seconds
video_cover_timestamp_ms: 3000 - — label as AI-generated content
is_aigc: true
Instagram:
- — cover thumbnail
video_cover_timestamp_ms: 3000 - — trial reel mode (needs 1000+ followers)
is_trial_reel: true - — auto-graduate based on performance
trial_graduation: "SS_PERFORMANCE"
YouTube:
- — cover thumbnail
video_cover_timestamp_ms: 3000 - — override post title
title: "My Short Title"
Twitter/X:
- — platform-specific caption
caption: "override caption"
Pinterest:
- — pin title
title: "Pin Title" - — destination URL
link: "https://..." - — target boards
board_ids: ["board_id"]
All platforms support and overrides for per-platform customization.
captionmediaRecommended Workflow for Video Content
- Store videos in a local folder
- Extract a frame with ffmpeg to read any text overlays:
ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y - Write caption based on video content + hashtags
- Upload → create post → schedule or post instantly
- Move posted videos to a subfolder to avoid duplicates
posted/ - Set a cron to check post status 5 mins after scheduled time
- Track performance by checking post results or analytics
Automation Guidelines
When automating posts, follow these rules to keep accounts in good standing:
- No duplicate content across multiple accounts on the same platform
- No unsolicited automated replies — only post original content or when explicitly requested
- No trending manipulation — don't mass-post about trending topics across accounts
- No fake engagement — don't automate likes, follows, or comments
- Respect rate limits — the API has rate limits, don't spam requests
- Use draft mode for review — when in doubt, use or TikTok's
is_draft: trueso the user can review before publishingdraft: true
Publishing confirmation: Unless the user explicitly asks to "post now" or "publish immediately", always confirm before posting. Creating a draft is safe; posting is irreversible and goes live instantly.
Platform Names
Use these exact names for platform filtering and configurations:
- — Instagram (Reels, Stories, Feed)
instagram - — TikTok
tiktok - — YouTube (Shorts)
youtube - — X (formerly Twitter)
twitter linkedinfacebookpinterest- — Threads
threads - — Bluesky
bluesky
Tips
- Post to multiple platforms simultaneously by including multiple account IDs
- Stagger posts throughout the day (e.g. 9am + 3pm) for better reach
- Use to pre-schedule batches — Post Bridge handles the timing
scheduled_at - Use to auto-schedule posts to the user's next available queue slot using their saved timezone — no need to pick a time manually
use_queue: true - TikTok draft mode lets you add trending sounds manually before publishing
- Keep hashtags to 4-5 per post for best engagement
- Check after posting to see per-platform success/failure
results - Use to refresh data before checking analytics
analytics:sync - Monitor what works and iterate on captions/formats
- Use flag when testing to avoid accidental publishing
--draft - Character limits vary by platform — keep captions concise for X (280 chars)