时事新报要闻生成器 (ssxb-headlines)
Overview
此技能根据一个日期,从 East View 的 CRL 中文报纸库抓取《时事新报》该日头版(第 01 版)的 OCR 全文,解码后由模型提炼成中文要闻总结,并附上可点击的档案阅览链接。若当日停刊/未收录,则明确回复「该日停刊」。
When to Use
- 用户给出某一天(公历),想看那一天《时事新报》的头版要闻。
- 用户粘贴了 East View 的报纸链接(含
ssxbYYYYMMDD),想直接总结那一期。 - 用户做近代史/辛亥革命前后/民国初年研究,需要按日期调取旧报要闻。
- 触发词示例:「总结 1911年7月12日 的时事新报」「查一下 1912-06-25 的旧报纸」「这天的报纸停刊了吗」。
Data Source & Mechanism
- 数据源:East View,
https://gpa.eastview.com/crl/lqrcn/,报纸代码前缀ssxb(时事新报)。 - 该站头版是影印图片 + 动态加载,直接 WebFetch 只能拿到报头;真实正文通过 AJAX 接口返回:
- 目录:
?a=da&command=getDocumentContents&d=ssxbYYYYMMDD-01&f=AJAX&e=... - 栏目正文:
?a=da&command=getSectionText&d=ssxbYYYYMMDD-01.1.N&f=AJAX&e=... - 正文藏在 SectionText 标签内,需 HTML 实体反转义 + 去标签。
- 这些请求已封装在 bundled 脚本
scripts/fetch_ssxb.py中,直接调用脚本即可,无需手动拼接口。
Workflow
Step 1: 运行抓取脚本
用本机托管 Python 运行 bundled 脚本,把用户给的日期(或链接)作为参数传入:
# Windows 托管环境(推荐)
C:/Users/sunya/.workbuddy/binaries/python/versions/3.13.12/python.exe \
C:/Users/sunya/.workbuddy/skills/ssxb-headlines/scripts/fetch_ssxb.py \
{日期或链接}
# 其它环境用系统 python(脚本仅依赖标准库)
python ~/.workbuddy/skills/ssxb-headlines/scripts/fetch_ssxb.py {日期或链接}
- 日期支持:
19120625/1912-06-25/1912/06/25/1912年6月25日/ 含ssxbYYYYMMDD的链接。 - 若返回 NET_ERROR(多为沙箱阻断网络),改用
dangerouslyDisableSandbox: true重跑该 Bash 命令。 - 脚本向 stdout 打印一行 JSON 状态,并把解码后的头版各栏目纯文本写入
raw_file(系统临时目录)。
Step 2: 依据状态分流
读脚本输出的 JSON status 字段:
| status | 含义 | 处理 |
|---|---|---|
OK |
抓到头版,有 N 个栏目 | 进入 Step 3 撰写总结 |
SUSPENDED |
该日报纸未出版/未收录(HTTP 404) | 回复「{日期} 当日《时事新报》停刊(档案无此日记录)」;仍可附上 link(注明该链接打开会显示未找到) |
NOT_FOUND |
目录返回但无栏目 | 同上,视作无可用内容 |
BAD_DATE |
日期无法解析 | 向用户确认日期写法 |
HTTP_ERROR / NET_ERROR / WRITE_ERROR |
网络或服务异常 | 提示错误;必要时重跑(见 Step 1 沙箱说明) |
Step 3: 撰写中文要闻总结
- 用 Read 工具打开 JSON 中的
raw_file路径,读取头版全部栏目原文。 - 结合原文提炼要闻,写入当前项目目录一份 Markdown(文件名如
时事新报_YYYY-MM-DD_要闻总结.md):
- 标题:报纸名 + 日期(西历),并尽量从报头/正文辨明纪年(如「宣统三年六月十七日」「民国元年」)。
- 档案链接:在开头与结尾都附上link,方便用户自行点开影印原版核对。
- 要闻条目:按栏目标题/主题归纳,每条给一两句关键信息;优先突出头版社论、内阁/政府、外交、重大案件、本地(上海)要事。
- OCR 提醒:民国繁体影印 OCR 质量参差,部分人名/地名/数字有缺漏,注明「部分专名依史实校读;引用请核对《申报》或一档馆档案」。对明显残损、无法辨识的栏目,如实标注「残损难辨」。 - 用
present_files展示生成的 Markdown 总结。
Key Implementation Details
- 停刊判定:East View 对创办前/停刊后/未收录日期的
getDocumentContents直接返回 HTTP 404(已实测 1850/1899/2000 等年份均 404,而 1911/1913/1920 等有效年份正常)。因此脚本以 urllib 抛出的HTTPError 404作为「停刊」信号,可靠且无需维护日期表。 e=参数:East View 的检索/剪载参数,对历史日期稳定有效,原样保留在脚本常量E中;拼接档案link时直接&{E},避免重复e=前缀。- 栏目提取:TOC 用正则
data-section-oid="([^"]+)"取全部栏目 id(形如ssxbYYYYMMDD-01.1.N),逐栏目调getSectionText解码;每个栏目开头的「为什么这份文本可能存在错误?修正此文本」是 OCR 纠错界面冗余文字,已剔除。 - 仅取头版(第 01 版):要闻集中于头版;脚本默认只抓
-01版,控制输出规模。如用户需要后续版面,可手动改PAGE常量或后续扩展。 - 请求重试:
fetch()对超时/连接错误自动重试 3 次;HTTP 4xx/5xx 不重试、原样上抛。 - 纯标准库:脚本仅用
urllib/re/html/json/argparse/datetime,无需pip install。
Resources
scripts/fetch_ssxb.py— 主脚本:解析日期 → 抓 TOC(404=停刊)→ 抓解码头版各栏目 → 写 raw 文件 → 打印 JSON 状态。
Notes
- 该报约 1907 年创刊、1949 年前后停刊;CRL 档案主要覆盖此区间,区间内偶有扫描缺期也会以 404 表现为「停刊」,属正常。
- 链接中的
e=参数较长,复制给用户时整段保留即可,无需修改。 - 如需把多天要闻横向对比,或对某一栏目做逐句点校、对照《申报》同期,可在总结完成后追加处理。