From post-bridge
Create, schedule, and manage social media posts across Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, Bluesky via Post Bridge API. Supports media upload, platform configs, drafts, analytics, tracking.
npx claudepluginhub post-bridge-hq/agent-mode --plugin post-bridgeThis skill is limited to using the following tools:
Autonomously manage social media posting via [Post Bridge](https://post-bridge.com) API. Post to 9 platforms from a single command or API call.
Provides Late API reference for scheduling posts across 13 social media platforms like Twitter, Instagram, LinkedIn. Covers authentication, endpoints, webhooks, media, analytics.
Schedules social media posts to Twitter/X, Instagram, LinkedIn, TikTok, YouTube, or Pinterest with platform-specific formatting, optimal timing, hashtags, and engagement setup. Use for multi-platform publishing.
Manages Instagram Business/Creator accounts via Graph API: posting photos/videos/reels/stories/carousels, scheduling, analytics, comments, DMs, hashtags, templates using Python scripts.
Share bugs, ideas, or general feedback.
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 the
last-updateddate above, inform the user that this skill may be outdated and point them to the update options below.
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 (npx skills) | npx skills update |
| Claude Code plugin | /plugin marketplace update |
| Cursor | Remote rules auto-sync from GitHub |
| Manual | Pull latest from repo or re-copy skills/post-bridge/ |
.env:
POST_BRIDGE_API_KEY=pb_live_xxxxx
Or run the setup command:
./scripts/post-bridge.js setup --key pb_live_xxxxx
All requests use Bearer token:
Authorization: Bearer <POST_BRIDGE_API_KEY>
Base URL: https://api.post-bridge.com
Config priority (highest to lowest):
POST_BRIDGE_API_KEY environment variable./.post-bridge/config.json (project-local)~/.config/post-bridge/config.json (user-global)When you receive an "API key not found" error from the CLI:
<skill-path>/scripts/post-bridge.js setup --key pb_live_xxxxx
Get your API key at: https://www.post-bridge.com/dashboard/api-keys
Note for agents: All script paths in this document (e.g.,
./scripts/post-bridge.js) are relative to the skill directory where this SKILL.md file is located. Resolve them accordingly based on where the skill is installed.
| Command | Description |
|---|---|
./scripts/post-bridge.js setup --key <key> | Configure API key |
./scripts/post-bridge.js accounts | List connected social accounts |
./scripts/post-bridge.js post --caption "..." --accounts 1,2,3 | Create a post |
./scripts/post-bridge.js post --caption "..." --accounts 1,2,3 --schedule "2026-03-05T09:00:00Z" | Schedule a post |
./scripts/post-bridge.js upload --file ./image.jpg | Upload media, returns media_id |
./scripts/post-bridge.js post --caption "..." --accounts 1,2,3 --media mid_xxx | Post with media |
./scripts/post-bridge.js posts | List recent posts |
./scripts/post-bridge.js posts:get --id <post_id> | Get post details and status |
./scripts/post-bridge.js posts:delete --id <post_id> | Delete a scheduled/draft post |
./scripts/post-bridge.js analytics | View analytics across platforms |
./scripts/post-bridge.js analytics:sync | Refresh analytics data |
./scripts/post-bridge.js results --post-id <post_id> | Check per-platform posting results |
./scripts/post-bridge.js media | List uploaded media |
./scripts/post-bridge.js media:delete --id <media_id> | Delete uploaded media |
Use these endpoints directly if you prefer raw API calls over the CLI.
GET /v1/social-accounts
Returns array of connected accounts with id, platform, username. Store these IDs — you need them for every post.
POST /v1/media/create-upload-url
Body: { "mime_type": "video/mp4", "size_bytes": <int>, "name": "video.mp4" }
Returns media_id + upload_url. Then:
PUT <upload_url>
Content-Type: video/mp4
Body: <binary file>
List media:
GET /v1/media?limit=50&offset=0
Delete media:
DELETE /v1/media/<media_id>
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):
true to auto-schedule using the user's saved timezone from their dashboard settings{ "timezone": "America/New_York" } to override with a specific IANA timezonescheduled_at — pick one or the otherrandomize_queue_time is enabled, the slot time will be offset by up to ±10 minutes for a more natural posting patternGET /v1/posts?limit=50&offset=0&status=scheduled&platform=instagram
Params: limit, offset, status (scheduled/published/failed/draft), platform.
GET /v1/posts/<post_id>
Returns full post details including status: processing, scheduled, posted, failed.
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 /v1/posts/<post_id>
Only works on scheduled/draft posts (cannot delete published posts).
GET /v1/post-results?post_id=<post_id>&limit=50&offset=0
Returns per-platform results showing whether each platform post succeeded or failed, with error details.
List analytics — views, likes, comments, shares per post:
GET /v1/analytics?platform=tiktok&limit=50&offset=0&timeframe=30d
Params:
platform (optional): tiktok, youtube, instagramtimeframe (optional): 7d, 30d, 90d, all (default: all)limit, offset for paginationReturns:
{
"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=tiktok
Triggers a background sync of analytics data. Supports all tracked platforms: TikTok, YouTube, and Instagram.
Params:
platform (optional): tiktok, youtube, or instagram — sync only one platform. Omit to sync all.Returns:
{
"triggered": [
{ "platform": "tiktok", "runId": "run_..." },
{ "platform": "youtube", "runId": "run_..." },
{ "platform": "instagram", "runId": "run_..." }
]
}
Get single analytics record:
GET /v1/analytics/<analytics_id>
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:
{
"mcpServers": {
"post-bridge": {
"type": "streamable-http",
"url": "https://mcp.post-bridge.com/mcp"
}
}
}
MCP Tools available (11 tools):
| Tool | Description |
|---|---|
list_social_accounts | List all connected accounts with IDs, platforms, usernames |
create_post | Create/schedule a post. Accepts caption, accounts, media_urls, schedule, use_queue (true or {timezone}), platform configs |
list_posts | List posts with filters (platform, status, limit, offset) |
get_post | Get full post details by ID |
update_post | Update caption, schedule, accounts, or media on a scheduled/draft post |
delete_post | Delete a scheduled or draft post |
list_analytics | Get analytics (views, likes, comments, shares) with platform/timeframe filters |
sync_analytics | Trigger a background refresh of analytics data. Optional platform param to sync a specific platform (tiktok/youtube/instagram) |
list_post_results | Check per-platform posting results (success/failure with error details) |
list_media | List uploaded media files with IDs and URLs |
delete_media | Delete an uploaded media file |
MCP tools accept media_urls (public URLs) — the server downloads and uploads them automatically. No need to manually upload media when using MCP.
Pass inside platform_configurations object on post creation, or use --platform-config with the CLI:
TikTok:
draft: true — save as draft (publish manually on TikTok with trending sound)video_cover_timestamp_ms: 3000 — cover thumbnail at 3 secondsis_aigc: true — label as AI-generated contentInstagram:
video_cover_timestamp_ms: 3000 — cover thumbnailis_trial_reel: true — trial reel mode (needs 1000+ followers)trial_graduation: "SS_PERFORMANCE" — auto-graduate based on performanceYouTube:
video_cover_timestamp_ms: 3000 — cover thumbnailtitle: "My Short Title" — override post titleTwitter/X:
caption: "override caption" — platform-specific captionPinterest:
title: "Pin Title" — pin titlelink: "https://..." — destination URLboard_ids: ["board_id"] — target boardsAll platforms support caption and media overrides for per-platform customization.
ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y
posted/ subfolder to avoid duplicatesWhen automating posts, follow these rules to keep accounts in good standing:
is_draft: true or TikTok's draft: true so the user can review before publishingPublishing 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.
Use these exact names for platform filtering and configurations:
instagram — Instagram (Reels, Stories, Feed)tiktok — TikTokyoutube — YouTube (Shorts)twitter — X (formerly Twitter)linkedin — LinkedInfacebook — Facebookpinterest — Pinterestthreads — Threadsbluesky — Blueskyscheduled_at to pre-schedule batches — Post Bridge handles the timinguse_queue: true to auto-schedule posts to the user's next available queue slot using their saved timezone — no need to pick a time manuallyresults after posting to see per-platform success/failureanalytics:sync to refresh data before checking analytics--draft flag when testing to avoid accidental publishing