Files
atlas/sreweekly-digest/SKILL.md

68 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: sreweekly-digest
description: 抓取 SRE Weekly 每期分享文章导出 markdown。提到 sreweekly 时使用。
author: Hermes Agent
license: MIT
version: 1.0.0
category: custom
last_updated: "2026-09-10"
metadata:
hermes:
tags: [rss, sreweekly, markdown, digest]
related_skills: [blogwatcher-daily, llm-provider-billing]
---
# SRE Weekly Digest
抓取 [SRE Weekly](https://sreweekly.com) 每期内容,把每期分享的文章逐篇导出为 Markdown 文件,用 manifest.json 记录每期状态。**脚本只做解析与提取,不发邮件**。
## When to Use
- 用户提到 sreweekly.com / SRE Weekly 期刊 / sreweekly 脚本,要求抓取、提取、检查或导出
- 需要手动跑一次扫描/提取(`--scan` / `--extract` / `--status`)
- 想看某期分享了哪些文章、某篇文章的链接/作者/简介
## 关键事实
- **脚本**:本技能目录 `scripts/sreweekly.py`(绝对路径 `~/.hermes/skills/custom/sreweekly-digest/scripts/sreweekly.py`,软链到 atlas;单文件,依赖 feedparser)
- **数据目录**:`~/Workspace/nexus/sreweekly/`(html/ 存每期原始 HTML,markdown/<期号>/ 存每篇一个 md,manifest.json 记状态;README.md 有完整说明)
- **核心发现**:SRE Weekly 的 RSS feed 在 `content:encoded` 字段自带每期完整 HTML(实测最近 5 期全量)——**不用再抓每期页面**,直接从 feed 拿内容
## 命令速查
```bash
S=~/.hermes/skills/custom/sreweekly-digest/scripts/sreweekly.py
# 或在本技能目录下: S=scripts/sreweekly.py
python3 $S # 扫描 feed → 新期存 html/ + 登记 manifest(幂等去重)
python3 $S --check # 输出 NEW:533,532 或 NONE
python3 $S --extract pending # 提取所有未处理期
python3 $S --extract 533 # 指定期 / latest / all(已提取的需 --force 覆盖)
python3 $S --extract 433..464 # 期号区间(缺失的期告警跳过)
python3 $S --status # 状态表(期号/日期/HTML/提取/文章数)
# 可选: --feed URL / --dir PATH / --force(数据目录默认 ~/Workspace/nexus/sreweekly/)
```
- 所有命令**幂等**:重复扫描不重复入库,重复提取自动跳过已提取的期
- 提取粒度:每篇文章一个 md(标题 / 期号日期 / 作者 / 原文链接 / 简介,含 blockquote 引用渲染)
## 页面/HTML 结构(解析器依据)
```
<div class="sreweekly-sponsor-message">…赞助商…</div> ← 自动跳过
<div class="sreweekly-entry">
<div class="sreweekly-title"><a href="文章URL">标题</a></div>
<div class="sreweekly-description">
<p>简介…</p> <blockquote><p>引用…</p></blockquote>
<p>&nbsp;&nbsp;<small>作者</small></p>
</div>
</div>
```
## 坑(已踩过)
- 标签间的纯空白(换行/缩进)会混进简介文本:解析时必须跳过 whitespace-only data,并在紧邻 `\n> `/`\n\n` 结构标记时 lstrip 前导空白,否则 blockquote 会渲染成 `> \n文字`(引用标记与正文断行)
- 段落后紧跟 blockquote 需要补空行(CommonMark 下无空行会被当成段落续行)
- 标题 slug 文件名保留 CJK(`\w` + unicode),超长截断 70 字符,前导序号保证顺序
- manifest 期号从链接正则 `sre-weekly-issue-(\d+)` 提取,缺失时回退最后一段路径