infographic-generator
Skill37 starsChanged 4 months agoMITView on GitHub
End-to-end workflow for creating infographic image assets. Research a topic, design a multi-section HTML layout, and export to PNG via Playwright. Bring your own brand book and/or reference images to match your style — or use the built-in default design system. Use this skill whenever the user asks to: create an infographic, turn a topic into a visual asset, build a carousel slide, design an explainer image, or export a layout as PNG. Also trigger on phrases like "make an infographic about X", "turn this into a visual", "build a 4-section layout", or "export this as a PNG". Works for any platform: LinkedIn, blog, newsletter, slides, or print.
- Installs packages
10 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- Samueladewole/claude-skillsedited, first seen Oct 13, 2026
- vfarcic/dot-aitheir own version, first seen Oct 8, 2026
- jobottinkwork/claude-skillstheir own version, first seen Oct 8, 2026
- Mnilax/infographic-skilltheir own version, first seen Oct 2, 2026
- mashharuki/claude-code-sampletheir own version, first seen Oct 1, 2026
- wulaosiji/founder-skillstheir own version, first seen Sep 9, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- Samueladewole/claude-skills★ 080% same
Wrote their own version · 9
- Affitor/affiliate-skills★ 757same name
- vfarcic/dot-ai★ 336same name
- wulaosiji/skills★ 28same name
- wulaosiji/founder-skills★ 9same name
- GPTtang/skill-atlas★ 4same name
- Mnilax/infographic-skill★ 2same name
- mashharuki/claude-code-sample★ 1same name
- jobottinkwork/claude-skills★ 0same name
- konglong87/infographic-generator-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- gmail-triageSkill
- linkedin-asset-analyzerSkill
- twitter-readerSkill
- video-performance-analyzerSkill
- x-scannerSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 48
If given a topic but not the specific points, research before building.
- Distinctive: line 183
No filler words: avoid "leveraging," "seamlessly," "powerful," "game-changing," "robust," "revolutionizing"
- Very specific: line 185
Prompt/example boxes: write real, usable content — not [your task here] placeholders
- Distinctive: line 187
Section count: default is 4. Use 3 if content is sparse.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Infographic Generator
End-to-end workflow: research → layout → HTML → PNG. Bring your own brand book and inspiration images, or use the built-in default design system.
Inputs
Collect before starting:
| Input | Required | Notes |
| Topic / title | Yes | What the infographic is about |
| Content points | No | Key points per section. If not provided, run Step 0 first. |
| Brand book | No | Brand context — paste it inline, drop a file, or describe it. Claude extracts colors, fonts, logo, tone from whatever is provided. |
| Inspiration image | No | A reference infographic to match the layout structure |
| Dimensions | No | portrait (default) or square |
| Output path | No | Defaults to ./output/infographic-[topic].png |
Canvas Dimensions
| Format | Dimensions | Ratio | Best for |
| Portrait (default) | 1080 × 1350px | 4:5 | Mobile-first, 4-section layouts |
| Square | 1200 × 1200px | 1:1 | Feed visibility, simpler 2–3 section layouts |
Step 0 — Research (when content isn't provided)
If given a topic but not the specific points, research before building.
tavily_extract— if a URL is providedtavily_search "[topic] 2024"— for general topicstavily_research— for technical deep dives
Synthesize into 4 section angles before writing any HTML.
Step 1 — Style Resolution
Determine the design approach before writing any code:
Priority order:
- Brand book provided → Extract from whatever context was given (pasted text, dropped file, or description): primary/accent colors, font family, logo/monogram, tone. Apply these instead of the built-in defaults. Keep the layout structure from Step 2.
- Inspiration image provided → Analyze the image first: identify layout structure, column arrangement, visual hierarchy, section count, card patterns, header/footer treatment. Build HTML to match that structure. Keep brand colors from the brand book (or defaults if none provided).
- Both provided → Brand book sets colors + fonts. Inspiration image sets layout.
- Neither provided → Use the built-in default design system (described in Step 2).
When analyzing an inspiration image, extract:
- Number of sections and how they're divided
- Column layout per section (1-col, 2-col, 3-col, grid)
- Header and footer treatment
- Card/box shapes (rounded, sharp, with icons, with tags)
- Typography hierarchy (large title, section headers, body text)
- Visual accents (circles, arrows, flow diagrams, comparison tables)
Step 2 — Build HTML (Built-in Default Design System)
This is the default style. Skip or override based on Step 1 output.
Canvas CSS
/* Portrait */
width: 1080px; height: 1350px; background: #EFF4F0;
/* Square */
width: 1200px; height: 1200px; background: #EFF4F0;
display: flex; flex-direction: column; overflow: hidden;Structure (top to bottom)
| Element | CSS | Notes |
| Header | flex-shrink: 0; border-bottom: 2px solid rgba(26,39,68,0.1) | Title + subtitle |
| Mechanism strip | background: #1A2744; flex-shrink: 0 | Optional one-liner. Use when there's a core mechanism to name. |
| Sections 1–4 | flex: 1; display: flex; flex-direction: column | Equal height. Sections 1–3 get border-bottom: 1.5px solid rgba(26,39,68,0.08). Section 4: border-bottom: none. |
| Footer | flex-shrink: 0; height: 58px; background: #1A2744 | Always present |
Brand Colors
| Role | Hex |
| Canvas bg | #EFF4F0 |
| Dark navy | #1A2744 |
| Light blue | #6BA3D6 |
| Mid blue | #4A7FB5 |
| Body text | #4A4A5A |
| Secondary text | #7C7C8A |
| Card — blue | #D6E8F5 |
| Card — navy | #D0D8E8 |
| Card — mint | #D6EDE0 |
| Card — peach | #F0E6D6 |
| Card — cream | #F5F0EB |
| Card — lilac | #E4DCF0 |
Typography
Load from Google Fonts: Inter (400/500/600/700/800) + Playfair Display (700 italic)
| Element | Spec |
| Header title | Inter 800, 38–40px, #1A2744, letter-spacing -0.02em |
| Header subtitle | Inter 400, 14px, #7C7C8A |
| Section title | Inter 800, 16px, #1A2744 |
| Card title | Inter 700, 12.5px, #1A2744 |
| Card body | Inter 400, 11.5–12px, #4A4A5A, line-height 1.58 |
| Example box text | Inter 400 italic, 11px, #7C7C8A |
| Footer mark | Playfair Display italic 700, 15px, white |
Section Numbered Circles
.s1 { background: #6BA3D6; } /* blue */
.s2 { background: #1A2744; } /* navy */
.s3 { background: #4A7FB5; } /* mid blue */
.s4 { background: #6BA3D6; } /* blue */Size: 28×28px, border-radius 50%, Inter 800 12px white.
Section Content Patterns
| Section | Layout | Best for |
| 1 | 2-col card grid | Two core concepts, two input types |
| 2 | 2-col or 3-col card grid | Feature breakdown, use cases |
| 3 | 1 card + flow diagram, OR 3-col | Process steps, loops |
| 4 | Before/After comparison table | Contrast, results, with/without |
Card anatomy:
card-icon— 20×20px white square with box-shadow, emoji or symbolcard-title— Inter 700 12.5px, with optional.card-tagpill (right-aligned)card-body— descriptive textcard-example(optional) — dashed border box, label "PROMPT" or "EXAMPLE" in 9px uppercase blue, italic gray text
Flow steps: white boxes, centered, flow-step-num (22px blue circle), flow-step-title, flow-step-body. Connect with → arrows.
Comparison table: 2-col grid. bad header (rgba(200,100,80,0.12)) vs good header (rgba(107,163,214,0.2)). Row items: colored dots dot-bad rgba(200,100,80,0.5) · dot-good #6BA3D6.
Footer
Customize the footer with your own name/logo. Default placeholder:
<div class="footer">
<div class="logo-mark"><span>A</span></div>
<div class="footer-name">Your Name</div>
</div>Logo mark CSS: background #6BA3D6, 5px border-radius, Playfair Display italic white letter.
To customize: replace "A" with your initial and "Your Name" with your name. If the user has provided a brand book with a name/logo, use that.
Step 3 — Copy Rules
- No filler words: avoid "leveraging," "seamlessly," "powerful," "game-changing," "robust," "revolutionizing"
- Titles: sharp and specific — "4 Habits That Actually Move the Needle" not "Your Complete Guide to High Performance"
- Prompt/example boxes: write real, usable content — not
[your task here]placeholders - Tags (DAILY / WEEKLY / ALWAYS etc.): only use when accurate and specific
- Section count: default is 4. Use 3 if content is sparse; never go above 4 in portrait.
Step 4 — Export to PNG
Save HTML to: ./output/infographic-[topic].html (relative to project root)
Screenshot with Playwright — use shell variables so the script works from any project:
# Install Playwright if not already present (one-time)
cd /tmp && npm install playwright
# Set paths (run from your project root)
HTML_FILE="$(pwd)/output/infographic-[topic].html"
PNG_FILE="$(pwd)/output/infographic-[topic].png"
# Create output dir if needed
mkdir -p "$(pwd)/output"
# Export the canvas element to PNG
# Paths are passed as arguments (not interpolated into the script string) to avoid shell injection
cd /tmp && node -e "
const { chromium } = require('playwright');
const htmlFile = process.argv[1];
const pngFile = process.argv[2];
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.setViewportSize({ width: 1200, height: 1500 });
await page.goto('file://' + htmlFile);
await page.waitForTimeout(1000);
const canvas = await page.\$('.canvas');
await canvas.screenshot({ path: pngFile, type: 'png' });
await browser.close();
console.log('Done: ' + pngFile);
})();
" -- "$HTML_FILE" "$PNG_FILE"Verify: ls -lh ./output/infographic-[topic].png — expect 150K–300K.
Image pipeline: HTML → Playwright → PNG only. Do not use image generation APIs for infographics.
Customization Reference
| Thing to change | Where |
| Brand colors | Replace hex values in Step 2 color table |
| Fonts | Swap Google Fonts import + update font-family references |
| Footer name/initial | Edit the logo-mark span and footer-name div |
| Output directory | Change ./output/ to any path you prefer |
| Canvas size | Update canvas CSS width/height + Playwright viewport |
| Number of sections | Remove or add section blocks in HTML; adjust flex: 1 distribution |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

