# Gauto Report PDF

> 把 GEO 审计/客户报告 Markdown 渲染成专业 PDF（中国汽车出口版）。用 Playwright Chromium 打印，零 pandoc 依赖；自动抽取封面元数据、评分表格按分数上色、发现分节按严重度染色、主要章节自动分页。Use when the user asks to export a GEO report to PDF / 生成PDF报告 / 报告转PDF / 客户版PDF.

- Skill: `adiready/gauto-report-pdf` (Agent Skill)
- Install (CLI): `npx skillmds@latest add adiready/gauto-report-pdf`
- Raw SKILL.md: https://api.skillmd.com/api/skills/adiready/gauto-report-pdf/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: adiready (https://skillmd.com/u/adiready)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/adiready/gauto-report-pdf

---


# GEO 报告 PDF 生成器（中国汽车出口版）

把一份报告 Markdown 渲染成**可直接发给客户或领导的 PDF**：
带深蓝封面、评分色阶表格、严重度分节、自动分页脚注。

## 与上游的区别（重要）

上游 `geo-report-pdf` 依赖 **pandoc + macOS Chrome 硬路径**。
本版**不依赖 pandoc**，改为零依赖链路：

```
报告 Markdown  ──(markdown 库)──▶  HTML  ──(Playwright Chromium 的 page.pdf)──▶  PDF
```

渲染引擎优先用 **Playwright 内置 Chromium**；若不可用，自动回退到**系统 Chrome/Edge 无头模式**。
Windows / macOS / Linux 通用。

## 前置依赖

只需 Python 库（本机托管 venv 已具备）：
- `markdown`（Markdown → HTML）
- `playwright`（Chromium 渲染；内核已随环境安装）

> 无需 pandoc、无需 wkhtmltopdf、无需 ReportLab。

## 使用步骤

### 第 1 步：确认报告 Markdown 存在

默认对象是 `/gauto report` 产出的 `GEO-CLIENT-REPORT.md`（也接受 `GEO-AUDIT-REPORT.md` 或任意结构化报告）。
若不存在，先让用户跑 `/gauto report <url>`，或指定已有的报告文件路径。

### 第 2 步：运行脚本

```bash
PY="C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
SKILL="C:/Users/Administrator/.workbuddy/skills/geo-auto-export"

"$PY" "$SKILL/scripts/report_pdf.py" GEO-CLIENT-REPORT.md -o GEO-CLIENT-REPORT.pdf
```

**封面元数据**：脚本会先自动从报告 Markdown 抓取（中英兼容），再用命令行参数覆盖。

| 字段 | 报告里的常见写法 | 覆盖参数 |
|---|---|---|
| 品牌名 | `**品牌：** 示例好车` / 首个 H1 | `--brand` |
| 域名 | `**域名：** xx.com` | `--domain` |
| GEO 分 | `## GEO 就绪分：58/100 —— 中等` | `--score` |
| 档位标签 | 同上行破折号后的中文 | `--label` |
| 审计日期 | `**审计日期：** 2026-09-16` | `--date` |
| 业务类型 | `**业务类型：** …` | `--business-type` |
| 目标市场 | `**目标市场：** …` | `--locations` |
| 平台 | `**平台：** …` | `--platform` |

示例（覆盖封面）：

```bash
"$PY" "$SKILL/scripts/report_pdf.py" GEO-CLIENT-REPORT.md \
  --brand "广东好车控股" --domain "chinagoodcar.com" \
  --score "63" --label "中等" \
  -o 好车GEO报告.pdf
```

### 第 3 步：回报结果

告诉用户：PDF 路径、大小（KB）、可选打开预览。

## PDF 里有什么

- **封面**：深蓝渐变 + 品牌名 + 域名 + GEO 分徽章（按分数上色）+ 审计日期 / 业务类型 / 目标市场 / 平台。
- **评分表格**：含 `XX/100` 的单元格自动上色——≥80 绿、≥65 蓝、≥50 琥珀、≥35 橙、<35 红。
- **发现分节**：含严重度关键字的三级标题（严重/高/中/低，或 critical/high/medium/low）下方内容块加彩色左边框。
- **自动分页**：高优先级 / 中优先级 / 行动计划 / 90 天 / 组件得分 等等章节自动另起一页。
- **代码块**：JSON schema 以深色等宽样式呈现。
- **页脚**：`GEO 审计报告 · 中国汽车出口版` + 页码（通过 CSS `@page`）。

## 自定义

| 想改什么 | 改哪里 |
|---|---|
| 颜色 / 字体 | `templates/geo-report-style.css` |
| 封面布局 / 文案 | `templates/geo-report-template.html` |
| 评分上色阈值 | 模板 `<script>` 里的 `scoreColor()` |
| 哪些章节自动分页 | 模板 `<script>` 里的 `breakBefore` 数组 |
| 元数据抽取规则 | `scripts/report_pdf.py` 的 `extract_meta()` |

## 故障排查

| 问题 | 处理 |
|---|---|
| `缺少依赖：markdown` | `pip install markdown`（托管 venv 已含） |
| Playwright 启动失败 | 脚本会自动回退系统 Chrome/Edge；仍失败则 `python -m playwright install chromium` |
| PDF 空白 | 提高脚本里 `networkidle` 超时，或检查报告 Markdown 是否为空 |
| 封面字段缺失 | 检查报告头部是否有 `**品牌：**` / `**域名：**` 等行；或用命令行参数直接指定 |
| 中文显示为方块 | 系统缺中文字体；本机 Windows 自带微软雅黑，一般无此问题 |
| 字体未加载 | PDF 离线渲染，Google Fonts 失败时自动用系统字体回退，属预期 |

