mcpField
W
weekly-digest

weekly-digest

github.com/glebis生产力40191 次安装1 天前更新
代码仓库

关于 weekly-digest

weekly-digest 是一项将行业研究整理为评分摘要的技能,适用于跟踪特定主题的研究者和从业者。它按范围、检索、来源核验和评分流程筛选候选内容,并生成原始清单、精选摘要及可选 HTML 报告。

主要功能

  1. 01按主题与地域范围检索近期信息
  2. 02核验候选内容的来源
  3. 03按五项指标评分并排序
  4. 04生成原始清单、精选摘要和失败日志
  5. 05可选导出到 Obsidian 并生成 HTML 报告

适用场景

  1. 01每周跟踪指定行业主题
  2. 02比较候选新闻的相关性与技术深度
  3. 03将摘要保存到 Obsidian
  4. 04查看检索来源与处理失败记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/glebis/claude-skills --skill weekly-digest

安装后在 Claude Code 中输入/weekly-digest确认已加载。

附带文件settings.example.jsonsettings.json

详细介绍

每周摘要

一个从研究到发布的流程,可生成经过评分和来源核验的行业摘要。工作流分为七个阶段:初始化、范围界定、研究、核验、评分、输出和呈现。

阶段 0:初始化

读取 ~/.claude/skills/weekly-digest/settings.json。可能有两种状态:

状态 A — 文件不存在,或 subjects 为空且文件没有 version 字段(全新安装): 使用 AskUserQuestion 工具,通过一个结构化提示一次性收集所有设置输入,进行初始配置:

AskUserQuestion({
  questions: [
    {
      question: "What topic do you want to track weekly?",
      header: "Topic",
      options: [
        { label: "Agent orchestration", description: "Multi-agent frameworks, enterprise deployments, governance" },
        { label: "Design innovation", description: "Design tools, AI-design convergence, award-winning products" },
        { label: "Climate tech", description: "Clean energy, carbon capture, sustainability startups" },
        { label: "AI regulation", description: "EU AI Act, governance frameworks, copyright disputes" }
      ],
      multiSelect: false
    },
    {
      question: "Any geographic focus for sources?",
      header: "Geography",
      options: [
        { label: "Global (no filter)", description: "Include sources from all regions" },
        { label: "Europe, UK, Asia — not US", description: "Deprioritize American sources" },
        { label: "Europe only", description: "EU and UK sources preferred" },
        { label: "Asia-Pacific", description: "Japan, Korea, China, Singapore, India, Australia" }
      ],
      multiSelect: false
    },
    {
      question: "How many top items should the digest include?",
      header: "Digest size",
      options: [
        { label: "5 items (Recommended)", description: "Good balance of depth and brevity" },
        { label: "3 items", description: "Quick scan, only the best" },
        { label: "10 items", description: "Comprehensive coverage" }
      ],
      multiSelect: false
    },
    {
      question: "Where should output files go?",
      header: "Output",
      options: [
        { label: "output/ (Recommended)", description: "Relative to current working directory" },
        { label: "~/Digests/", description: "Home directory, shared across projects" }
      ],
      multiSelect: false
    }
  ]
})

如果你从记忆或个人资料中了解用户的情况,请调整示例选项以匹配其背景。用户始终可以选择“其他”,为任意问题输入自定义值。

收到回答后:

  1. 将主题映射为 output_prefix 的 slug(小写、用连字符分隔、不含空格,例如:“Agent orchestration” → “agent-orch”)
  2. 将地理关注范围映射为 geo_focus(选择“全球”时为 null,其他情况为字符串)
  3. 从摘要大小的回答中解析出 top_n(3、5 或 10)
  4. 使用所有默认值和新主题写入完整的设置文件:
    { "version": 1, "top_n": 5, "target_candidates": 20, "lookback_days": 7,
      "output_dir": "output", "language": "en",
      "weights": { "novelty": 1, "relevance": 1, "slopiness": 1, "technical": 1, "feasibility": 1 },
      "obsidian_vault": null, "subjects": [{ ... }] }
    
  5. 继续操作前,验证 output_dir 是否存在(如有需要则创建)。
  6. 确认:“已保存。运行 /weekly-digest add [topic] 可添加更多主题。”
  7. 使用新配置的主题继续进入阶段 1。

/weekly-digest add 也应使用相同的 AskUserQuestion 模式——询问主题、地理关注范围,并确认生成的 slug。

状态 B — 存在主题,且用户运行了 /weekly-digest(无参数): 依次运行所有主题。

当主题列表为空,但存在 version 字段(用户有意清空主题): 不要自动进行初始配置。回复:“未配置主题。使用 /weekly-digest add [topic] 添加主题。”

完整的设置架构请参阅技能目录中的 settings.example.json。

配置

设置位于 ~/.claude/skills/weekly-digest/settings.json。

设置架构
{
  "version": 1,
  "top_n": 5,
  "target_candidates": 20,
  "lookback_days": 7,
  "output_dir": "output",
  "language": "en",
  "weights": {
    "novelty": 1,
    "relevance": 1,
    "slopiness": 1,
    "technical": 1,
    "feasibility": 1
  },
  "obsidian_vault": null,
  "subjects": [
    {
      "topic": "agent orchestration",
      "geo_focus": "European, UK, Asian — not American",
      "output_prefix": "agent-orch"
    }
  ]
}

除 subjects 外,所有字段均为可选项——缺少的键将使用上述默认值。output_prefix 必须是小写且用连字符分隔的 slug(不含空格)。

管理主题
  • /weekly-digest config — 显示当前设置
  • /weekly-digest add [topic] — 交互式添加新的默认主题(询问地理关注范围和输出前缀)
  • /weekly-digest remove [topic] — 从默认主题中移除一个主题
  • /weekly-digest(无参数)— 依次运行所有默认主题,为每个主题生成单独的一组文件
  • /weekly-digest [topic] — 将单个主题作为一次性任务运行(忽略默认设置)
设置参考
键默认值功能
top_n5摘要中包含的条目数
target_candidates20研究阶段要寻找的候选条目数
lookback_days7搜索回溯的天数(会作为日期范围附加到查询中)
output_dir"output"生成文件的目录(相对于当前工作目录)
language"en"首选来源语言;非匹配语言的来源将降低优先级
weightsall 1.0总分公式中各参数的乘数
obsidian_vaultnullObsidian 知识库的路径;设置后,摘要会复制到 {vault}/Digests/YYYYMMDD-{prefix}.md

阶段 1:范围界定

从用户的请求中解析:

  • 主题(必填,或从设置中获取):例如“Agent orchestration”“quantum computing”“climate tech”
  • 地理关注范围(可选,或从设置中获取):例如“欧洲、英国、亚洲——不包括美国”。默认:不筛选

自动检测当天日期,用于文件命名(YYYYMMDD 格式)。

如果用户给出的主题比较模糊,例如“AI”,请要求他们缩小范围——过于宽泛的主题会产生泛泛的结果。

阶段 2:调研

运行 4-6 个并行 WebSearch 查询,从不同角度覆盖主题。目标是找到 target_candidates 个不重复条目(默认 20 个)。使用 lookback_days 限定时效范围,并在查询中加入配置时间范围的月份和年份。查询结构如下:

查询模式可查找的内容
[topic] breakthrough announcements [month] [year]重大发布、产品推出
[topic] startup funding [year] [geo]融资轮次、新参与者
[topic] open source release [year]开源框架、工具
[topic] research paper arxiv [year]学术贡献
[topic] enterprise production [year] [geo]实际部署、案例研究
[topic] regulation governance [year] [geo]政策、合规、标准

如果指定了地理侧重点,请在查询中加入地理词语,并增加一个专门的区域性查询。设置了 language 时,优先选择该语言的来源。

对搜索结果去重。力求多样化——如果候选项全都来自同一种来源类型(例如,全是市场预测或新闻稿),则应舍弃该候选池。检查是否至少涵盖以下 6 个类别中的 3 个。

如果候选项少于 15 个: 去掉年份/月份筛选条件,放宽一个查询后重新运行。如果仍少于 15 个,则使用现有结果继续,并在原始文件头部注明数量不足。

阶段 3:来源核验

根据以下预筛选信号,选出 8-10 个候选项进行核验:选择搜索摘要中至少包含以下一项的条目:具体的人名/组织名、具体日期、版本号或金额。降低仅使用最高级表述或模糊措辞的条目的优先级。

使用 WebFetch 检查一手来源是否存在内容注水迹象:

警示信号(内容注水程度高):

  • 没有具名人士的直接引语
  • 没有具体日期、交易条款或技术细节
  • 采用叙事性文章结构,但没有出处说明
  • 使用“挑选式指标”,且未提供核验链接
  • 将未来日期作为事实呈现(推测性内容)
  • 使用“即将蓄势待发”“注定将带来革命性变化”“颠覆性”等措辞

积极信号(内容注水程度低):

  • 具名高管的直接引语
  • 具体日期、金额、版本号
  • 官方新闻稿、政府来源、arXiv
  • 附有地点和日期的会议公告
  • 提供具名客户和指标的案例研究

如果二手来源存在内容注水迹象,但背后的事件可能确有其事,请核查一手来源(公司博客、官方新闻稿、arXiv 摘要)。对最佳可用来源评分,而不是对质量最差的来源评分。

如果 WebFetch 失败(付费墙、403、超时、内容为空):在评分备注中注明失败情况,将内容注水程度保守地评为 5(质量未知),然后继续。将失败的 URL 记录在失败日志中。

阶段 4:评分

对每个候选项的以下五个参数按 0-10 分评分:

参数衡量内容0 分表示10 分表示
新颖性新颖程度或是否前所未有旧闻、渐进式改进世界首创、范式转变
相关性与用户的相关程度无关领域对其工作直接有用
内容注水程度来源内容注水的可能性扎实的一手来源纯 AI 注水内容或 SEO 填充内容
技术性技术深度没有技术内容深入的架构、参考实现
可行性内容属实还是推测科幻、空中楼阁已在生产环境中交付

**内容注水程度约定:**0 = 已核验、可信的来源。10 = 纯注水内容。公式会反转该值,因此内容注水程度低的条目得分更高。

总分公式
Overall = (w₁·Novelty + w₂·Relevance + w₃·(10 - Slopiness) + w₄·Technical + w₅·Feasibility) / (w₁ + w₂ + w₃ + w₄ + w₅)

settings.json 中的权重映射到公式符号如下:

  • w₁ = weights.novelty
  • w₂ = weights.relevance
  • w₃ = weights.slopiness
  • w₄ = weights.technical
  • w₅ = weights.feasibility

默认值:全部为 1.0,因此采用简单平均。

相关性评分基准

相关性取决于用户是谁。请查看记忆/个人资料以了解背景。如果没有可用的个人资料,请对技术从业者受众使用以下基准:

  • 10 — 提供可立即使用的可运行代码、API 或参考实现
  • 7 — 介绍可在一周内采用的技术或工具
  • 5 — 提供有一定可操作启示的趋势信息
  • 3 — 有趣,但与大多数从业者关系不大
  • 0 — 仅包含市场分析或预测,没有可操作的内容

第 5 阶段:输出文件

在配置的 output_dir(默认为 output/,相对于 cwd)中生成文件。如有需要,请创建该目录;如果创建失败(权限不足、路径无效),请在写入前中止并清楚说明错误。

所有运行均适用的 slug 规则: 每次运行都有一个 {prefix} slug。对于基于设置的主题,使用主题配置中的 output_prefix。对于单主题的一次性运行,按照第 0 阶段第 3 步中的同一规则,从主题生成 slug(小写、用连字符分隔、不含空格,例如 "quantum computing" → "quantum-computing")。

文件命名(始终使用前缀):

  • YYYYMMDD-{prefix}-raw.md
  • YYYYMMDD-{prefix}-digest.md
  • YYYYMMDD-{prefix}-failures.md(仅在存在失败时)
  • YYYYMMDD-{prefix}-report.html(来自第 6 阶段)
原始文件(*-raw.md)

包含所有候选项(目标:20 项以上),每项包含:

  • 标题和 1~2 句描述
  • 评分表(全部 5 个参数及总分;非默认权重也须列出)
  • 说明评分的备注
  • 来源链接
  • 在底部按总分排序的排名
摘要文件(*-digest.md)

按总分选出的前 top_n 项(默认为 5 项),每项包含:

  • 标题
  • 2 句摘要(内容翔实,不夸大;必须包含具体事实)
  • 行内显示全部 5 个参数的评分
  • 来源链接

在顶部附上简短说明,解释筛选方法并指向原始文件。

失败日志(*-failures.md)

在单独的文件中记录:

  • WebFetch 失败的 URL(含错误类型)
  • 返回结果少于 5 条的查询
  • 因空洞度 > 8 而剔除的项目
  • 任何数量不足的备注(找到的候选项 < 目标数)

仅在存在失败日志时创建此文件。

差异模式

如果同一主题存在先前的摘要文件,请进行比较。查找先前摘要文件的方法:列出 output_dir 中所有匹配 *-{prefix}-digest.md 的文件,并解析 YYYYMMDD 日期前缀。如果当天已有文件(同一天重新运行),则将其视为先前版本,并在写入新文件前将其重命名为 YYYYMMDD-{prefix}-digest.prev.md。否则,选择日期早于今天的最新文件。比较时:

  • 两次运行中都出现的项目 → 在新摘要中标记为持续出现
  • 仅在本次运行中出现的项目 → 标记为新增
  • 本次不再出现的项目 → 在原始文件页脚注明“曾排名,本次未再出现”
Obsidian 导出

如果 settings.json 中设置了 obsidian_vault,则在生成摘要文件后,将其复制到 {obsidian_vault}/Digests/YYYYMMDD-{prefix}.md(使用与输出文件相同的 {prefix} slug)。如有需要,请创建 Digests/ 目录。

第 6 阶段:呈现

调用 /tufte-report 技能生成 Tufte 风格的 HTML 报告。tufte-report 技能必须安装在 ~/.claude/skills/tufte-report/ — 如果不可用,请跳过此阶段并告知用户:“请从 github.com/glebis/claude-skills 安装 tufte-report 技能以生成 HTML 报告。”

报告应包含:

  1. 摘要卡片 — 将前 top_n 项作为带总分的排名卡片展示
  2. 详情部分 — 每项包含 2 句摘要,以及全部 5 个参数的横向评分条
  3. 完整候选项表格 — 按总分排列的所有候选项及其全部参数值
  4. 方法说明部分 — 来源如何验证、空洞度的含义及所用权重

将报告保存为 {output_dir}/YYYYMMDD-{prefix}-report.html,并在浏览器中打开。

示例调用

/weekly-digest agent orchestration
/weekly-digest climate tech, focus on European and Asian news
/weekly-digest config
/weekly-digest add quantum computing
/weekly-digest remove design innovation
/weekly-digest                          # runs all saved subjects

输出质量检查清单

提交结果前,请验证:

  • 原始文件中至少有 target_candidates 个条目(若不足,请注明)
  • 至少有 3 种不同的来源类型(新闻、学术、官方、资助)
  • 已通过 WebFetch 验证热门候选项的来源
  • 排名前 top_n 的条目中,没有任何条目的 slopiness > 6;如果有,请删除该条目并提升排名靠后的下一条。(WebFetch 失败导致 slopiness 为 5 的条目可以保留;只有 slopiness ≥ 7、明显粗劣的来源才会被拦截。)
  • 每个条目都有可用的来源链接
  • 2 句摘要包含具体事实,而非含糊的说法
  • 如果发生任何失败,已创建失败日志
  • 如果之前存在摘要,已添加差异标注
  • 如果已配置知识库路径,已完成 Obsidian 导出

评论

支持 Markdown