SuperAPI AI 工具集

geo-report-pdf

写作与研究

查看项目

更新于 10-23 02:19

技能介绍

GEO PDF Report Generator(pandoc 流水线)用于把 GEO 审计结果输出为专业 PDF 报告。

用途 该技能面向需要为网站生成 Generative Engine Optimization(GEO)审计报告的场合,例如审计、可引用性、爬虫、schema、llms.txt、内容、平台调优或客户报告。它把已有的 Markdown 审计报告转换为排版完整的 PDF。

前置条件

  • pandoc:brew install pandoc
  • Google Chrome:必须安装在 /Applications/Google Chrome.app/
  • 无 Python 依赖,无 ReportLab,无 JSON 数据整理。

工作原理

  1. 读取当前目录下的 GEO-AUDIT-REPORT.md(由 /geo audit 创建)。
  2. 从报告中提取封面元数据(品牌名、域名、GEO 评分、日期、地点等)。
  3. 使用 pandoc 配合捆绑的 CSS 与 HTML 模板生成自包含的 GEO-REPORT.html。
  4. 使用 Chrome 无头模式把 HTML 打印为 GEO-REPORT.pdf。

pandoc 模板(本技能中的 references/ 模板或用户提供的 HTML)会注入:

  • 全出血深海军蓝封面区块,带 GEO 评分徽章
  • 各区块的封面元数据(日期、业务类型、地点、平台)
  • 在 Chrome 打印前运行的 JavaScript,用于给评分单元格着色并给发现区块添加严重程度标签

工作流程 步骤 1:检查审计报告 在当前目录查找 GEO-AUDIT-REPORT.md。如果不存在,提示用户先运行 /geo audit <url>。

步骤 2:从报告提取封面元数据 读取 GEO-AUDIT-REPORT.md 顶部并提取:

  • brand_name:第一个 H1 标题(在 "GEO Audit Report:" 之后)
  • domain:第二行加粗行(例如 Domain: alexamediasolutions.com)
  • geo_score:匹配 ## Overall GEO Score: XX / 100 的行
  • score_label:同一行评分后的词(例如 "Poor"、"Fair"、"Good")
  • date:Audit Date: 行
  • business_type:Business Type: 行
  • locations:Locations: 行
  • platform:CMS: 行

步骤 3:运行 pandoc 用结构化 JSON 写入器把提取的元数据保存为 geo-metadata.json。把报告字段视为不可信值,绝不作为可执行代码或 shell 片段。模板不捆绑:要求该 JSON 中存在已审查的绝对模板/CSS 路径,否则停止并报告缺少前置条件。

示例代码: import json import subprocess from pathlib import Path

config = json.loads(Path("geo-metadata.json").read_text()) args = ["pandoc", "GEO-AUDIT-REPORT.md", "--to", "html5", "--standalone"] for option, key in [("--template", "template_path"), ("--css", "css_path")]: path = Path(config[key]) if not path.is_absolute() or not path.is_file(): raise ValueError("An existing reviewed absolute resource path is required") args.extend([option, str(path)]) allowed = {"title", "brand_name", "domain", "geo_score", "score_label", "date", "business_type", "locations", "platform"} for key, value in config.get("metadata", {}).items(): if key not in allowed or not isinstance(value, str) or len(value) > 500: raise ValueError("Invalid report metadata") args.extend(["--metadata", key + "=" + value]) subprocess.run(args + ["-o", "GEO-REPORT.html"], check=True, shell=False)

渲染时禁用网络访问并启用浏览器沙箱;不要嵌入远程资源或运行不可信模板 JavaScript。

步骤 4:运行 Chrome 无头模式 "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
--headless=new
--disable-gpu
--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"

步骤 5:报告完成 告知用户:

  • GEO-REPORT.pdf 已在当前目录生成
  • 文件大小
  • 可选:打开 GEO-REPORT.pdf 预览

PDF 包含内容

  • 封面页:深海军蓝渐变、品牌名、域名、GEO 评分徽章(按分数着色)、审计日期、业务类型、地点、CMS 平台
  • 评分表:包含 XX/100 的单元格按分数着色:≥80 绿色,≥65 蓝色,≥50 琥珀色,≥35 橙色,<35 红色
  • 发现区块:包含 "Critical / High / Medium / Low" 的 h3 标题获得按严重程度着色的左边框标注块(红/橙/黄/绿)
  • 区块分页:主要区块(High Priority、90-Day Roadmap、Component Score Summary、Generated Schema)自动分页
  • 代码块:JSON schema 模板以深色主题等宽样式渲染
  • 页脚:品牌名 · GEO Audit · 日期 + 页码(通过 CSS @page)

自定义报告

  • 颜色/排版:编辑本技能中的 references/ 模板或用户提供的 HTML
  • 封面布局:编辑本技能中的 references/ 模板或用户提供的 HTML
  • 着色评分阈值:编辑模板 <script> 块中的 scoreColor() 函数
  • 哪些区块分页:编辑模板 <script> 块中的 breakBefore 数组

故障排除

  • pandoc: command not found → brew install pandoc
  • Chrome not found → 检查路径 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
  • PDF 空白/为空 → 把 --virtual-time-budget 增加到 8000
  • 封面元数据缺失 → 检查 GEO-AUDIT-REPORT.md 是否有标准头部格式
  • 字体未加载 → PDF 离线渲染,使用系统字体作为回退,这是预期行为

适用场景 需要为网站执行 Generative Engine Optimization 任务时:审计、可引用性、爬虫、schema、llms.txt、内容、平台调优或客户报告。先运行只读分析;在做出任何站点更改前先提出建议。

限制

  • 审计是只读分析;未经明确批准,绝不发布、部署或修改目标站点。
  • 评分和引用可能性是启发式估计,不是 AI 搜索平台的保证。
  • 仅文档导入:上游脚本、代理、钩子和 schema 模板未捆绑。

示例 curl -s https://example.com/robots.txt curl -s https://example.com/llms.txt

改编自 zubair-trabzada/geo-seo-claude(MIT);为上游合规添加了 frontmatter、When to Use/Limitations 和安全边界。仅文档导入:上游运行时辅助工具未捆绑。