Draft social posts that match a brand's established voice for the Ayrshare MCP server: first pull the profile's own past posts (history) to read tone, format, and what performed, then write platform-appropriate copy in that voice and validate it before anything publishes. Use whenever someone wants on-brand content rather than generic copy: "write a post the way we usually post", "draft this in our brand voice", "match our tone", "write like our LinkedIn", or any time content is created for a...
Scanned 8/31/2026
Install to Claude Code
npx -y skills add ayrshare/ayrshare-social-media-api-claude-plugin --skill draft-in-brand-voice --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Draft In Brand Voice?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ayrshare-draft-in-brand-voice)More formats (shields.io, HTML) on the badges page.
---
name: draft-in-brand-voice
description: |
Draft social posts that match a brand's established voice for the Ayrshare MCP server: first pull the profile's own past posts (history) to read tone, format, and what performed, then write platform-appropriate copy in that voice and validate it before anything publishes. Use whenever someone wants on-brand content rather than generic copy: "write a post the way we usually post", "draft this in our brand voice", "match our tone", "write like our LinkedIn", or any time content is created for a profile whose established style should be matched. Trigger even without the word "Ayrshare": if the user wants content that sounds like an existing account, this is the skill. It pulls history (`get_post_history` / `get_platform_history`), optionally `get_post_analytics` for what worked, drafts via `generate_post` or your own copy, then checks with `validate_post`. It produces DRAFTS only and never publishes; publishing is the explicit `create_post` step in `../post/SKILL.md`.
---
# Ayrshare MCP — Draft in Brand Voice
A workflow skill, not a single tool. It turns "write me a post" into "write me a post that sounds like **this** brand" by grounding the draft in the profile's actual posting history before a word is written. The wedge: an agent that learns voice from real past posts beats one that guesses a tone from the topic alone.
This skill **drafts only**. It never publishes. The output is copy for the user to review; publishing is the separate, explicit `validate_post` → confirm → `create_post` step documented in `../post/SKILL.md`.
## The tools it orchestrates
- `mcp__ayrshare__get_platform_history` — native posts on a platform, **including ones not made through Ayrshare**. This is the broadest, most honest sample of how the brand actually writes. Start here for voice. (See `../history/SKILL.md`.)
- `mcp__ayrshare__get_post_history` — posts sent **via Ayrshare** (with status/notes). Useful for recent voice plus any internal notes already attached.
- `mcp__ayrshare__get_post_analytics` / `mcp__ayrshare__get_post_analytics_by_social_id` — optional, but this is the "optimize on history" half: pull metrics on past posts to see which voice/format actually performed, and bias the draft toward that. (See `../analytics/SKILL.md`.)
- `mcp__ayrshare__generate_post` — optional AI drafting from a topic/brief. Brief it with the voice you observed; it returns draft text only and never publishes. (See `../generate/SKILL.md`.)
- `mcp__ayrshare__validate_post` — dry-run the finished draft against each target platform's rules before you hand it back as "ready to post."
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` is the exception: it takes no `profileKey` argument; see `../generate/SKILL.md`.) The voice you match is the voice of whichever profile you target, so settle that first and use it consistently across the calls.
## Workflow
1. **Pick the profile and platform(s).** Voice is per profile (and often per platform, the same brand writes differently on LinkedIn vs X). Confirm which profile you're drafting for: pass its `profileKey` argument on each call, or set the `Profile-Key` connection header (see `../getting-started/SKILL.md`); if the user has several profiles and none is given, ask which client this is for rather than guessing.
2. **Pull the voice sample.** Call `mcp__ayrshare__get_platform_history` for each target platform (and/or `mcp__ayrshare__get_post_history` for recent Ayrshare-sent posts). Aim for a representative recent set, not one post.
3. **Read the voice.** From the sample, characterize: tone (formal/playful/technical), sentence length and rhythm, emoji and hashtag habits, link/CTA patterns, formatting (line breaks, lists), and recurring vocabulary. Note differences per platform.
4. **(Optional) Find what worked.** If the goal is performance, not just consistency, pull analytics that **match the history source**: use `mcp__ayrshare__get_post_analytics` for the Ayrshare Post IDs from `get_post_history`, and `mcp__ayrshare__get_post_analytics_by_social_id` for the native Social Post IDs surfaced by `get_platform_history` (native posts have no Ayrshare Post ID). Weight the draft toward the formats/voice that engaged best. This is the "train on voice + optimize on history" pairing — say so to the user when you use it.
5. **Draft in that voice, per platform.** Either write the copy yourself in the observed voice, or brief `mcp__ayrshare__generate_post` with an explicit voice description (tone, length, emoji/hashtag rules) and refine its output. Produce a platform-appropriate variant for each network rather than one string posted everywhere.
6. **Validate, then hand off.** Run `mcp__ayrshare__validate_post` on each variant to catch platform-rule issues (length, media, format) before calling it ready. Present the drafts for review. To publish, continue with the post pipeline in `../post/SKILL.md` (`validate_post` → confirm → `create_post`) — this skill stops at the validated draft.
## Usage guidance
- **History is the voice source — use it, don't skip to generation.** The whole point is grounding the draft in real past posts. If you cannot read any history (a brand-new profile with zero posts, or no platform history available), say so and draft from whatever brief the user gives instead of pretending to match a voice that has no sample.
- **`get_platform_history` is the better voice sample** because it includes native posts not made through Ayrshare. `get_post_history` is narrower (Ayrshare-sent only) but carries status and `notes`. Use both when you can.
- **Match voice per platform.** A brand's LinkedIn voice is usually not its X voice. Pull and analyze each platform separately and write distinct variants; do not reuse one draft across networks.
- **`generate_post` is a drafting aid, not a voice oracle.** It generates from the brief you give it. The brand-voice matching is *your* analysis of the history shaping that brief (and your edits afterward) — feeding it only the topic produces generic copy. It returns text only; it never publishes.
- **Always validate before declaring a draft ready.** `validate_post` is a dry run; running it on the final variants catches over-limit text or unsupported media before the user tries to post.
- **This skill never publishes.** Do not call `create_post` from here. Drafting and publishing are deliberately separate so the user reviews on-brand copy before anything goes live.
## Gotchas
- **No history, no voice match.** A fresh profile has no posts to learn from. Don't fabricate a "house voice" — fall back to the user's brief and say the voice could not be sampled.
- **Voice is profile-scoped, like everything else.** The history you read and the draft you tune come from whichever profile you target: the `profileKey` argument (per call) or the `Profile-Key` header. Drafting for the wrong client is an auth-layer mistake, not a content one, so settle the profile first and use it consistently. (`generate_post` takes no `profileKey` argument; the history/analytics/validate tools do.)
- **Generated drafts still need validation.** `generate_post` output is not pre-validated against platform rules. Run `validate_post` before treating it as postable.
- **Don't claim performance you didn't check.** Only invoke the "optimized on what worked" framing if you actually pulled analytics (step 4). Otherwise you matched voice, not performance — describe it as such.
- **On any tool failure, call `mcp__ayrshare__explain_error`, then surface it — don't loop.** A missing TikTok link (for `recommend_hashtags`), unreachable media, or an empty history won't fix itself on retry. (Mirrors the global retry-safety rule in `../getting-started/SKILL.md`.)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!