> Generate a personal voice guide for X (Twitter) and/or LinkedIn by scanning a user's past posts and iteratively refining with sample-and-feedback loops. Produces a structured markdown voice guide that sibling skills (create-x-content, create-linkedin-content) consume to draft in-voice posts. Different from brand-voice-extractor, which analyses company blogs/landing pages — this skill is for personal social voice.
npx skills add https://github.com/gooseworks-ai/goose-skills --skill generate-voice-guide
Turn a real person's past posts into a structured voice guide that other skills can use to draft in-voice content. Produces one guide per platform (X, LinkedIn, or both) with persona, dos/don'ts, banned phrases, hook patterns, format rules, and example posts.
This is an agent-executed skill — the agent handles scraping, analysis, drafting, and iteration via the tools available in the session. No bundled Python script.
create-x-content, create-linkedin-content, social-kit) needs a voice guide and one doesn't existWhen NOT to use: For analysing a company's blog/landing-page voice, use brand-voice-extractor instead. That's for corporate marketing voice; this one is for individual social voice.
Interactive:
/generate-voice-guide
Args mode:
/generate-voice-guide --profile @GooseworksAI --platforms x,linkedin --output ~/.goose-skills/voice-guides
Ask these up front if not supplied via flags:
@GooseworksAI), a LinkedIn profile URL, or both. You can mimic your own voice or someone else's."~/.goose-skills/voice-guides/voice-{x,linkedin}.md. Ok to use that, or prefer a different path?"For X:
apidojo/twitter-user-tweets-scraper (or whichever X scraper is available in the session) keyed to the handle.APIFY_API_TOKEN env var. If missing, surface a clear error with the setup link.For LinkedIn:
harvestapi/linkedin-profile-posts keyed to the profile URL.Fallback (no scraper available or posts paywalled): ask the user to paste 15–25 posts as plain text.
Store raw post text, engagement metrics (likes, views if available), and timestamps.
Use voice-x.md / voice-linkedin.md template references (see "Template Skeleton" below) to produce v1 of the guide. Do NOT copy content from them — only the *structure*.
Analyse the scraped posts for:
excited to share, leverage, game-changing, thrilled, etc.). List 10–20.This is where voice-guide quality is made. Do NOT skip iterations.
Each iteration:
Stopping rule: continue until the user explicitly says "this is good" AND at least 5 iterations have completed. 5 is a floor, not a ceiling. If the user says "good enough" at iteration 2, push back: "Voice guides need at least 5 rounds to actually lock in. Can we do 3 more?"
~/.goose-skills/voice-guides/voice-<platform>.md).~/.goose-skills/config.json: {
"voice_guides": {
"x": "<absolute path to voice-x.md>",
"linkedin": "<absolute path to voice-linkedin.md>"
}
}
Create the directory/file if missing. Merge with existing config if present (don't overwrite other keys).
/create-x-content --brief \"...\" and it'll use this voice guide automatically."Every generated voice guide should have these top-level sections, in order:
# Voice Guide: <Platform> — <Handle or Name>
## Persona
## The "Meat" Principle
## Dos
## Don'ts
## Banned Phrases
## Hook Patterns
## CTA Guidelines
## Format Rules
## Tone Calibration
## Example Posts That Exemplify The Voice
Match the depth and specificity of a well-written voice guide — prose for persona, numbered lists for dos/don'ts, quoted examples with analysis. Aim for 120–250 lines.
~/.goose-skills/config.json is a lightweight cross-skill config. Schema:
{
"voice_guides": {
"x": "/absolute/path/to/voice-x.md",
"linkedin": "/absolute/path/to/voice-linkedin.md"
}
}
Sibling skills read this to discover voice guide paths. Always use absolute paths.
| Input | Required | Default |
|-------|----------|---------|
| --profile | Yes (one of X handle, LinkedIn URL, or both) | — |
| --platforms | No | x,linkedin if both profiles given, else matches supplied profiles |
| --posts-x | No | 50 |
| --posts-linkedin | No | 25 |
| --output | No | ~/.goose-skills/voice-guides |
| --iterations-min | No | 5 |
<output>/voice-x.md and/or <output>/voice-linkedin.md~/.goose-skills/config.json with voice guide pathsAPIFY_API_TOKEN) for scrapingWebFetch or read locally if the user has them) — not required to runCreate AI marketing videos for ads, promos, product launches, and brand content. Models: Veo, Seedance, Wan, FLUX for visuals, Kokoro for voiceover. Types: product demos, testimonials, explainers, social ads, brand videos. Use for: Facebook ads, YouTube ads, product launches, brand awareness. Triggers: marketing video, ad video, promo video, commercial, brand video, product video, explainer video, ad creative, video ad, facebook ad video, youtube ad, instagram ad, tiktok ad, promotional video, launch video
App Store and Google Play screenshot creation with exact platform specs. Covers iOS/Android dimensions, gallery ordering, device mockups, and preview videos. Use for: app store optimization, ASO, app screenshots, app preview, play store listing. Triggers: app store screenshots, aso, app store optimization, play store screenshots, app preview, app listing, ios screenshots, android screenshots, app store images, app mockup, device mockup, app gallery, store listing
Generate images using Nano Banana Pro (Gemini 3 Pro Preview). Use when creating app icons, logos, UI graphics, marketing banners, social media images, illustrations, diagrams, or any visual assets. Supports reference images for style transfer and character consistency. Triggers include phrases like 'generate an image', 'create a graphic', 'make an icon', 'design a logo', 'create a banner', 'same style as', 'keep the style', or any request needing visual content.
Generate and save images using Pollinations.ai's free, open-source API. No signup required. Supports URL-based generation, custom parameters (width, height, model, seed), and automatic file saving. Perfect for quick prototypes, marketing assets, and creative workflows.
| Create AI marketing videos for ads, promos, product launches, and brand content. product video, explainer video, ad creative, video ad, facebook ad video, youtube ad, instagram ad, tiktok ad, promotional video, launch video
Use when building App Store screenshot pages, generating exportable marketing screenshots for iOS apps, or creating programmatic screenshot generators with Next.js. Triggers on app store, screenshots, marketing assets, html-to-image, phone mockup.
Anti-AI-slop design skill for greenfield pages, audits, redesigns, and design extraction from URLs or screenshots. Use when the user asks to build a new app or landing page, wants to redesign something, invokes Hallmark by name, or uses audit/redesign/study.
Launch and supervise OpenShell gator agents. Use when starting gator on issues or PRs, checking gator sandboxes, building the gator sandbox image, restarting stuck gators, inspecting gator logs, or experimenting with gator harness/model overrides. Trigger keywords - launch gator, start gator, run gator, gator sandbox, supervised gator, gator logs, restart gator.
Take gooseworks-ai/generate-voice-guide from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.