Generate platform-specific social post variants (Twitter/X, LinkedIn, Reddit) from one source input. Works with or without Node.js script. Includes platform reasoning, quality review, and guardrails against cross-posting spam.
npx skills add https://github.com/BrianRWagner/ai-marketing-claude-code-skills --skill social-card-gen
Transform one source message into platform-ready social copy for Twitter/X, LinkedIn, and Reddit.
This skill works two ways:
generate.js for deterministic, automated outputDetect from context or ask: *"One platform, all platforms, or all platforms with variants?"*
| Mode | What you get | Best for |
|------|-------------|----------|
| quick | 1 platform (user picks), optimized variant | Testing a single channel |
| standard | All 3 platforms: Twitter, LinkedIn, Reddit | Standard cross-platform post |
| deep | All platforms + 3 variants each + A/B test guidance | Campaign testing, maximizing reach |
Default: standard — use quick if they specify a platform. Use deep if they're running a content campaign and want options.
Ask these before writing a single word of copy:
> 1. Source message: What's the core idea, update, or story? (Paste raw text or describe it.)
> 2. Tone goal: Informative? Provocative? Humble brag? Conversational? Educational?
> 3. Audience: Who needs to see this? (Founders, marketers, developers, general public?)
> 4. CTA: What do you want readers to do? (Visit link, reply, follow, share, start a conversation?)
Without these answers, you'll get generic output that won't land on any platform.
Follow this process exactly:
From the source input, extract:
Twitter/X variant:
[Bold claim or surprising fact — max 1 sentence]
[1-2 sentences of supporting context]
[Engaging question or CTA]
[1-2 relevant hashtags max]
*Check: Under 280 chars for single tweet? If not, decide: cut or thread.*
LinkedIn variant:
[First line hook — create curiosity, not announcement]
[1-2 line context paragraph]
[Core insight or framework — 2-4 short paragraphs]
[Personal angle or reflection]
[Discussion CTA — question for the audience]
[3-5 hashtags at the end only]
*Check: Does the first line work before "See more"? Does it NOT start with "I'm excited to..."?*
Reddit variant:
[Title: specific, searchable, not clickbaity]
[Opening: frame as experience, question, or lesson — community-first]
[Body: genuine story or insight with specifics]
[Closing question to invite community input]
*Check: Would this feel at home in the target subreddit? No hashtags?*
npm install
# text input
node generate.js --text "We reduced onboarding time by 35% with a checklist." --stdout
# file input
node generate.js --file examples/input-example.md --outdir examples
# URL input (when network is available)
node generate.js --url https://example.com/post --platforms twitter,linkedin --stdout
If generate.js is unavailable, use the Manual Generation Path above — same quality, just manual.
After generating all 3 variants, run this review before delivering:
| Check | Twitter | LinkedIn | Reddit |
|---|---|---|---|
| Hook strong? (Would you stop scrolling?) | ✅/❌ | ✅/❌ | ✅/❌ |
| CTA present and clear? | ✅/❌ | ✅/❌ | ✅/❌ |
| Platform fit? (Tone matches platform norms) | ✅/❌ | ✅/❌ | ✅/❌ |
| Guardrails pass? (See below) | ✅/❌ | ✅/❌ | ✅/❌ |
Flag the weakest variant and explain why: "The Reddit variant is the weakest because it still reads like a LinkedIn post — too polished, not community-first."
❌ No identical copy cross-posted — every platform variant must be meaningfully different in tone and structure
❌ No hashtag spam on LinkedIn — max 5, always at the end, never in the body
❌ No self-promotional openers on Reddit — community value first, always
❌ No vague hooks — "I have some thoughts on X" is not a hook
❌ No copy that assumes platform context — Reddit readers don't know your LinkedIn audience
After delivering the 3 variants:
Deliver:
## Twitter/X
[Final copy — ready to paste]
Character count: [X]/280
## LinkedIn
[Final copy — ready to paste]
## Reddit
Title: [Post title]
[Body — ready to paste]
## Quality Review
- Strongest variant: [Platform] — because [reason]
- Weakest variant: [Platform] — [what to improve if needed]
- All guardrails passed: Yes / No — [note any issues]
*Skill by Brian Wagner | AI Marketing Architect | brianrwagner.com*
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take brianrwagner/social-card-gen 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.
The instructions reference npm.
Without those the skill loads but fails at the first command.