关于 coverage-tracker
coverage-tracker 是用于检查指定关键词是否出现在近期新闻报道中的技能。它结合带日期的文章搜索、基于关键词含义的判断和已存决策,避免重复提醒。
主要功能
- 01搜索指定关键词的近期文章
- 02依据关键词含义筛选匹配项
- 03按既定结论分类报道
- 04保存决策并抑制重复提醒
适用场景
- 01检查公司或产品的近期报道
- 02过滤通用词义或错误实体匹配
- 03通过 Agent 定期运行报道检查
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ elvisun/ newsjack --skill coverage-tracker安装后在 Claude Code 中输入/coverage-tracker确认已加载。
详细介绍
覆盖跟踪器
跟踪已配置的关键词是否出现在真实报道中。保持简单:news-search 收集带日期的文章证据,你根据关键词的含义摘要去重并作出判断,CLI 只存储配置以及已见状态/提醒状态。
这不是 newsjack-detector。不要评估新闻劫持机会、生成角度、评估立场,也不要使用监控配置文件。
运行模式
- 全功能模式: 在 Claude Code、Codex、OpenClaw、Hermes 或其他具备 shell、文件系统、网络和本地 CLI 访问能力的 Agent 执行环境中使用此模式。全功能模式可以读取跟踪器配置、检查 SQLite 已见状态、记录判断并抑制重复提醒。
- 受限模式: 在 Claude.ai chat、ChatGPT chat、Claude Cowork 或任何无法访问 shell/文件系统/CLI 的受限运行环境中使用此模式。不要尝试使用
curl、npm或按需安装 CLI。根据粘贴或可搜索的证据,执行一次手动覆盖检查,并说明没有使用跟踪器配置、SQLite 状态或重复提醒抑制。
在判断自己处于受限模式之前,请先检查是否已安装 newsjack。 它以预构建的捆绑二进制文件形式提供——运行它不需要 Go、编译器或任何构建/安装步骤。绝不要查找 Go 工具链,也绝不要在先执行此检查之前就宣布 CLI“缺失”或告知用户他们需要“Go 环境”:
- 运行
newsjack --version。如果它输出版本号,则你处于全功能模式——所有命令都使用普通的newsjack ...。 - 如果
newsjack不在PATH中,请尝试捆绑位置~/.newsjack/bin/newsjack --version。如果它输出版本号,则在下文所有位置使用该完整路径替代newsjack。 - 只有在两种方式都失败(并且你确实没有 shell)的情况下,你才处于受限模式。
捆绑的二进制文件几乎总是已经安装——假设处于全功能模式并进行验证,不要假设它缺失。
工作流
在受限模式下,跳过 CLI 状态步骤,并执行以下操作:
- 如果尚未提供,请询问关键词、关键词的含义、回溯时间范围以及任何排除条件。
- 优先使用粘贴的链接。如果有搜索工具可用,请搜索关键词并添加时间范围限制;尽可能保留带日期和来源信息的文章证据。
- 根据 URL/标题/媒体/日期,对明显的重复项去重。
- 使用下文的判定结果对每项进行分类。
- 返回简短的行内报告,列出新的可能报道、过滤后的数量,并说明处于受限模式,无法抑制重复提醒。
在全功能模式下,运行持久化工作流:
-
查找跟踪器。
- 如果用户提供了 slug,运行
newsjack coverage status <slug>。 - 如果在源代码检出目录中工作,优先使用
bin/newsjack。 - 如果未提供 slug,除非本地上下文已明确指出,否则询问要运行哪个跟踪器。
- 读取返回的
config_path。
- 如果用户提供了 slug,运行
-
搜索每个关键词。
-
从系统读取当前日期(例如,运行
date);不要凭记忆填写。将该日期减去配置中的lookback_days,计算since_date,默认值为2。 -
对每个关键词,使用以下精确格式调用
news-search:"keyword" after:YYYY-MM-DD -
如果关键词有别名,则以同样方式搜索每个别名,但保留关联的原始关键词条目。
-
保留
news-search提供的带日期和来源信息的文章字段:title、url、outlet、author、published_at,以及可用时的摘要/概要。
-
-
在使用 LLM 之前进行去重并检查已存储的判断。
-
先对完全相同的规范 URL 去重,然后根据标题/媒体/日期对明显的同一文章重复项去重。
-
仅由于 CLI 助手需要读取文件,才创建一个最简候选项 JSON 文件。将其放在临时位置,或者放在带时间戳的运行文件夹中(如果你的执行环境通常会保留运行产物):
{ "items": [ { "keyword": "profound", "title": "文章标题", "url": "https://...", "outlet": "媒体", "author": "作者或 null", "published_at": "2026-06-05T12:00:00Z", "snippet": "搜索摘要或简介" } ] } -
运行:
newsjack coverage check <slug> --input candidates.json -
除非用户明确要求重新审核,否则不要重新分类
known_items。使用其prior_decision统计已过滤/已知结果,并抑制重复提醒。 -
仅分类
unknown_items。
-
-
让大模型分类未知条目。
- 将关键词的
means字段作为实体匹配的依据。 - 排除普通词语用法和错误实体,尤其是
profound这类有歧义的关键词。 - 不要仅凭标题/摘要中出现关键词就发出提醒。如果摘要无法明确判断结果,请先阅读文章再决定。
使用以下判定结果:
real_feature:文章主要围绕目标实体/产品/人物展开。发出提醒。substantive_mention:在段落层面有实质性提及,但不是专题报道。保存,通常不提醒。passing_mention:仅简短提及。保存,不提醒。wrong_entity:关键词指的是其他对象。保存,不提醒。junk:SEO 内容、采集器内容、重复的落地页、招聘信息、文档/帮助页面或非新闻内容。保存,不提醒。uncertain:证据不足。保存,不提醒。
- 将关键词的
-
仅记录新分类的未知条目。 如果没有
unknown_items,跳过coverage record,并根据coverage check结果汇报。如果分类了新条目,请编写 CLI 所需的最简
decisions.json:{ "items": [ { "keyword": "profound", "title": "Article title", "url": "https://...", "outlet": "Outlet", "author": "Author or null", "published_at": "2026-06-05T12:00:00Z", "verdict": "real_feature", "confidence": "high", "alert": true, "rationale": "Why this is about the intended keyword." } ] }包含所有新分类的未知条目,而不仅是需要提醒的条目。保存未通过的结果后,后续运行即可通过
coverage check跳过它们。 -
保存判定并抑制重复提醒。
newsjack coverage record <slug> --input decisions.json仅在已为运行过程记录创建运行文件夹时才添加
--run-dir RUN_DIR。直接读取命令的 JSON 标准输出。除非用户或运行环境明确要求生成产物,否则不要编写record.json。只有new_alerts中的文章才是新近可提醒的;已提醒过的 URL 不得再次提醒。 -
向用户汇报结果。 SQLite 是持久记录。不要另写报告文件;根据
coverage check的结果,以及运行时coverage record的结果,直接向用户撰写简短易读的消息:- 如果
new_alerts非空,先列出新发现的真实报道。 - 如果没有新提醒,说明没有新确认的报道。
- 附上简短的运行摘要:搜索的关键词、起始日期、候选数量、跳过的已知条目数、新判定条目数、新提醒数。
- 附上一行简洁的“已过滤”统计,按判定结果计数,并包括已知条目的先前判定;不要逐条罗列所有无效内容。
- 使用可点击的链接。
此技能旨在按计划无人值守运行,因此消息必须完整独立,用户无需打开任何文件即可了解本次运行结果。
- 如果
输出规范
- 不要编造发布日期、媒体或作者。如果
news-search无法找回日期,请谨慎分类。 - 不要使用新闻源头或时效性门槛;这不是新闻借势机会扫描。
- 不要调用
angle-generator、journalist-fit-check或meanest-editor。 - 不要安装原生 cron。定期运行应由 Agent 运行环境负责。