Generate
Skill ayrshare/ayrshare-social-media-api-claude-plugin/skills/generate
AI content generation for the Ayrshare MCP server — draft post copy and suggest hashtags. Use whenever someone wants help WRITING social content rather than publishing it: "write me a post about our product launch", "draft a tweet announcing the sale", "generate a caption for this image", "give me a LinkedIn post about X", "what should I caption these photos", "suggest hashtags for sustainable fashion", "recommend trending hashtags for ...". Trigger when calling `mcp__ayrshare__generate_post` or `mcp__ayrshare__recommend_hashtags`, and even without the word "Ayrshare" — if the user wants AI-written social copy or hashtag ideas through an assistant, this is the skill. These tools produce DRAFTS ONLY; they never publish. The natural next step is `mcp__ayrshare__validate_post` then `mcp__ayrshare__create_post` (see `../post/SKILL.md`). For the shared auth model and retry rules, see `../getting-started/SKILL.md`.From its SKILL.md
npx -y skills add ayrshare/ayrshare-social-media-api-claude-plugin --skill generateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.1 KB, as published. Nobody here has run it
Ayrshare MCP — Generate (AI)
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.
Functions
| 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) |
Auth
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.
Usage guidance
generate_postproduces 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 agenerate_postresponse as "posted."- Provide
text,mediaUrls, or both — at least one is required. Passtextto brief the model with a topic, angle, or prompt ("announce our Series B, upbeat tone"). PassmediaUrls(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. - Tune the draft with the optional flags.
hashtagsdefaults totrue(setfalseto suppress them);emojisadds emoji;twitter: trueconstrains the draft to X/Twitter length when the copy is destined for X. These shape the draft text only. recommend_hashtagsneeds a linked TikTok account. Recommendations are sourced from TikTok, so the API errors if the profile (per the connection'sProfile-Key) has no TikTok account linked. If you get an error, confirm a TikTok account is connected for that profile before retrying. Passkeywordas 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.sourceis just a free-form attribution tag.- Pair the two. A natural flow is
recommend_hashtagsfor a keyword, thengenerate_post(withhashtags: falseif you want to append the recommended set yourself), then validate + create.
Gotchas
- Neither tool publishes anything.
generate_postandrecommend_hashtagsonly return text/suggestions. Publishing is a separate, explicit step viacreate_post. Don't tell the user a post went out off the back of these tools. generate_postrequirestextORmediaUrls. Calling it with neither has nothing to work from. If captioning media, the URLs must be publicly reachable (considermcp__ayrshare__validate_mediafirst).recommend_hashtagsis 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_hashtagstakes a single keyword, not a phrase. Spaces inkeywordare removed before lookup (sustainable fashionbecomessustainablefashion), which produces poor or empty results. Pass one representative keyword instead of a multi-word topic.recommend_hashtagsuses the connection'sProfile-Key, and takes noprofileKeyargument. Which profile's linked TikTok account it draws on is set by theProfile-Keyheader. Unlike the profile-scoped tools, neither generate tool accepts the per-callprofileKeyargument. (See Which tools acceptprofileKeyin getting-started.)- On failure, call
mcp__ayrshare__explain_error, then surface it — don't loop. A 4xx (missingtext/mediaUrls, no linked TikTok, unreachable media) won't fix itself on retry. Translate the error viamcp__ayrshare__explain_errorand present it; 429 gets at most one retry. (Mirrors the global retry-safety rule.)