Generate a professional PDF report from GEO audit data using ReportLab. Creates a polished, client-ready PDF with score gauges, bar charts, platform readiness visualizations, color-coded tables, and prioritized action plans.
From muggle-ai-teamsnpx claudepluginhub multiplex-ai/muggle-ai-teams --plugin muggle-ai-teamsThis skill uses the workspace's default tool permissions.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
This skill generates a professional, visually polished PDF report from GEO audit data. The PDF includes score gauges, bar charts, platform readiness visualizations, color-coded tables, and a prioritized action plan — ready to deliver directly to clients.
pip install reportlab~/.claude/skills/geo/scripts/generate_pdf_report.py/geo-audit) to have data to include in the reportAfter running a full /geo-audit, collect all scores, findings, and recommendations into a JSON structure. The JSON data must follow this schema:
{
"url": "https://example.com",
"brand_name": "Example Company",
"date": "2026-02-18",
"geo_score": 65,
"scores": {
"ai_citability": 62,
"brand_authority": 78,
"content_eeat": 74,
"technical": 72,
"schema": 45,
"platform_optimization": 59
},
"platforms": {
"Google AI Overviews": 68,
"ChatGPT": 62,
"Perplexity": 55,
"Gemini": 60,
"Bing Copilot": 50
},
"executive_summary": "A 4-6 sentence summary of the audit findings...",
"findings": [
{
"severity": "critical",
"title": "Finding Title",
"description": "Description of the finding and its impact."
}
],
"quick_wins": [
"Action item 1",
"Action item 2"
],
"medium_term": [
"Action item 1",
"Action item 2"
],
"strategic": [
"Action item 1",
"Action item 2"
],
"crawler_access": {
"GPTBot": {"platform": "ChatGPT", "status": "Allowed", "recommendation": "Keep allowed"},
"ClaudeBot": {"platform": "Claude", "status": "Blocked", "recommendation": "Unblock for visibility"}
}
}
Write the collected audit data to a temporary JSON file:
# Write audit data to temp file
cat > /tmp/geo-audit-data.json << 'EOF'
{ ... audit JSON data ... }
EOF
Run the PDF generation script:
python3 ~/.claude/skills/geo/scripts/generate_pdf_report.py /tmp/geo-audit-data.json GEO-REPORT-[brand].pdf
The script will produce a professional PDF report with:
After generation, tell the user where the PDF was saved and its file size.
When the user runs this skill, follow this exact sequence:
Check for existing audit data — Look for recent GEO audit reports in the current directory:
GEO-CLIENT-REPORT.mdGEO-AUDIT-REPORT.mdGEO-*.md files from a recent auditIf no audit data exists — Tell the user to run /geo-audit <url> first, then come back for the PDF.
If audit data exists — Parse the markdown report to extract:
Build the JSON — Structure all data into the JSON schema shown above.
Write JSON to temp file — Save to /tmp/geo-audit-data.json
Run the PDF generator:
python3 ~/.claude/skills/geo/scripts/generate_pdf_report.py /tmp/geo-audit-data.json "GEO-REPORT-[brand_name].pdf"
Report success — Tell the user the PDF was generated, its location, and file size.
If the user runs /geo-report-pdf https://example.com with a URL:
geo-audit skill for that URLWhen extracting data from existing GEO markdown reports, look for these patterns:
pip install reportlab