Help us improve
Share bugs, ideas, or general feedback.
From Ayrshare - Unified Social Media API for AI Agents
Orchestrates multi-post social campaigns across platforms via Ayrshare MCP: plan, validate, schedule, and confirm. Activates on scheduling requests like 'plan a content calendar' or 'queue product-launch posts'.
npx claudepluginhub ayrshare/ayrshare-social-media-api-claude-plugin --plugin ayrshareHow this skill is triggered — by the user, by Claude, or both
Slash command
/ayrshare:plan-and-schedule-campaignThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A workflow skill that turns "schedule a week of launch posts" into a concrete, validated, scheduled set. There is **no dedicated campaign or bulk tool**: a campaign is a series of individual `create_post` calls, each with its own `scheduleDate`, each validated first. This skill is the planning and orchestration layer on top of `../post/SKILL.md`.
Validates, creates, schedules, fetches, updates, and retries social media posts via the Ayrshare MCP server. Supports multiple platforms including Twitter, LinkedIn, Instagram, and Facebook.
Schedules and publishes social media content across X, LinkedIn, Instagram, Facebook, TikTok, Discord, Telegram, YouTube, Reddit, WordPress, and Pinterest via SocialClaw's API or optional CLI.
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.
Share bugs, ideas, or general feedback.
A workflow skill that turns "schedule a week of launch posts" into a concrete, validated, scheduled set. There is no dedicated campaign or bulk tool: a campaign is a series of individual create_post calls, each with its own scheduleDate, each validated first. This skill is the planning and orchestration layer on top of ../post/SKILL.md.
It is built on the suggest-and-approve pattern: draft and validate everything, show the user the full plan, and only schedule after explicit confirmation.
mcp__ayrshare__validate_post — dry-run each planned post against its platforms' rules before scheduling, so an over-limit caption or unsupported media is caught at planning time, not publish time.mcp__ayrshare__create_post — schedules one post by including a future scheduleDate (ISO 8601 UTC). Omitting scheduleDate posts immediately, so for a campaign every post carries one. Returns an id per post — capture them.mcp__ayrshare__get_post / mcp__ayrshare__update_post — inspect or edit a scheduled (pending) post afterward: reschedule, approve, or adjust. (See ../post/SKILL.md.)mcp__ayrshare__generate_post / mcp__ayrshare__recommend_hashtags — optional drafting aids for the copy (drafts only; they never publish). For on-brand copy, pair with ../draft-in-brand-voice/SKILL.md.These are profile-scoped: choose the profile with the optional profileKey argument on each call or the connection's Profile-Key header (the argument wins when both are set). (generate_post/recommend_hashtags are the exception, with no profileKey argument; see ../generate/SKILL.md.) The whole campaign schedules under whichever profile you target, so settle that first and use it consistently across the posts.
Per-post timing/workflow controls (full schema in ../post/references/create-post-schema.md):
scheduleDate (ISO 8601 UTC, e.g. 2026-07-08T12:30:00Z) — the future publish time. The core of every campaign post. Convert relative dates ("next Tuesday 9am") to an absolute UTC timestamp yourself.autoSchedule ({ schedule: true, title? }) — publish into a named auto-schedule's next open slot instead of a fixed time. Cannot be combined with scheduleDate — pick one timing model per post.autoRepost ({ repeat: 1-10, days: >=2, startDate? }) — recurring/evergreen reposting (paid plan). Also cannot be combined with scheduleDate.requiresApproval (bool) — hold each post in awaiting approval until approved via update_post (approved: true). Useful when a human must sign off each calendar item.validateScheduled (bool, default true) — pre-validate scheduled posts at submission so errors surface immediately rather than at publish time. Keep it on.idempotencyKey (string) — unique per post so a retried submission does not create a duplicate. Worth setting when scheduling many posts in a loop.profileKey argument on each create_post (and validate_post), or via the Profile-Key connection header. If several profiles exist and none is given, ask which client this is for (see ../getting-started/SKILL.md).youTubeOptions.title, redditOptions.title + subreddit). For drafting help, use ../generate/SKILL.md or, for on-brand copy, ../draft-in-brand-voice/SKILL.md.scheduleDate. Never pass a human phrase or an empty string. Decide one timing model per post: a fixed scheduleDate, OR autoSchedule, OR autoRepost — never two at once.mcp__ayrshare__validate_post on each planned post (same inputs as create_post). Surface any per-platform issues and fix them before scheduling.mcp__ayrshare__create_post with its scheduleDate (set idempotencyKey). Capture the returned id for every post — that is how you manage it later.mcp__ayrshare__get_post to check status and mcp__ayrshare__update_post to reschedule/approve/edit a pending post. To recover a post that failed at publish time, use mcp__ayrshare__retry_post (once, only if retryable) — never a second create_post, which would duplicate.ids, not a single API object. Keep a running list of { time, platforms, id } so you can manage the queue.validate_post at planning time is the whole safety win — it turns publish-time rejections into planning-time fixes. Keep validateScheduled: true as well so scheduled posts are re-checked at submission.scheduleDate, autoSchedule, and autoRepost are mutually exclusive on a single post. Choose deliberately: fixed time for a calendar, autoSchedule for "next open slot", autoRepost for evergreen.id. Rescheduling, approving, editing, and status checks all key off the post id returned by create_post.idempotencyKey when scheduling in a loop. It prevents a retried submission from creating a duplicate scheduled post.validate_post + create_post. If you skip the per-post loop you'll under-deliver the plan.scheduleDate must be ISO 8601 UTC, future. e.g. 2026-07-08T12:30:00Z. A human phrase, an empty string, or a past time fails or posts immediately. Convert relative times yourself.scheduleDate + autoSchedule/autoRepost is invalid. They are mutually exclusive — combining them on one post is rejected. Pick one timing model.idempotencyKey to be safe.profileKey argument or Profile-Key header. The whole campaign schedules under whichever profile you target: the profileKey argument on each post (it wins) or the Profile-Key header. Settle it before scheduling for a client, and keep it consistent across the posts.retry_post, not a second create_post. A second create duplicates on platforms that already succeeded. retry_post re-attempts a failed post once, only if retryable.mcp__ayrshare__explain_error, then surface it. Translate the error to plain language for the user; a 429 gets at most one retry after a short delay. (Mirrors the global retry-safety rule in ../getting-started/SKILL.md.)