领域新闻热点简报构建器(News Briefing Builder)
把「采集 → 成稿 → 可视化 → 上线 → 投递」这条链路固化下来。本技能只描述方法论与产物格式,不绑定任何具体行业:领域、区域、条数下限、时效窗口全部由用户在提问时填入。
核心原则(先读这三条,其余都好办)
- 时效优先于数量。以最近 24~48 小时为一级窗口;不足时回溯至近一周内仍有延续性的事件,并在条目里标注实际发生时间(如「9 月 4 日」)。绝不为了凑条数把旧闻当新闻。
- 每条必须能回答三个问题:核心事实(Who / What / When / Where)、为什么是现在(Why now)、一句话展望(What's next)。缺 Why now 的条目不算完成。
- 领域外的辅助新闻也必须与所选领域有可推导的关联,并在条目里写明这条传导链(例如原料价格 → 制造成本 → 产品报价)。孤立堆砌热点是这类简报最常见的失败模式。
Step 0 — 参数确认
开工前确认四项参数。用户已在提问里给出的直接采用;缺失的用多选题一次性问清(不要连环追问),并明确说出手里已有的假设。
| 参数 | 含义 | 缺省假设 |
|---|---|---|
| 关注领域 | 领域名称,可填 1 个主领域 + 1~2 个邻近领域 | 无,必须问 |
| 区域重点 | 需要专项覆盖的省 / 市 / 城市群(可空) | 无,可留空 |
| 条数下限 | 事件性内容(不含深度视角、关键词、不确定性清单)的最低条数 | 50 条 |
| 时效窗口 | 一级时效范围 | 最近 24~48 小时 |
同时确认交付形态:只出 Markdown、只出网页、还是要全链路(Markdown + 网页 + 上线 + 二维码 + 邮件)。默认全链路,但上线与发信属对外动作,执行前仍需在该轮获得用户明确同意(见 Step 4)。
Step 1 — 多源采集
按 references/01-collect.md 执行。要点:
- 三源交叉:官方权威源(央视 / 新华社 / 政府门户)+ 社交平台热榜(微博 / 百度 / 头条等)+ 领域专项检索(部委官网、行业招标信息、券商与专业机构)。热榜只用来定「当下公众注意力在哪」,领域内容必须回到官方源核对。
- 专项检索至少 6~10 轮,按板块定向分配:政策类、领域纵深类、区域专项类、市场数据类、国际类各起一组检索式。
- 记录每条的信源与时间,来源不明的数字不写进简报。市场数据必须带统计时点(如「2026-09-10 收盘」)。
- 热榜对垂直领域覆盖薄是常态——如果覆盖不足,如实说明该板块以官方源与行业信息为主,不要用泛化新闻填充。
Step 2 — 按板块成稿
结构规格、条数区间、每板块字数与 JSON Schema 见 references/02-modules.md;写作规范、句式、「深度视角」「不确定性清单」的写法见 references/03-writing.md。
先写 Markdown 初稿,再转 HTML。Markdown 是内容真相(便于用户二次编辑与转发),HTML 是呈现层。不要跳过 Markdown 直接在 HTML 里写内容。
成稿时同步统计条数与分布,并在交付说明里给出「各板块条数 = 总条数」的算式,方便用户验收。
Step 3 — 渲染可视化网页
- 按
references/02-modules.md的 Schema 把内容写成一个 JSON 数据文件(结构化数据,可复用、可校验)。 - 运行构建脚本产出单文件 HTML:
python3 scripts/build_report.py <data.json> <out.html>
脚本会打印各板块条数统计,并用 --min 校验是否达到条数下限(不达标时以非零退出码提示):
python3 scripts/build_report.py data.json report.html --min 50
- 视觉规范(主题色 / 卡片式 / 渐变 / 弥散阴影)与主题色替换约定见
references/04-design.md。模板位于assets/report-template.html,构建脚本只用{{占位符}}替换、不改动模板 CSS——改设计改模板,改内容改 JSON。
运行环境
- 两个脚本只用 Python 标准库;
make_qr.py额外依赖segno(纯 Python,无需 Pillow)。 - 不要用全局
pip install。把依赖装进隔离环境后再运行:
<隔离环境>/pip install -q segno
<隔离环境>/python scripts/build_report.py assets/example-data.json out.html
- 首次使用可先跑一遍样例,确认脚本与模板可用:
python3 scripts/build_report.py assets/example-data.json /tmp/preview.html
Step 4 — 上线与投递
完整步骤见 references/05-delivery.md。关键约束:
- 部署:把 HTML 复制为部署目录下的
index.html再发布(静态服务的入口文件约定),用「发布为应用」能力拿到分享链接。目录一旦发布即与分享链接绑定,内容覆盖不可逆——每次重新发布前都要在该轮重新取得用户同意。 - 二维码:
python3 scripts/make_qr.py <分享链接> <out.png>。用纠错等级 H、主色取主题深色,保证打印与反光场景可扫。 - 邮件投递:附件须先上传取
file_id再在发信参数里引用,不要把文件内容直接写进调用参数。发信是需要用户确认的对外动作,须先向用户出示「收件人 / 主题 / 附件清单」并取得同意。
交付说明(写什么)
交付说明控制在 30 行内,按顺序给:条数算式 → 3 条头条速览 → 区域专项命中数 → 2 条需要用户留意的判断(通常是信源局限与制度性约束)→ 下一步可选项。不要复述正文,也不要写「我做了什么」的过程叙述。
目录结构
news-briefing-builder/
├── SKILL.md 主流程(本文件)
├── references/
│ ├── 01-collect.md 信息源矩阵、检索式模板、时效与信源分级
│ ├── 02-modules.md 10 个板块规格 + 数据 JSON Schema(产物格式)
│ ├── 03-writing.md 写作规范、术语处理、深度视角与不确定性清单写法
│ ├── 04-design.md HTML 设计系统(主题色、卡片、渐变、弥散阴影)
│ └── 05-delivery.md 部署 / 二维码 / 邮件投递
├── scripts/
│ ├── build_report.py JSON → 单文件 HTML(含条数校验)
│ └── make_qr.py 分享链接 → 二维码 PNG
└── assets/
├── report-template.html 网页模板(CSS 与交互在此)
└── example-data.json 覆盖全部板块类型的数据样例
常见失败模式
| 症状 | 原因 | 纠正 |
|---|---|---|
| 简报像热点堆砌 | 各条之间没有传导关系 | 每条补 Why now,并在板块导语里点明事件链 |
| 领域内容单薄 | 只依赖热榜源 | 增加官方源与行业招标信息检索轮次 |
| 条数不达标 | 时效窗口内事件不足 | 回溯近一周仍有延续性的事件并标注实际时间,而非降低单条质量 |
| 数字来源不明 | 采集时未记录信源 | 采集阶段就登记来源与时间戳 |
| 网页与 md 不一致 | 手工分别维护两份内容 | 以 JSON 为单一数据源,网页由脚本生成 |