A sophisticated Claude Code agent orchestration system that converts markdown files with embedded Mermaid diagrams into professional PDF and Word documents with properly rendered diagram images.
This pipeline automates the complex process of extracting Mermaid diagrams from markdown files, generating images from them, and producing publication-ready documents. It leverages Claude Code's subagent architecture to create a robust, maintainable workflow that handles everything from diagram extraction to final document generation.
- Automated Mermaid Extraction: Intelligently identifies and extracts all Mermaid code blocks from markdown files
- Image Generation: Converts Mermaid diagrams to high-quality PNG images using mermaid-cli
- Document Conversion: Generates both PDF and Word documents with embedded images
- UTF-8 Handling: Automatically sanitizes content when encoding issues occur
- Workflow Orchestration: Coordinated pipeline managed by specialized Claude Code agents
- Comprehensive Logging: Detailed logs for debugging and audit trails
- Node.js and npm (for Mermaid CLI)
- Mermaid CLI:
npm install -g @mermaid-js/mermaid-cli
- Pandoc (for document conversion):
- macOS:
brew install pandoc - Ubuntu/Debian:
sudo apt-get install pandoc - Windows: Download from pandoc.org
- macOS:
- XeLaTeX (for PDF generation):
- macOS: Install MacTeX or BasicTeX
- Ubuntu/Debian:
sudo apt-get install texlive-xetex - Windows: Install MiKTeX or TeX Live
Verify installations:
mmdc --version # Should show mermaid-cli version
pandoc --version # Should show pandoc version
xelatex --version # Should show XeLaTeX versiondocs/
├── README.md # This file
├── markdown/ # Source markdown files (input)
│ ├── article.md
│ ├── test-diagrams.md
│ └── ...
├── markdown_mermaid/ # Processed files
│ ├── images/ # Generated PNG diagrams
│ │ ├── article_01_mindmap.png
│ │ ├── article_02_flowchart.png
│ │ └── ...
│ ├── mermaid/ # Extracted .mmd files
│ │ ├── article_01_mindmap.mmd
│ │ ├── article_02_flowchart.mmd
│ │ └── ...
│ ├── article.md # Modified markdown with image links
│ └── test-diagrams.md # Modified markdown with image links
├── pdf/ # PDF output documents
│ ├── article.pdf
│ └── test-diagrams.pdf
└── word/ # Word output documents
├── article.docx
└── test-diagrams.docx
- Place your markdown files with Mermaid diagrams in
docs/markdown/ - Run the workflow orchestrator agent:
# Using Claude Code # Ask Claude: "Run the workflow-orchestrator agent on docs/markdown/article.md"
- Find your outputs in:
- PDF:
docs/pdf/ - Word:
docs/word/
- PDF:
If you prefer to run the pipeline steps manually:
-
Extract Mermaid diagrams:
python src/extract_mermaid.py
-
Generate images from diagrams:
python src/generate_images.py
-
Convert to PDF:
cd docs/markdown_mermaid pandoc article.md -o ../pdf/article.pdf --pdf-engine=xelatex --toc -
Convert to Word:
pandoc article.md -o ../word/article.docx --toc
This project uses seven specialized Claude Code subagents:
- Role: Master coordinator
- Location:
.claude/agents/workflow-orchestrator.md - Manages: Entire pipeline from start to finish
- Role: Diagram extraction specialist
- Location:
.claude/agents/mermaid-extractor.md - Function: Scans markdown files and extracts Mermaid code blocks
- Role: Diagram rendering specialist
- Location:
.claude/agents/image-generator.md - Function: Converts .mmd files to PNG images using mermaid-cli
- Role: Content transformation specialist
- Location:
.claude/agents/markdown-rebuilder.md - Function: Replaces Mermaid blocks with image references
- Role: Document generation specialist
- Location:
.claude/agents/pandoc-converter.md - Function: Creates PDF and Word documents
- Role: Encoding issue handler
- Location:
.claude/agents/utf-sanitizer.md - Function: Creates ASCII-safe versions when UTF errors occur
- Role: Infrastructure manager
- Location:
.claude/agents/file-organizer.md - Function: Maintains directory structure and file organization
-
Extracted Mermaid files:
<source_name>_NN_<type>.mmdNN: Two-digit sequence number (01, 02, ...)type: Diagram type (flowchart, mindmap, class, sequence, etc.)- Example:
article_01_mindmap.mmd
-
Generated images: Same as .mmd files with .png extension
- Example:
article_01_mindmap.png
- Example:
-
Sanitized markdown:
<source_name>_PDF.md(only created when UTF issues occur)
- Flowcharts
- Sequence Diagrams
- Class Diagrams
- State Diagrams
- Entity Relationship Diagrams
- Gantt Charts
- Pie Charts
- Git Graphs
- Journey Maps
- Quadrant Charts
- Mind Maps
-
"mmdc not found" error:
- Ensure mermaid-cli is installed globally:
npm install -g @mermaid-js/mermaid-cli - Check PATH includes npm global bin directory
- Ensure mermaid-cli is installed globally:
-
PDF generation fails:
- Verify XeLaTeX is installed
- Check for UTF-8 encoding issues in source markdown
- Review pandoc-pdf.log for detailed errors
-
Images not appearing in documents:
- Ensure images are generated in
docs/markdown_mermaid/images/ - Verify image paths in modified markdown files
- Check image file permissions
- Ensure images are generated in
-
UTF-8 encoding errors:
- The UTF sanitizer agent will automatically create ASCII-safe versions
- Look for
*_PDF.mdfiles in the markdown_mermaid directory
Detailed logs are created during processing:
logs/workflow_*.md: Complete workflow execution logspandoc-*.log: Pandoc conversion logs*_manifest.json: Extraction and generation manifests
## System Architecture
\`\`\`mermaid
flowchart LR
A[User] --> B[Web Server]
B --> C[Database]
B --> D[Cache]
\`\`\`article_01_flowchart.mmd- Extracted diagramarticle_01_flowchart.png- Generated imagearticle.md- Modified witharticle.pdf- Final PDF with embedded diagramarticle.docx- Final Word document with embedded diagram
Typical processing times:
- Small document (5-10 diagrams): 2-3 minutes
- Medium document (10-20 diagrams): 5-7 minutes
- Large document (20+ diagrams): 8-12 minutes
File sizes:
- PNG images: 40-150KB per diagram
- PDF documents: 400-600KB (with embedded images)
- Word documents: 400-500KB (with embedded images)
To extend or modify the pipeline:
- Agent modifications: Edit files in
.claude/agents/ - Python scripts: Modify files in
src/ - Test with sample documents in
docs/markdown/
This project is part of the Claude Code documentation agents collection.
For issues or questions:
- Review logs in
logs/directory - Check agent documentation in
.claude/agents/ - Ensure all prerequisites are correctly installed
Built with Claude Code's subagent orchestration system, leveraging:
- Mermaid.js for diagram rendering
- Pandoc for document conversion
- Claude AI for intelligent workflow management