x-audience-insights
Read your X (Twitter) audience and niche from real data. Pull a handle's recent tweets (yours or a competitor's) with likes,…
Draft a reply or a value-add quote tweet for a specific X (Twitter) tweet from its URL. Use to reply in a thread, answer a creator, or quote-tweet with added value. Parses the tweet URL, reads pasted context, decides reply vs quote tweet, and drafts 1-3 variants in your voice. X
Claude Code
$ npx -y skills add sergebulaev/x-skills --skill x-reply-drafter --agent claude-code
Codex
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a codex -y
Cursor
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a cursor -y
Gemini CLI
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a gemini-cli -y
GitHub Copilot
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a github-copilot -y
OpenCode
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a opencode -y
Windsurf
$ npx skills add sergebulaev/x-skills --skill x-reply-drafter -a windsurf -y
name: x-reply-drafter description: "Draft a reply or a value-add quote tweet for a specific X (Twitter) tweet from its URL. Use to reply in a thread, answer a creator, or quote-tweet with added value. Parses the tweet URL, reads pasted context, decides reply vs quote tweet, and drafts 1-3 variants in your voice. X has no LinkedIn-style 2-level thread flattening, so a reply is just a tweet. Publora has no reply endpoint, so the draft is returned as a copy-paste block to post yourself. Not for top-level posts (use x-post-writer)."
Drafts a reply in a thread, or a quote tweet, for a specific tweet. On X a reply is just a tweet posted in-reply-to another, and replies nest naturally: there is **no LinkedIn-style 2-level flattening** and no parent-comment URN to resolve.
An X tweet URL (`x.com/HANDLE/status/ID` or the twitter.com equivalent), plus the tweet text (and any thread context) pasted by the user, since this bundle has no built-in tweet reader.
| Use a reply when | Use a quote tweet when | |---|---| | You are adding to the conversation in place | Your addition deserves its own reach | | You are answering a question or engaging a creator | Your followers should see the original for context | | You want intimacy over reach | You want reach and a take on your own timeline |
Default to a **reply** for direct engagement and a **quote tweet** when the user's point is strong enough to stand as its own post. Never quote-dunk on a small account; add value or skip it.
**Voice profile first (all drafts).** If `../../references/voice-profile.md` has `filled: yes`, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that `x-humanizer --mode profile` can learn their voice from a few posts, then proceed with the generic voice rules.
**Story bank next.** If `../../references/story-bank.md` has `filled: yes`, load it and take every concrete detail (numbers, dates, named projects, positions) from there instead of asking mid-draft. **Never invent a figure, a date or a client name that is not in the bank or supplied by the user in this conversation.** If the bank has nothing that fits, ask the user, or say once that `x-humanizer --mode interview` fills it in 20 to 40 minutes. A draft with a plausible invented number is worse than a draft with none: one is vague, the other is a retraction.
1. **Parse the URL.** `lib.url_parser.parse_x_url(url)` returns `handle`, `tweet_id`, `canonical_url`. 2. **Read the context.** The target tweet can be read rather than pasted: with `APIFY_TOKEN`, `lib.ApifyClient().fetch_tweet(url)`; with the Apify MCP connector, `xquik--x-tweet-scraper` and the mapping in `../../references/mcp-read-layer.md`. Ask the user to paste the thread above it regardless, since neither path walks a conversation upward, and include their prior tweet if they are already in the thread. 3. **Decide reply vs quote tweet** using the table above. Recommend one, but let the user override. 4. **Draft 1-3 variants** using `references/reply-templates.md`. If the counterpart asked a question, answer it plainly with one real detail. If they pushed back, concede then sharpen. 5. **Humanizer pass.** Scrub 2026 AI vocab by density, cap em dashes (at most one per reply, never swap one for a period), strip reveal bridges and sincerity openers ("not gonna lie", "let me be honest"). Leave the rhythm alone; never insert a fragment for punch. Keep each variant under 280 chars (emoji = 2). One idea per reply. Canonical rules: `x-humanizer` V3. 6. **Approval card.** Show the thread context, the variants, the reply-vs-quote recommendation, and the target URL. 7. **On approval.** Call `lib.publish(kind="reply", draft_text=<approved>, target_url=<canonical_url>)` for a reply, or `kind="quote"` for a quote tweet. Publora has no reply endpoint, so `kind="reply"` always returns a copy-paste block. A `kind="quote"` could in principle post a new tweet containing the original URL via Publora, but the default is still copy-paste so the user controls the embed. Paste it on X yourself.
Unlike LinkedIn (which flattens reply threads to 2 levels and needs the top-level comment URN as the parent), X nests replies naturally. There is no parent-comment URN to compute. A reply is simply a tweet you post while replying to the target tweet. This skill therefore does not walk any comment tree; it just drafts the text and hands it back for you to post in-reply.
Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific rules:
Describe what they do instead.
> User: "Reply to this: https://x.com/somebuil
Part of the linkedin-skills family (400+ stars). Same voice engine and approve-before-publish flow, now for X. Also available for Instagram · YouTube · TikTok · Threads · Facebook. 9 skills that turn Claude Code and Codex into your X (Twitter) content team.
Read your X (Twitter) audience and niche from real data. Pull a handle's recent tweets (yours or a competitor's) with likes,…
Generate a weekly X (Twitter) content plan from a theme, audience, and content pillars. Produces per-day recommendations (single…
Reverse-engineer the hook from a viral X (Twitter) tweet or thread URL. Identifies which of the 10 canonical 2026 X formulas it…
Remove the AI tells human readers react to in a tweet or thread: 2026 vocabulary by density, reveal bridges, staccato stacks,…
Draft a single tweet or short auto-thread for X (Twitter) using a 2026 X hook formula (one-liner contrarian, data-point,…
Audit and rewrite an X (Twitter) profile end-to-end for 2026: bio (160 chars), display name with a searchable keyword, @handle,…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…