Skip to content
Skillv1.0.0

geo-report-pdf

Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-t

by zubair-trabzada(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from zubair-trabzada/geo-seo-claude (skills/geo-report-pdf/SKILL.md) via skills.sh. Install upstream with npx skills add zubair-trabzada/geo-seo-claude --skill geo-report-pdf. Copyright stays with the author.

GEO PDF Report Generator (pandoc pipeline)

Prerequisites

  • pandocbrew install pandoc
  • Google Chrome — must be installed at /Applications/Google Chrome.app/

No Python dependencies. No ReportLab. No JSON data wrangling.

How It Works

  1. Read GEO-AUDIT-REPORT.md in the current directory (created by /geo audit)
  2. Extract cover metadata from the report (brand name, domain, GEO score, date, locations)
  3. Run pandoc with the bundled CSS + HTML template to produce a self-contained GEO-REPORT.html
  4. Run Chrome headless to print the HTML to GEO-REPORT.pdf

The pandoc template (~/.claude/skills/geo/templates/geo-report-template.html) injects:

  • A full-bleed dark navy cover section with the GEO score badge
  • Per-section cover metadata (date, business type, locations, platform)
  • JavaScript that runs inside Chrome before printing to color-code score cells and severity-tag finding sections

Workflow

Step 1: Check for audit report

Look for GEO-AUDIT-REPORT.md in the current directory. If absent, tell the user to run /geo audit <url> first.

Step 2: Extract cover metadata from the report

Read the top of GEO-AUDIT-REPORT.md and extract:

Field Where to find it
brand_name First H1 title (after "GEO Audit Report:")
domain Second bold line (e.g. **Domain:** alexamediasolutions.com)
geo_score Line matching ## Overall GEO Score: XX / 100
score_label Word after the score on that same line (e.g. "Poor", "Fair", "Good")
date **Audit Date:** line
business_type **Business Type:** line
locations **Locations:** line
platform **CMS:** line

Step 3: Run pandoc

pandoc GEO-AUDIT-REPORT.md \
  --to html5 \
  --standalone \
  --embed-resources \
  --template ~/.claude/skills/geo/templates/geo-report-template.html \
  --css ~/.claude/skills/geo/templates/geo-report-style.css \
  --metadata title="GEO Audit Report — <brand_name>" \
  --metadata brand_name="<brand_name>" \
  --metadata domain="<domain>" \
  --metadata geo_score="<geo_score>" \
  --metadata score_label="<score_label>" \
  --metadata date="<date>" \
  --metadata business_type="<business_type>" \
  --metadata locations="<locations>" \
  --metadata platform="<platform>" \
  -o GEO-REPORT.html

Replace <field> placeholders with values extracted in Step 2. If a field is not found in the report, omit that --metadata flag — the template has sensible defaults.

Step 4: Run Chrome headless

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --headless=new \
  --disable-gpu \
  --no-sandbox \
  --print-to-pdf="$(pwd)/GEO-REPORT.pdf" \
  --print-to-pdf-no-header \
  --no-pdf-header-footer \
  --virtual-time-budget=5000 \
  "file://$(pwd)/GEO-REPORT.html"

Step 5: Report completion

Tell the user:

  • GEO-REPORT.pdf was generated in the current directory
  • File size
  • Optionally: open GEO-REPORT.pdf to preview it

What the PDF Contains

  • Cover page — Dark navy gradient, brand name, domain, GEO score badge (colored by score), audit date, business type, locations, CMS platform
  • Score tables — Cells containing XX/100 are color-coded: ≥80 green, ≥65 blue, ≥50 amber, ≥35 orange, <35 red
  • Finding sectionsh3 headings containing "Critical / High / Medium / Low" get severity-colored left-border callout blocks (red / orange / yellow / green)
  • Section page breaks — Major sections (High Priority, 90-Day Roadmap, Component Score Summary, Generated Schema) break to new pages automatically
  • Code blocks — JSON schema templates render with dark theme monospace styling
  • Page footer — Brand name · GEO Audit · date + page numbers (via CSS @page)

Customizing the Report

  • Colors / typography — Edit ~/.claude/skills/geo/templates/geo-report-style.css
  • Cover layout — Edit ~/.claude/skills/geo/templates/geo-report-template.html
  • Score thresholds for color-coding — Edit the scoreColor() function in the template's <script> block
  • Which sections get page breaks — Edit the breakBefore array in the template's <script> block

Troubleshooting

Problem Fix
pandoc: command not found brew install pandoc
Chrome not found Check path: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
PDF is blank / empty Increase --virtual-time-budget to 8000
Cover metadata missing Check GEO-AUDIT-REPORT.md has the standard header format
Fonts not loading PDF is rendered offline; system fonts are used as fallback — this is expected

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/zubair-trabzada-geo-seo-claude-geo-report-pdf/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

zubair-trabzada-geo-seo-claude-geo-report-pdf.ocm.jsonjson
{
  "ocm": "1",
  "id": "zubair-trabzada-geo-seo-claude-geo-report-pdf",
  "kind": "skill",
  "name": "geo-report-pdf",
  "description": "Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-tagged findings, and a 90-day roadmap.",
  "publisher": "zubair-trabzada",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "geo",
      "pdf",
      "report",
      "client-deliverable",
      "professional",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-tagged findings, and a 90-day roadmap."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/zubair-trabzada/geo-seo-claude",
      "path": "skills/geo-report-pdf/SKILL.md",
      "ref": "HEAD",
      "url": "https://www.skills.sh/zubair-trabzada/geo-seo-claude/geo-report-pdf",
      "key": "zubair-trabzada/geo-seo-claude/skills/geo-report-pdf/SKILL.md"
    },
    "allowed_tools": [
      "Read,",
      "Grep,",
      "Glob,",
      "Bash,",
      "Write"
    ]
  },
  "instructions": "# GEO PDF Report Generator (pandoc pipeline)\n\n## Prerequisites\n\n- **pandoc** — `brew install pandoc`\n- **Google Chrome** — must be installed at `/Applications/Google Chrome.app/`\n\nNo Python dependencies. No ReportLab. No JSON data wrangling.\n\n## How It Works\n\n1. Read `GEO-AUDIT-REPORT.md` in the current directory (created by `/geo audit`)\n2. Extract cover metadata from the report (brand name, domain, GEO score, date, locations)\n3. Run `pandoc` with the bundled CSS + HTML template to produce a self-contained `GEO-REPORT.html`\n4. Run Chrome headless to print the HTML to `GEO-REPORT.pdf`\n\nThe pan",
  "cost": {
    "context_tokens": 1158
  }
}

Fetch it by URL: GET /api/v1/registry/zubair-trabzada-geo-seo-claude-geo-report-pdf/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.