
mermaid-to-gif
Convert Mermaid code blocks in .mmd or .md files to animated GIFs with customizable animation styles (progressive, highlight walk, pulse flow, wave).
- Installs
- 3.8K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/zc277584121/marketing-skills --skill mermaid-to-gif- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads mermaid-to-gif automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Skill: Mermaid to GIF
Convert Mermaid diagrams into animated GIFs with rich animation effects. Supports .mmd files and extracting ```mermaid code blocks from .md files.
Prerequisites: FFmpeg, Python 3.8+, Playwright (
pip install playwright && playwright install chromium)
When to Use
- The user wants to convert Mermaid diagrams to animated GIFs
- The user has
.mmdfiles or.mdfiles containing mermaid code blocks - The user needs animated visuals for presentations, documentation, or social media
- The user wants to batch-convert all mermaid blocks in a document
Context-Aware Style Selection
IMPORTANT: When converting mermaid blocks from .md files, read the surrounding markdown context to choose the most appropriate animation style for each diagram. Do NOT blindly apply the same style to all blocks.
Decision Guide
- Read the markdown text around each mermaid block — understand what the diagram is illustrating
- Match the style to the semantic meaning:
| Context Clue | Recommended Style | Reasoning |
|---|---|---|
| Data pipeline, ETL flow, request/response path | pulse-flow | Flowing dashed lines convey data movement |
| Architecture layers, org chart, hierarchy | progressive | Elements activate layer-by-layer |
| Step-by-step process, tutorial walkthrough | highlight-walk | Spotlight guides the reader through each step |
| System overview, title diagram, simple reference | wave | Brightness ripple adds life without distraction |
| Sequence diagram with message flow | progressive | Messages activate one by one in conversation order |
| Class/ER diagram (reference/static) | progressive or wave | Structure lights up or gets a subtle ripple |
-
Consider special handling:
- If the surrounding text says "data flows from A to B", use
pulse-floweven for a simple flowchart - If the text describes "three layers" or "two tiers", use
progressiveto activate layer-by-layer - If the diagram is decorative or supplementary, use
waveto keep it simple - For very large or complex diagrams, prefer
waveor shorter--durationto keep GIF size reasonable
- If the surrounding text says "data flows from A to B", use
-
Per-block style override: When batch-processing a
.mdfile, you may need to run the script multiple times with different styles, extracting specific blocks. Or process the whole file with a sensible default and re-run individual blocks that need different treatment.
Example: Context-Aware Processing
## Data Ingestion Pipeline ← context: "pipeline" → pulse-flow
[mermaid block: graph LR with ETL stages]
## System Architecture ← context: "architecture" → progressive
[mermaid block: graph TD with layers]
## Quick Reference ← context: "reference" → wave
[mermaid block: simple diagram]
Default Workflow
Single .mmd file
python <skill-root>/scripts/mermaid_to_gif.py diagram.mmd
Markdown file with mermaid blocks
python <skill-root>/scripts/mermaid_to_gif.py document.md -o ./images/
This extracts all ```mermaid code blocks and generates one GIF per block.
Multiple files
python <skill-root>/scripts/mermaid_to_gif.py *.mmd -o ./gifs/
python <skill-root>/scripts/mermaid_to_gif.py doc1.md doc2.md -o ./gifs/
Replacing mermaid blocks in markdown
After generating GIFs, replace the original ```mermaid code blocks with image references:

Use descriptive alt text based on the diagram content. The image path should be relative to the markdown file.
Animation Styles
All styles keep the diagram fully visible from frame 1 — no elements start hidden or fade in from zero. Every style adds motion while the user can see the complete diagram structure at all times.
| Style | Effect | Best For |
|---|---|---|
progressive (default) | All elements start dimmed (25% opacity), activate sequentially to full brightness; edges draw in with stroke animation | Flowcharts, architecture, hierarchy |
highlight-walk | All elements start dimmed (15%); a spotlight with blue glow moves through each element, leaving visited ones bright | Step-by-step process, tutorials |
pulse-flow | All elements fully visible; edges become flowing dashed lines (uniform dash size and speed) | Data flow, pipelines, request paths |
wave | All elements fully visible; a brightness pulse + blue glow ripple sweeps through elements sequentially | Simple diagrams, overviews, reference |
Animation Details
- progressive: Elements start at 25% opacity (diagram structure always visible). Nodes, edges, and labels activate in interleaved order (node → edge → node → edge) following flow direction. Edges use stroke-dashoffset to draw in visually. Activation is fast (8% of total duration per element).
- highlight-walk: All elements start at 15% opacity. A spotlight (with blue glow) moves through elements in order, leaving visited elements at 90% opacity. The whole diagram is visible as a "ghost" before the spotlight reaches each element.
- pulse-flow: All elements at full opacity. Edge paths get a uniform dashed pattern (10px dash + 6px gap) that flows at a fixed speed (200px/cycle), so all edges animate at the same pace regardless of length.
- wave: All elements at full opacity. A brightness pulse (1.0→1.4→1.0) with blue glow sweeps through elements sequentially. No position changes — purely a visual ripple effect.
Common Options
| Flag | Default | Description |
|---|---|---|
-o, --output-dir | Same as input | Output directory for generated GIFs |
-s, --style | progressive | Animation style (see table above) |
--fps | 10 | Frames per second |
--duration | 4.0 | Animation duration in seconds |
--hold | 1.0 | Hold last frame before looping (seconds) |
--theme | default | Mermaid theme: default, dark, forest, neutral |
--bg | #ffffff | Background color (hex) |
--padding | 40 | Padding around diagram in pixels |
--scale | 2 | Render scale factor (2 = retina quality) |
--custom-css | — | Path to custom CSS file |
--no-loop | — | Play GIF once instead of looping |
Examples
# Dark theme with faster animation
python <skill-root>/scripts/mermaid_to_gif.py arch.mmd --theme dark --bg "#1a1a2e" --duration 3
# High FPS for smoother animation
python <skill-root>/scripts/mermaid_to_gif.py flow.mmd --fps 15 --duration 5
# Batch convert all mermaid blocks from a doc
python <skill-root>/scripts/mermaid_to_gif.py README.md -o ./images/
# Custom CSS for special effects
python <skill-root>/scripts/mermaid_to_gif.py diagram.mmd --custom-css my-style.css
# No loop, suitable for one-time playback
python <skill-root>/scripts/mermaid_to_gif.py intro.mmd --no-loop --duration 6
# Lower resolution for smaller file size
python <skill-root>/scripts/mermaid_to_gif.py diagram.mmd --scale 1
Custom CSS
Create a CSS file to customize the appearance of the diagram during animation:
/* Rounded nodes with shadow */
.node rect {
rx: 10;
filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));
}
/* Thicker edge lines */
.edgePath path {
stroke-width: 2.5;
}
/* Custom background for actors (sequence diagram) */
.actor {
fill: #e8f4f8;
}
Pass it via --custom-css:
python <skill-root>/scripts/mermaid_to_gif.py diagram.mmd --custom-css my-style.css
How It Works
- Parse input — extract Mermaid code from
.mmdor.mdfiles - Generate HTML — embed Mermaid.js (CDN) + animation JS/CSS in a self-contained HTML file
- Render — Mermaid.js renders the diagram to SVG in headless Chromium via Playwright (with 2x device scale for retina quality)
- Scale — small SVGs are automatically scaled up to minimum 700px CSS width for readability
- Animate — JS animation engine exposes
setProgress(t)for frame-by-frame control (t: 0→1). Elements are collected, sorted by position (respecting LR/TB direction), and animated in interleaved node-edge order - Capture — Playwright takes a screenshot at each frame step
- Assemble — FFmpeg two-pass palette encoding (palettegen → paletteuse with Floyd-Steinberg dithering)
Important Notes
- Internet required: Mermaid.js is loaded from CDN at render time
- Supported diagram types: flowchart, sequence, class, state, ER, gitgraph, mindmap, pie, gantt, and more
- No hidden elements: all 4 styles keep the diagram visible from frame 1 — no waiting for elements to appear
- Fallback behavior: for unrecognized diagram types or when no animatable elements are detected, falls back to a whole-diagram opacity reveal
- Resolution: default scale=2 produces retina-quality images (~1400-1600px wide). Use
--scale 1for smaller files - GIF size: for very large outputs, reduce FPS to 8, shorten duration, use
--scale 1, or usewavestyle
FAQ
What does the mermaid-to-gif skill do?
Convert Mermaid code blocks in .mmd or .md files to animated GIFs with customizable animation styles (progressive, highlight walk, pulse flow, wave).
How do I install mermaid-to-gif?
Run npx skills add https://github.com/zc277584121/marketing-skills --skill mermaid-to-gif in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/mermaid-to-gif/ (personal) or .claude/skills/mermaid-to-gif/ (project).
Which AI agents can use mermaid-to-gif?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is mermaid-to-gif safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains mermaid-to-gif?
It is published by zc277584121 in zc277584121/marketing-skills. It has 3,841 recorded installs.
More from zc277584121/marketing-skills
remove-ai-style
zc277584121/marketing-skills
Aggressively rewrite Chinese or English prose to remove AI-generated patterns. Use for de-AI polishing, natural-language rewrites, robotic or formulaic writing, and publication cleanup. Always run the bundled deterministic Markdown analyzer first, remove every editable exclamation mark, dash, and formulaic binary contrast, inspect every other reported location, then read the full article for semantic patterns the rules cannot enumerate.
browser-screenshot
zc277584121/marketing-skills
Take focused, region-specific screenshots from web pages using a dedicated headed Chrome profile with persistent login state. Navigates to the right page based on user context (URL, search query, social media post), locates the target region via DOM selectors, and crops to a clean, focused screenshot without attaching to the user's daily browser.
content-rewrite
zc277584121/marketing-skills
Adapt and rewrite content for different platforms (LinkedIn, X, Reddit, English blog, WeChat). Each platform has its own tone, format, and length requirements.
chrome-automation
zc277584121/marketing-skills
Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay Chrome DevTools Recorder exports.
mermaid-to-image
zc277584121/marketing-skills
Convert Mermaid code blocks in Markdown files to PNG images using the mermaid.ink API.
image-generation
zc277584121/marketing-skills
Generate illustration images for articles and documentation with a Codex-first workflow, OpenAI API fallback, and Gemini fallback.
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.