geo-report-pdf
Skill16 starsChanged 35 days agoMITView on GitHub
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.
- Installs packages
5 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- alpit-patel/seo-aeo-geo-kittheir own version, first seen Nov 8, 2026
- Ormus-Solutions/LibreGEO-Claude-Codeedited, first seen Oct 13, 2026
- HermeticOrmus/LibreGEO-Claude-Codeedited, first seen Oct 1, 2026
- zubair-trabzada/geo-seo-claudetheir own version, first seen Aug 4, 2026
- kennyolofsson23-netizen/claude-code-configedited, first seen Mar 16, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 3
- HermeticOrmus/LibreGEO-Claude-Code★ 190% same
- Ormus-Solutions/LibreGEO-Claude-Code★ 190% same
- kennyolofsson23-netizen/claude-code-config★ 097% same
Wrote their own version · 2
- zubair-trabzada/geo-seo-claude★ 11ksame name
- alpit-patel/seo-aeo-geo-kit★ 2same 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 repository17 other files it gives its agents.
- llms.txtllms.txt
- agent-readiness-scanSkill
- found-by-aiSkill
- geo-auditSkill
- geo-brand-mentionsSkill
- geo-citabilitySkill
- geo-compareSkill
- geo-contentSkill
- geo-crawlersSkill
- geo-llmstxtSkill
- geo-platform-optimizerSkill
- geo-proposalSkill
- geo-prospectSkill
- geo-reportSkill
- geo-schemaSkill
- geoSkill
- geo-technicalSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. 11 are common, 1 is distinctive, and 5 are very specific to this project.
11
Common
Most of the 5 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
ReportLab: must be installed: pip install reportlab
- Very specific: line 22
Run a full GEO audit first (using geo-audit) to have data to include in the report
- Very specific: line 28
After running a full /geo-audit, collect all scores, findings, and recommendations into a JSON structure.
- Common: line 80
Write the collected audit data to a temporary JSON file:
- Common: line 91
Run the PDF generation script:
- Common: line 109
After generation, tell the user where the PDF was saved and its file size.
- Common: line 113
When the user runs this skill, follow this exact sequence:
- Distinctive: line 115
Check for existing audit data: Look for recent GEO audit reports in the current directory:
- Very specific: line 144
If the user runs /geo-report-pdf https://example.com with a URL:
- Common: line 151
When extracting data from existing GEO markdown reports, look for these patterns:
- Common: line 153
GEO Score: Look for "GEO Score: XX/100" or "Overall: XX/100" or "GEO Readiness Score: XX"
- Common: line 154
Category Scores: Look for score tables with columns like "Component | Score | Weight"
- Common: line 155
Platform Scores: Look for tables with "Google AI Overviews", "ChatGPT", "Perplexity", etc.
- Common: line 156
Crawler Status: Look for tables with "Allowed" or "Blocked" status for crawlers like GPTBot, ClaudeBot
- Common: line 157
Findings: Look for sections titled "Key Findings", "Critical Issues", "Recommendations"
- Common: line 158
Action Items: Look for sections titled "Quick Wins", "Action Plan", "Recommendations"
- Very specific: line 162
If ReportLab is not installed, run: pip install reportlab
“Common” is measured: kept by at least 6 in 10 of the 5 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
GEO PDF Report Generator
Purpose
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.
Two PDF paths: pick one. For a branded, client-ready deliverable, prefer the TypeScript
tools/audit-report-kit(react-pdf, THL brand tokens, provenance tags,n/afor null scores, compile-checked JSON-LD alongside). The ReportLab script below is the lightweight Python path when you don't want a Node toolchain. They render the same audit JSON; don't run both.
Prerequisites
- ReportLab must be installed:
pip install reportlab - The Python PDF generation script lives at
../geo/scripts/generate_pdf_report.py(shared with thegeoumbrella skill). Run it from the repo root:python3 skills/geo/scripts/generate_pdf_report.py <data.json> <out.pdf>. - Run a full GEO audit first (using
geo-audit) to have data to include in the report
How to Generate a PDF Report
Step 1: Collect Audit Data
After 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"}
}
}Step 2: Write JSON Data to a Temp File
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 ... }
EOFStep 3: Generate the PDF
Run the PDF generation script:
python3 skills/geo/scripts/generate_pdf_report.py /tmp/geo-audit-data.json GEO-REPORT-[brand].pdfThe script will produce a professional PDF report with:
- Cover Page: Brand name, URL, date, overall GEO score with visual gauge
- Executive Summary: Key findings and top recommendations
- Score Breakdown: Table and bar chart of all 6 scoring categories
- AI Platform Readiness: Visual horizontal bar chart per platform with scores
- AI Crawler Access: Color-coded table (green=allowed, red=blocked)
- Key Findings: Severity-coded findings list (critical/high/medium/low)
- Prioritized Action Plan: Quick wins, medium-term, and strategic initiatives
- Appendix: Methodology, data sources, and glossary
Step 4: Return the PDF Path
After generation, tell the user where the PDF was saved and its file size.
Complete Workflow Example
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.md- Or any
GEO-*.mdfiles from a recent audit
- If 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:
- Overall GEO score
- Category scores (citability, brand authority, content/E-E-A-T, technical, schema, platform)
- Platform readiness scores (Google AIO, ChatGPT, Perplexity, Gemini, Bing Copilot)
- AI crawler access status
- Key findings with severity levels
- Quick wins, medium-term, and strategic action items
- Executive summary
- 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 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 Provides a URL
If the user runs /geo-report-pdf https://example.com with a URL:
- First run a full audit: invoke the
geo-auditskill for that URL - Then collect all the audit data from the generated report files
- Generate the PDF as described above
Parsing Markdown Audit Data
When extracting data from existing GEO markdown reports, look for these patterns:
- GEO Score: Look for "GEO Score: XX/100" or "Overall: XX/100" or "GEO Readiness Score: XX"
- Category Scores: Look for score tables with columns like "Component | Score | Weight"
- Platform Scores: Look for tables with "Google AI Overviews", "ChatGPT", "Perplexity", etc.
- Crawler Status: Look for tables with "Allowed" or "Blocked" status for crawlers like GPTBot, ClaudeBot
- Findings: Look for sections titled "Key Findings", "Critical Issues", "Recommendations"
- Action Items: Look for sections titled "Quick Wins", "Action Plan", "Recommendations"
Notes
- If ReportLab is not installed, run:
pip install reportlab - The PDF is designed for US Letter size (8.5" x 11")
- Color palette: Navy primary (#1a1a2e), Blue accent (#0f3460), Coral highlight (#e94560), Green success (#00b894)
- Each page has a header line, page numbers, "Confidential" watermark, and generation date
- Score gauges use traffic-light colors: green (80+), blue (60-79), yellow (40-59), red (below 40)
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.

