GEO PDF Report Generator
Turns a GEO audit markdown report into a client-ready PDF with a cover page, color-coded score tables, and a 90-day roadmap.
Declared tools Read/Grep/Glob/Bash/Write; reads only a local GEO-AUDIT-REPORT.md and writes local HTML/PDF with no network egress or credential access; data flow is transparent. Deducted for: Chrome headless run with --no-sandbox (template injects JavaScript; a local file:// render still makes this an unnecessarily relaxed default) and absence of user-confirmation or rollback notes.
Step-by-step workflow with a troubleshooting table (missing pandoc, Chrome path, blank-PDF fix via --virtual-time-budget) and a graceful fallback of omitting missing --metadata fields. Deducted for: dependence on template files (geo-report-template.html / geo-report-style.css) whose existence and correctness cannot be verified in this evidence set, and static review cannot reproduce key paths.
Clear trigger condition (GEO-AUDIT-REPORT.md present, else explicit instruction to run /geo audit first) and concrete output spec. Deducted for: Chrome path hardcoded to macOS /Applications, no Linux/Windows coverage, unstated non-fit boundaries, and no mention of CJK/non-ASCII font rendering in the PDF.
Version 2.0.0, MIT license, well-layered documentation (prerequisites, steps, customization, troubleshooting). Deducted for: author listed as 'geo-seo-claude' rather than an accountable maintainer, no changelog, and implicit assumptions about template install location (~/.claude/skills/geo/templates/) not fully documented within the skill file.
Claims a client-ready PDF with cover, color-coded tables and pagination — concrete spec with clear marginal value over manual formatting. Deducted for: static review cannot verify template/render behavior, the 'No Python dependencies' claim coexists confusingly with repo-level requirements.txt and a separate ReportLab script, and no sample output is provided.
Author description only; no tests target this PDF skill (repo tests cover fetch_page.py SSR detection, unrelated here), no sample outputs or third-party execution evidence.
- This is a static source review; no generation pipeline was executed and actual PDF rendering is independently unverified.
- The skill depends on shared template files (geo-report-template.html / geo-report-style.css); verify they exist at ~/.claude/skills/geo/templates/ after install.
- Chrome headless is run with --no-sandbox; consider removing this flag in multi-user or untrusted environments.
- The Chrome path is hardcoded for macOS; Linux/Windows users must adjust it.
- Rendering of Chinese or other non-Latin fonts in the PDF is not addressed; preview before client delivery.
- Publisher is unverified in the FollowSkills registry; maintenance responsibility rests with current repo state.
What does this skill do, and when should you use it?
geo-report-pdf is a sub-skill of the geo-seo-claude collection with a single job: converting the GEO-AUDIT-REPORT.md produced by /geo audit into a polished, deliverable PDF. It uses a pure pandoc + Chrome headless pipeline with no Python or ReportLab dependencies. The output includes a dark cover page, score tables color-coded by threshold, severity-tagged findings, and automatic section page breaks. It fits consultants and GEO agencies who have already run an audit and need a client-facing deliverable.
1) Looks for GEO-AUDIT-REPORT.md in the current directory and tells you to run /geo audit first if it's missing; 2) extracts cover metadata from the report header (brand name, domain, GEO score, score label, date, business type, locations, CMS platform); 3) runs pandoc with a bundled HTML template and CSS to produce a self-contained GEO-REPORT.html, passing metadata via --metadata flags; 4) runs Chrome headless (--headless=new --print-to-pdf) to print the HTML to GEO-REPORT.pdf; 5) injected JavaScript colors XX/100 score cells by threshold (≥80 green, ≥65 blue, ≥50 amber, ≥35 orange, <35 red), adds severity-colored left borders to Critical/High/Medium/Low findings, and breaks major sections onto new pages; 6) reports the filename and size on completion, with open GEO-REPORT.pdf for preview.
- GEO/SEO consultants: after running /geo audit, turn raw results into a professional PDF you can hand to a client.
- Digital agencies: batch-produce uniformly formatted audit reports with branded covers and 90-day roadmaps for each client site.
- Freelancers: sell AI-search optimization diagnostics and need a low-effort report polish step without writing Python.
- Agency teams: customize typography, colors, and cover layout via the CSS and HTML template to match in-house branding.
- Site owners: print an audit of their own site to an offline PDF to share with non-technical decision-makers.
What are this skill's strengths and limitations?
- Zero Python dependencies: a clean pandoc + Chrome pipeline — no ReportLab, no JSON wrangling.
- Genuinely client-ready output: dark cover page, score badge, color-coded tables, severity callouts, and page footers.
- Highly customizable with documented touchpoints: CSS, cover HTML, scoreColor() thresholds, and the breakBefore array.
- Clear failure mode when the upstream report is missing (prompts /geo audit first); template defaults cover absent metadata fields.
- Practical troubleshooting table (pandoc missing, Chrome path, blank PDF, font fallback).
- Tightly coupled upstream: requires GEO-AUDIT-REPORT.md from /geo audit; it produces no audit content itself.
- Chrome path is hardcoded to macOS (/Applications/Google Chrome.app/); Linux/Windows users must modify the command.
- No test evidence and no mention of cross-platform validation; the README architecture also lists a separate ReportLab PDF script, which can cause confusion.
- Cover metadata extraction depends on the report following the standard header format; deviations yield missing cover fields.
- It only formats — all audit and scoring capability lives in sibling skills and must not be attributed to this one.
How do you install this skill?
This skill ships inside the zubair-trabzada/geo-seo-claude collection (16 bundled skills). One-command install: curl -fsSL https://raw.githubusercontent.com/zubair-trabzada/geo-seo-claude/main/install.sh | bash (Windows: install-win.sh from Git Bash). Or manually: git clone https://github.com/zubair-trabzada/geo-seo-claude.git && cd geo-seo-claude && ./install.sh. Collection-wide requirements: Python 3.8+, Claude Code CLI, Git. This skill additionally requires pandoc (brew install pandoc) and Google Chrome installed at /Applications/Google Chrome.app/. Note: the SKILL.md does not document installing this sub-skill on its own.
How do you use this skill?
Trigger the skill (the /geo report-pdf command per the README) in a directory containing GEO-AUDIT-REPORT.md. The flow is automated: read the report → extract cover metadata → run pandoc (template at ~/.claude/skills/geo/templates/geo-report-template.html) → run Chrome headless to produce GEO-REPORT.pdf → report file size; open GEO-REPORT.pdf to preview. If the report is missing, you'll be told to run /geo audit <url> first. Customization: edit geo-report-style.css for colors/typography, the template HTML for cover layout, the scoreColor() function for color thresholds, and the breakBefore array for page-break sections. If the PDF is blank, raise --virtual-time-budget to 8000.
How does this skill compare with similar options?
The same repo's scripts/ folder contains an older Python ReportLab generator (generate_pdf_report.py, listed in the README). This skill is the alternative, Python-free pandoc + Chrome pipeline. No third-party competitors are named in the source.