Skip to main content 首页 创作者 georgedoors888 gb-power-market-jj postsyncer-social-media-assistant
postsyncer-social-media-assistant Manages social media through PostSyncer using REST and/or MCP. Use when scheduling, posting, or managing content across Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Threads, Bluesky, Pinterest, Telegram, Mastodon. Covers posts, media library (list, import URLs, delete, multipart file upload), media folders (CRUD), comments with optional `media` attachments, labels, campaigns, and analytics. Accounts must be pre-connected in the PostSyncer app.
跳到安装 Skills Marketplace 发现并探索由社区构建的 Agent Skills
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/GeorgeDoors888/GB-Power-Market-JJ --skill postsyncer-social-media-assistant命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
下载 Zip 下载中... name postsyncer-social-media-assistant version 2.1.1 title Social Media Assistant (via postsyncer.com) description Manages social media through PostSyncer using REST and/or MCP. Use when scheduling, posting, or managing content across Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Threads, Bluesky, Pinterest, Telegram, Mastodon. Covers posts, media library (list, import URLs, delete, multipart file upload), media folders (CRUD), comments with optional `media` attachments, labels, campaigns, and analytics. Accounts must be pre-connected in the PostSyncer app. license MIT author PostSyncer <support@postsyncer.com> homepage https://postsyncer.com/openclaw keywords ["social-media","postsyncer","automation","scheduling","instagram","tiktok","youtube","twitter","linkedin","api"] metadata {"openclaw":{"requires":{"env":"[Truncated]"},"primaryEnv":"POSTSYNCER_API_TOKEN"}}
PostSyncer Social Media Assistant
Autonomously manage social media through PostSyncer using the REST API.
Setup
Create a PostSyncer account at app.postsyncer.com
Connect social profiles (Instagram, TikTok, YouTube, X, LinkedIn, etc.)
Go to Settings → API Integrations and create a personal access token with abilities: workspaces, accounts, posts, and (if you use them) labels, campaigns
Add to .env: POSTSYNCER_API_TOKEN=your_token
PostSyncer MCP (optional)
PostSyncer MCP uses the same Bearer token as REST. Typical tools: list-workspaces, list-accounts, post CRUD, list-media , get-media , upload-media-from-url , delete-media , list-folders , create-folder , get-folder , update-folder , delete-folder , comments, labels, campaigns, analytics.
Multipart file upload is only via REST: POST /api/v1/media/upload/file (not exposed as an MCP tool). Use upload-media-from-url or REST URL import when the client cannot send multipart.
How to Make API Calls
All requests go to https://postsyncer.com/api/v1 with the header:
Authorization: Bearer $POSTSYNCER_API_TOKEN
Content-Type: application/json
Use web_fetch, curl, or any HTTP tool available. Always read $POSTSYNCER_API_TOKEN from the environment.
API Reference
Discovery (Call First)
List Workspaces — GET /api/v1/workspaces
curl "https://postsyncer.com/api/v1/workspaces" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Returns workspaces with id, name, slug, timezone.
List Accounts — GET /api/v1/accounts
curl "https://postsyncer.com/api/v1/accounts" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Returns accounts with id, platform, username, workspace_id.
Media library Requires the posts ability. Responses include id, workspace_id, folder_id, and asset metadata.
List Media — GET /api/v1/media
curl -G "https://postsyncer.com/api/v1/media" \
--data-urlencode "workspace_id=12" \
--data-urlencode "page=1" \
--data-urlencode "per_page=50" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Query params: workspace_id, folder_id, root_only (true/false), page, per_page (max 100).
Get Media — GET /api/v1/media/{media_id}
curl "https://postsyncer.com/api/v1/media/999" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Import from URLs — POST /api/v1/media/upload/url
curl -X POST "https://postsyncer.com/api/v1/media/upload/url" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"workspace_id": 12, "urls": ["https://example.com/photo.jpg"], "folder_id": null}'
Upload file (multipart) — POST /api/v1/media/upload/file
Use multipart/form-data with fields such as workspace_id, file (and optional chunk/chunk metadata if your client uses chunked upload). Not JSON.
Delete Media — DELETE /api/v1/media/{media_id} (confirm first)
curl -X DELETE "https://postsyncer.com/api/v1/media/999" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Media folders Requires the posts ability.
List Folders — GET /api/v1/folders
curl -G "https://postsyncer.com/api/v1/folders" \
--data-urlencode "workspace_id=12" \
--data-urlencode "root=1" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Query params: workspace_id, parent_id, root (top-level only).
Create Folder — POST /api/v1/folders
curl -X POST "https://postsyncer.com/api/v1/folders" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"workspace_id": 12, "name": "Campaign assets", "color": "#3b82f6", "parent_id": null}'
Get Folder — GET /api/v1/folders/{id}
Update Folder — PUT /api/v1/folders/{id}
curl -X PUT "https://postsyncer.com/api/v1/folders/5" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"name": "Renamed folder"}'
Delete Folder — DELETE /api/v1/folders/{id} (confirm first)
Posts List Posts — GET /api/v1/posts
curl "https://postsyncer.com/api/v1/posts?page=1&per_page=20&include_comments=false" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Query params: page, per_page (max 100), include_comments (true/false).
Get Post — GET /api/v1/posts/{id}
curl "https://postsyncer.com/api/v1/posts/123" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Create Post — POST /api/v1/posts
curl -X POST "https://postsyncer.com/api/v1/posts" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{
"workspace_id": 12,
"schedule_type": "schedule",
"content": [{"text": "Caption #hashtags", "media": [42, "https://example.com/image.jpg"]}],
"accounts": [{"id": 136}, {"id": 95, "settings": {"board_id": 123}}],
"schedule_for": {"date": "2026-03-26", "time": "14:30", "timezone": "America/New_York"},
"labels": [5],
"repeatable": false
}'
schedule_type: publish_now | schedule | draft
schedule_for: Optional scheduling object used when schedule_type is schedule. Provide {"date": "YYYY-MM-DD", "time": "HH:MM", "timezone": "..."} to schedule for a specific date/time, or omit/leave empty to auto-schedule to the next available time slot
content: Array of thread items. Each needs text and/or media: an array of library media IDs (integers) and/or HTTPS URL strings (import or list media first when you want stable IDs)
accounts: Array of {id, settings?}. Platform-specific options go in settings
Update Post — PUT /api/v1/posts/{id}
curl -X PUT "https://postsyncer.com/api/v1/posts/123" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"content": [{"text": "Updated caption"}], "schedule_for": {"date": "2026-03-27", "time": "10:00"}}'
Only posts that have not been published yet can be updated.
Delete Post — DELETE /api/v1/posts/{id} (confirm with user first)
curl -X DELETE "https://postsyncer.com/api/v1/posts/123" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Comments List Comments — GET /api/v1/comments
curl -G "https://postsyncer.com/api/v1/comments" \
--data-urlencode "post_id=123" \
--data-urlencode "per_page=20" \
--data-urlencode "include_replies=true" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Query params: post_id (required), per_page, page, include_replies, platform.
Get Comment — GET /api/v1/comments/{id}
curl "https://postsyncer.com/api/v1/comments/456" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Create Comment / Reply — POST /api/v1/comments
curl -X POST "https://postsyncer.com/api/v1/comments" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"post_id": 123, "content": "Reply text", "parent_comment_id": null, "media": [42]}'
Optional media: array of integer library IDs and/or HTTPS URLs (same shape as post content[].media; do not use a deprecated media_urls field).
Update Comment — PUT /api/v1/comments/{id}
curl -X PUT "https://postsyncer.com/api/v1/comments/456" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"content": "Updated reply text"}'
Hide Comment — POST /api/v1/comments/{id}/hide
curl -X POST "https://postsyncer.com/api/v1/comments/456/hide" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Delete Comment — DELETE /api/v1/comments/{id} (confirm first)
curl -X DELETE "https://postsyncer.com/api/v1/comments/456" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Sync Comments from Platforms — POST /api/v1/comments/sync
curl -X POST "https://postsyncer.com/api/v1/comments/sync" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"post_id": 123}'
Labels List Labels — GET /api/v1/labels
curl "https://postsyncer.com/api/v1/labels" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Get Label — GET /api/v1/labels/{id}
Create Label — POST /api/v1/labels
curl -X POST "https://postsyncer.com/api/v1/labels" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN " \
-H "Content-Type: application/json" \
-d '{"name": "Campaign 2026", "color": "#3b82f6", "workspace_id": 12}'
Update Label — PUT /api/v1/labels/{id}
Delete Label — DELETE /api/v1/labels/{id} (confirm first)
Analytics All analytics endpoints require the posts API ability.
All Workspaces — GET /api/v1/analytics
curl "https://postsyncer.com/api/v1/analytics" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
By Workspace — GET /api/v1/analytics/workspaces/{workspace_id}
curl "https://postsyncer.com/api/v1/analytics/workspaces/12" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
By Post — GET /api/v1/analytics/posts/{post_id}
curl "https://postsyncer.com/api/v1/analytics/posts/123" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
By Account — GET /api/v1/analytics/accounts/{account_id}
curl "https://postsyncer.com/api/v1/analytics/accounts/136" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Sync Post Analytics — POST /api/v1/analytics/posts/{post_id}/sync
curl -X POST "https://postsyncer.com/api/v1/analytics/posts/123/sync" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Queues background jobs to refresh metrics. Does not return metrics directly — call GET after sync.
Account Management Delete Account — DELETE /api/v1/accounts/{id} (destructive, confirm first)
curl -X DELETE "https://postsyncer.com/api/v1/accounts/136" \
-H "Authorization: Bearer $POSTSYNCER_API_TOKEN "
Platform-Specific Settings Pass per-platform options in accounts[].settings when creating/updating posts:
Pinterest: {"board_id": 123456}
{ "reply_settings" : "everyone" , "for_super_followers_only" : false , "quote_tweet_id" : null , "reply" : { "in_reply_to_tweet_id" : null } , "community_id" : null , "share_with_followers" : true }
{ "privacy_level" : "PUBLIC_TO_EVERYONE" , "disable_comment" : false , "disable_duet" : false , "disable_stitch" : false , "post_mode" : "DIRECT_POST" }
Instagram: {"post_type": "POST"} — options: REELS, STORIES, POST
{ "video_type" : "video" , "title" : "My Video" , "privacyStatus" : "public" , "notifySubscribers" : true }
LinkedIn: {"visibility": "PUBLIC"} — options: PUBLIC, CONNECTIONS, LOGGED_IN
Bluesky: {"website_card": {"uri": "https://...", "title": "...", "description": "..."}}
Telegram: {"disable_notification": false, "protect_content": false}
Common Workflows
Schedule a Post to Multiple Platforms
GET /api/v1/workspaces → get workspace_id
GET /api/v1/accounts → get ids for target platforms
Optionally POST /api/v1/media/upload/url (or MCP upload-media-from-url) → use returned ids in content[].media
POST /api/v1/posts with schedule_type: "schedule" and schedule_for
Reply to Comments
GET /api/v1/posts → find post id
POST /api/v1/comments/sync with post_id
GET /api/v1/comments?post_id=123&include_replies=true
POST /api/v1/comments with post_id and optional parent_comment_id
Check Performance
GET /api/v1/analytics/posts/{id} for a specific post
If stale: POST /api/v1/analytics/posts/{id}/sync, then re-fetch
Best Practices
Always start with GET /workspaces and GET /accounts to discover IDs; use GET /folders and GET /media when organizing or attaching library assets
New automations: Use schedule_type: "draft" or confirm before publish_now
Destructive actions: State what will happen, confirm before delete operations
Multi-network: One post can target multiple accounts; check per-platform status in the response
Rate limits: 60 requests/minute — don't call sync endpoints repeatedly
Hashtags: Keep relevant and limited (3–5 per post)
Error Handling Status Meaning 401Token missing or invalid 403Token lacks required ability (e.g. posts) 404Resource not found or no access 422Validation error — check required fields and formats 429Rate limited — wait before retrying
Links