Help us improve
Share bugs, ideas, or general feedback.
From Ayrshare - Unified Social Media API for AI Agents
AI-drafts social media post copy and recommends hashtags via the Ayrshare MCP server. Use when a user wants help writing content (not publishing it).
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:generateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two tools that produce content for you to review and publish — neither one posts anything:
Drafts social posts by learning a brand's voice from their past posts, then writes platform-appropriate copy and validates it. For when a user wants on-brand content rather than generic copy.
Guides social media content creation with platform-specific strategies for Instagram, LinkedIn, TikTok, X, Facebook, and Threads, including hook formulas and posting best practices.
Generates clear, engaging, platform-optimized social media posts for Instagram, LinkedIn, and Facebook from topics, keywords, audience, and tone inputs. Includes hooks, CTAs, and SEO hashtags.
Share bugs, ideas, or general feedback.
Two tools that produce content for you to review and publish — neither one posts anything:
mcp__ayrshare__generate_post — AI-drafts post copy from a topic/brief and/or media. Draft only.mcp__ayrshare__recommend_hashtags — returns recommended hashtags for a keyword, sourced from a linked TikTok account.Unlike most Ayrshare MCP tools, neither of these takes a per-call profileKey argument (see Auth). recommend_hashtags is still scoped by the connection's Profile-Key header; it draws on that profile's linked TikTok account.
| Tool | Purpose | Method + Endpoint | Required inputs | Optional inputs |
|---|---|---|---|---|
mcp__ayrshare__generate_post | AI-draft post copy from a topic/prompt and/or media URLs; returns text only, does NOT publish | POST /generate/post | At least one of text (topic/brief/prompt string) or mediaUrls (array of public URLs to caption) | hashtags (bool, default true), emojis (bool, default false), twitter (bool, default false — constrain to X/Twitter length) |
mcp__ayrshare__recommend_hashtags | Recommend hashtags for a keyword (sourced from a linked TikTok account) | GET /hashtags/recommend | keyword (single keyword string; spaces are stripped before lookup, so pass one word, not a phrase/topic) | source (free-form attribution tag) |
These two tools are exceptions to the per-call profileKey argument that the profile-scoped tools accept: generate_post and recommend_hashtags do NOT take a profileKey argument. recommend_hashtags is still scoped by the connection's Profile-Key header (set in .mcp.json headers): it uses that profile's linked TikTok account; omit the header to use the account's primary/Business profile. generate_post is account-level AI drafting. See Which tools accept profileKey in ../getting-started/SKILL.md.
generate_post produces a DRAFT, not a published post. It returns suggested copy. To actually publish, hand the result to the posting pipeline: mcp__ayrshare__validate_post (dry-run platform-rule check) → mcp__ayrshare__create_post. See ../post/SKILL.md. Never treat a generate_post response as "posted."text, mediaUrls, or both — at least one is required. Pass text to brief the model with a topic, angle, or prompt ("announce our Series B, upbeat tone"). Pass mediaUrls (an array of public image/video URLs) to have it caption that media. Provide both to caption media on-topic. With neither, there is nothing to generate from.hashtags defaults to true (set false to suppress them); emojis adds emoji; twitter: true constrains the draft to X/Twitter length when the copy is destined for X. These shape the draft text only.recommend_hashtags needs a linked TikTok account. Recommendations are sourced from TikTok, so the API errors if the profile (per the connection's Profile-Key) has no TikTok account linked. If you get an error, confirm a TikTok account is connected for that profile before retrying. Pass keyword as a single keyword: spaces are stripped before lookup, so use one word (e.g. fitness), not a multi-word phrase or full topic, or you'll get poor or empty results. source is just a free-form attribution tag.recommend_hashtags for a keyword, then generate_post (with hashtags: false if you want to append the recommended set yourself), then validate + create.generate_post and recommend_hashtags only return text/suggestions. Publishing is a separate, explicit step via create_post. Don't tell the user a post went out off the back of these tools.generate_post requires text OR mediaUrls. Calling it with neither has nothing to work from. If captioning media, the URLs must be publicly reachable (consider mcp__ayrshare__validate_media first).recommend_hashtags is TikTok-sourced. No TikTok account linked on the active profile → the call errors. This is expected, not a bug; link TikTok or scope the connection to a profile that has one.recommend_hashtags takes a single keyword, not a phrase. Spaces in keyword are removed before lookup (sustainable fashion becomes sustainablefashion), which produces poor or empty results. Pass one representative keyword instead of a multi-word topic.recommend_hashtags uses the connection's Profile-Key, and takes no profileKey argument. Which profile's linked TikTok account it draws on is set by the Profile-Key header. Unlike the profile-scoped tools, neither generate tool accepts the per-call profileKey argument. (See Which tools accept profileKey in getting-started.)mcp__ayrshare__explain_error, then surface it — don't loop. A 4xx (missing text/mediaUrls, no linked TikTok, unreachable media) won't fix itself on retry. Translate the error via mcp__ayrshare__explain_error and present it; 429 gets at most one retry. (Mirrors the global retry-safety rule.)