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`...
Installs into .claude/skills of the current project.
Are you the author of Generate?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ayrshare-generate)
---
name: generate
description: |
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`.
---
# 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_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."
- **Provide `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.
- **Tune the draft with the optional flags.** `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.
- **Pair the two.** A natural flow is `recommend_hashtags` for a keyword, then `generate_post` (with `hashtags: false` if you want to append the recommended set yourself), then validate + create.
## Gotchas
- **Neither tool publishes anything.** `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.)
- **On failure, call `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.)