Files
atlas/sreweekly-digest/SKILL.md

3.3 KiB
Raw Permalink Blame History

name, description, author, license, version, category, last_updated, metadata
name description author license version category last_updated metadata
sreweekly-digest 抓取 SRE Weekly 每期分享文章导出 markdown。提到 sreweekly 时使用。 Hermes Agent MIT 1.0.0 custom 2026-09-10
hermes
tags related_skills
rss
sreweekly
markdown
digest
blogwatcher-daily
llm-provider-billing

SRE Weekly Digest

抓取 SRE Weekly 每期内容,把每期分享的文章逐篇导出为 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 拿内容

命令速查

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+) 提取,缺失时回退最后一段路径