Operate Postqued social publishing from your agent via MCP, with a v2 REST fallback.
Design & media
post2all
Try itCreate, validate, draft, schedule, publish, update, cancel, and manage platform-specific social posts across connected post2all accounts. Use when the user wants OpenClaw to publish to multiple social networks, adapt copy per platform, handle images or video, or maintain a review-first social workflow.
What it does
Create, validate, draft, schedule, publish, update, cancel, and manage platform-specific social posts across connected post2all accounts. Use when the user wants OpenClaw to publish to multiple social networks, adapt copy per platform, handle images or video, or maintain a review-first social workflow.
The skill document
post2all for OpenClaw
Use post2all as the publishing layer for OpenClaw social workflows.
OpenClaw can research, remember context, generate content, run routines, and decide what should happen next. post2all handles the handoff to the user's connected social accounts: account discovery, platform capabilities, validation, drafts, media uploads, scheduling, publishing, updates, cancellation, and supported deletion workflows.
Default to a draft-first workflow. Let the agent do the repetitive work, then let the user review and schedule or publish the content they approve.
For reusable examples, read references/workflows.md.
For authentication and connection guidance, read references/setup.md.
For publishing boundaries and approval rules, read references/safety.md.
Before using post2all
A post2all account/workspace and at least one connected social account are required for real publishing. Available capabilities depend on the connected platforms, workspace permissions, and post2all plan.
Check that the CLI is available:
post2all --help
If it is not available, the ClawHub install metadata declares the Node package @post2all/cli and the post2all binary.
Before workspace operations, validate authentication:
post2all config whoami --json
Credentials can come from POST2ALL_API_KEY or the local configuration created with:
post2all config set-key p2a_your_api_key
Never print, repeat, log, or commit an API key. Do not ask the user to paste an API key into the conversation.
The hosted post2all MCP server is an alternative connection method for OpenClaw environments that support remote HTTP MCP with OAuth:
https://mcp.post2all.com/mcp
Core publishing workflow
Follow this sequence for reliable publishing work:
- Verify post2all access.
- List connected accounts. Never guess account IDs or platform values.
- Inspect the latest publishing schema/capabilities for all selected accounts.
- Load account-specific publishing options only when the schema requires them, such as Pinterest boards, Discord channels, or TikTok creator restrictions.
- Upload local media before creating the post and use the returned media IDs/objects.
- Build one target per destination account and apply platform-specific copy/settings only where needed.
- Validate before creating whenever the connected interface exposes validation.
- Save a draft unless the user clearly asked to schedule or publish.
- Before scheduling or immediate publishing, show the final destinations and material when meaningful and obtain the required user approval.
- Report the post ID, delivery state, target accounts, and scheduled time.
Useful CLI commands:
post2all config whoami --json
post2all accounts --json
post2all constraints --json
post2all account publishing-options --json
Treat current publishing capabilities as authoritative. Platform rules change. Do not rely on memorized character limits, required fields, privacy values, board IDs, channel IDs, or creator restrictions.
Account model
Every destination is its own target. Multiple accounts on the same platform must remain separate targets.
Example:
{
"platform": "threads",
"accountId": "acc_threads_123",
"settings": {
"caption": "A shorter Threads version",
"topicTag": "buildinpublic"
}
}
Use shared content when the same message works everywhere. Use target-level captions/settings when a platform or account needs a different version.
Delivery modes
Use one of three delivery modes.
Draft:
{ "mode": "draft" }
Immediate:
{ "mode": "now" }
Scheduled:
{
"mode": "scheduled",
"scheduledAt": "2026-09-02T09:00:00+05:30"
}
CLI equivalents:
--delivery draft
--delivery now
--delivery scheduled --scheduled-at
If no CLI delivery flag is provided, post2all creates a draft.
Always use a timezone-aware ISO 8601 timestamp with Z or an explicit UTC offset. Resolve phrases such as "tomorrow morning" using the user's timezone before scheduling.
Create a draft
Drafts are the safest default for an autonomous OpenClaw loop:
post2all post create \
--content "Draft copy for review" \
--delivery draft \
--json
A useful agent pattern is:
- collect ideas during the day;
- turn the useful ones into post2all drafts;
- let the user review the draft queue once per day;
- schedule only the approved posts.
Schedule a post
Only schedule after the user has approved the content/destinations or has explicitly configured a trusted recurring workflow that permits scheduling.
post2all post create \
--content "Scheduled update" \
--targets '[{"platform":"linkedin","accountId":"acc_linkedin_123","settings":{}}]' \
--delivery scheduled \
--scheduled-at "2026-09-02T09:00:00+05:30" \
--json
Publish immediately
Immediate publication is a consequential external action. Use it only when the user clearly requests it and the final post is ready.
post2all post create \
--content "New release shipping today 🚀" \
--targets '[
{
"platform": "linkedin",
"accountId": "acc_linkedin_123",
"settings": {}
},
{
"platform": "threads",
"accountId": "acc_threads_123",
"settings": {
"caption": "Shorter Threads version"
}
}
]' \
--delivery now \
--json
Media
Upload local media before post creation:
post2all media upload ./launch.png --json
Then use the returned media record:
post2all post create \
--content "Launch day" \
--media '[{"id":"media_123","altText":"Product dashboard showing the new launch workflow"}]' \
--targets '[{"platform":"instagram","accountId":"acc_instagram_123","settings":{}}]' \
--delivery draft \
--json
Do not pass local filesystem paths directly to post creation.
Composition is inferred from the attached media. Check the current publishing schema before assuming an account supports text-only, images, video, mixed media, alt text, thumbnails, or other media features.
Platform-specific settings
Do not invent platform settings. Discover the current schema/options first.
Examples of settings post2all may expose include:
- per-platform captions;
- YouTube title, description, tags, category, privacy, and thumbnail controls;
- Instagram thumbnails;
- Pinterest board, link, title, and AI disclosure controls;
- Threads topic tags;
- Discord channels and auto-crosspost;
- Telegram link and notification controls;
- TikTok posting method, privacy, interaction, disclosure, and photo-music controls.
Dynamic values must come from the connected account's latest options. Never guess a Pinterest board ID, Discord channel ID, or TikTok privacy value.
TikTok boundary
TikTok has additional creator and policy requirements.
Before scheduling or publishing TikTok content:
- load fresh creator information/options;
- show the selected creator identity;
- review the media and caption/title;
- require a creator-supported privacy choice for Direct Post;
- review interaction and commercial-disclosure settings;
- obtain the user's explicit consent to TikTok's required confirmations when applicable.
Do not silently choose privacy or disclosure values.
Inspect and manage posts
post2all posts --status scheduled --limit 100 --json
post2all post get --json
Common statuses include:
draftscheduledpublishingpublishedcompletedpartially_failedfailed
A completed post can include an upload-only destination that still requires the user to finish publication inside the platform app.
Update a draft or scheduled post
Inspect the existing post first when there is any risk of replacing media or targets.
post2all post update \
--content "Revised content" \
--delivery draft \
--json
Publish an approved existing draft:
post2all post update --delivery now --json
Cancel a schedule
post2all post cancel --json
Cancellation preserves the post2all record while removing the pending schedule.
Deletion
Deletion is destructive. Inspect the post and confirm the exact target before deleting anything.
For supported live social deletion, inspect the post and use the current deletion.available / deletion.reason state for the specific published target. Only offer live deletion when the server reports it as available.
post2all post delete-published \
--post-account-id \
--json
Removing the post2all record is separate:
post2all post get --json
post2all post delete --json
Deleting the post2all record does not imply that already-published social content was removed from its platform.
OpenClaw operating pattern
A strong unattended workflow keeps the boundary between the agent loop and publishing explicit:
- OpenClaw can continuously research, remember, generate, and refine.
- post2all stores the publishable artifacts as drafts/schedules.
- the user can review the queue periodically instead of reviewing every agent step.
- immediate publishing remains explicit unless the user has intentionally configured a trusted automation.
This gives the user most of the automation benefit while keeping the social publishing handoff auditable and reversible where possible.
Errors and recovery
When a command fails, use the returned error rather than repeatedly retrying the same request.
Typical recovery:
- invalid/expired auth: reconfigure the local post2all key;
- invalid accounts: list accounts again and refresh IDs;
- invalid request: inspect the exact field path returned by post2all;
- missing media: upload again or use a valid retained media record;
- unsupported media/settings: refresh the current capabilities/options;
- rate limited: wait before retrying;
- plan/permission restriction: explain the restriction rather than looping.
Prefer --json for any command whose result will be parsed or used by the agent in a later step.
Related skills
Schedule a social media post for a future time through PostLake, and list, reschedule, or cancel scheduled posts. Use when the user wants to post later or plan a calendar.
Create, schedule, and publish social media posts across Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky via the Social0 CLI (preferred) or MCP. Covers account listing, media upload, drafts, instant publish, scheduling, and per-platform publish status.
Post to 22 platforms via a single unified API. Manage accounts, workspaces, media, scheduling, analytics, inbox, and webhooks through RelayAPI. Activate when the user mentions social media posting, cross-posting, scheduling posts, managing social accounts, analytics, inbox, comments, or webhooks.
Install, connect, and use Schedulala to schedule and publish social media posts to 12 platforms (Twitter/X, Instagram, TikTok, LinkedIn, YouTube, Facebook, Threads, Bluesky, Pinterest, Mastodon, Telegram, Google Business Profile). Use when the user asks to install or set up Schedulala, or wants to create, schedule, preview, or bulk-plan social posts, post photos/videos/PDFs, auto-post a first comment (link-in-first-comment), check post status or analytics, reply to or moderate comments, monitor keywords, or repurpose YouTube videos. Works through the schedulala CLI (any agent with a shell), the hosted MCP connector (claude.ai / ChatGPT, with interactive widgets), or the local @schedulala/mcp-server (Claude Desktop, Claude Code, Cursor, OpenClaw). Encodes key setup, the per-platform rules (TikTok privacy + postMode, Instagram media, YouTube titles, Pinterest boards, character limits), and the safe workflow draft → validate/preview → confirm → publish → verify.
Creates content calendars, writes platform-specific posts, tracks analytics, and manages social media presence across Instagram, Twitter/X, LinkedIn, Faceboo...