coverage-tracker
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCoverage Tracker
覆盖追踪器
Track whether configured keywords appeared in real coverage. Keep this simple: collects dated article evidence, you dedupe and judge with the keyword's meaning snippet, and the CLI only stores config plus seen/alert state.
news-searchThis is not . Do not score newsjacking opportunities, generate angles, assess standing, or use monitor profiles.
newsjack-detector追踪配置的关键词是否出现在有效报道中。保持简洁:收集带日期的文章证据,你可以借助关键词的含义片段进行去重和判断,CLI仅存储配置以及已查看/提醒状态。
news-search这不是。请勿为新闻劫持机会评分、生成角度、评估立场或使用监控配置文件。
newsjack-detectorRuntime Mode
运行模式
- Full Mode: Use this in Claude Code, Codex, OpenClaw, Hermes, or another capable agent harness with shell, filesystem, network, and local CLI access. Full Mode can read tracker config, check SQLite seen-state, record decisions, and suppress repeat alerts.
- Limited Mode: Use this in Claude.ai chat, ChatGPT chat, Claude Cowork, or any restricted runtime without shell/filesystem/CLI access. Do not attempt ,
curl, or on-demand CLI installation. Run a one-off manual coverage check from pasted/searchable evidence and disclose that no tracker config, SQLite state, or repeat suppression was used.npm
Before you decide you're in Limited Mode, check whether is installed. It ships as a prebuilt, bundled binary — you do not need Go, a compiler, or any build/install step to run it. Never look for a Go toolchain, and never declare the CLI "missing" or tell the user they need a "Go environment" without running this check first:
newsjack- Run . If it prints a version, you're in Full Mode — use plain
newsjack --versionfor every command.newsjack ... - If isn't on
newsjack, try the bundled locationPATH. If that prints a version, use that full path in place of~/.newsjack/bin/newsjack --versioneverywhere below.newsjack - Only if both fail (and you genuinely have no shell) are you in Limited Mode.
The bundled binary is almost always already installed — assume Full Mode and verify, don't assume it's missing.
- 完整模式: 在Claude Code、Codex、OpenClaw、Hermes或其他具备Shell、文件系统、网络和本地CLI访问权限的智能代理环境中使用此模式。完整模式可读取追踪器配置、检查SQLite已查看状态、记录决策并抑制重复提醒。
- 受限模式: 在Claude.ai聊天、ChatGPT聊天、Claude Cowork或任何无Shell/文件系统/CLI访问权限的受限运行环境中使用此模式。请勿尝试执行、
curl或按需CLI安装。通过粘贴/可搜索的证据进行一次性手动覆盖检查,并告知用户未使用追踪器配置、SQLite状态或重复抑制功能。npm
在判定处于受限模式之前,请检查是否已安装。 它以预构建的捆绑二进制文件形式提供——你无需Go语言、编译器或任何构建/安装步骤即可运行。在执行以下检查之前,切勿寻找Go工具链,切勿声明CLI“缺失”或告知用户需要“Go环境”:
newsjack- 运行。如果输出版本信息,则处于完整模式——所有命令均使用
newsjack --version格式。newsjack ... - 如果不在
newsjack中,尝试在捆绑位置PATH运行。如果输出版本信息,请在以下所有命令中使用该完整路径替代~/.newsjack/bin/newsjack --version。newsjack - 只有当两者都失败(且确实无Shell权限)时,才处于受限模式。
捆绑二进制文件几乎总是已预先安装——默认假设处于完整模式并进行验证,不要默认认为它缺失。
Workflow
工作流程
In Limited Mode, skip the CLI state steps and:
- Ask for the keyword, what it means, lookback window, and any exclusions if they are not already present.
- Use pasted links first. If search tools are available, search the keyword plus a recency bound and keep dated, attributed article evidence when available.
- Dedupe obvious repeats by URL/title/outlet/date.
- Classify each item with the verdicts below.
- Return a short inline report with new likely coverage, filtered counts, and a Limited Mode caveat that repeat suppression was unavailable.
In Full Mode, run the persistent workflow:
-
Find the tracker.
- If the user gave a slug, run .
newsjack coverage status <slug> - If working in a source checkout, prefer .
bin/newsjack - If no slug is given, ask which tracker to run unless local context makes it obvious.
- Read the returned .
config_path
- If the user gave a slug, run
-
Search each keyword.
-
Read the current date from the system (e.g. run); do not recall it from memory. Compute
dateas that date minussince_datefrom the config, defaulting tolookback_days.2 -
For each keyword, callwith exactly:
news-searchtext"keyword" after:YYYY-MM-DD -
If the keyword has aliases, search each alias the same way, but keep the original keyword entry attached.
-
Keep dated, attributed article fields from:
news-search,title,url,outlet,author, and snippet/summary when available.published_at
-
-
Dedupe and check stored decisions before using the LLM.
-
Dedupe exact canonical URLs first, then obvious same-article duplicates by title/outlet/date.
-
Create a minimal candidate JSON file only because the CLI helper consumes a file. Put it in a temporary location, or in a timestamped run folder if your harness normally keeps run artifacts:json
{ "items": [ { "keyword": "profound", "title": "Article title", "url": "https://...", "outlet": "Outlet", "author": "Author or null", "published_at": "2026-06-05T12:00:00Z", "snippet": "Search snippet or summary" } ] } -
Run:bash
newsjack coverage check <slug> --input candidates.json -
Do not reclassifyunless the user explicitly asks for a fresh review. Use their
known_itemsto count filtered/known results and suppress repeat alerts.prior_decision -
Classify only.
unknown_items
-
-
LLM classify unknown items.
- Use the keyword's field as the authority for entity matching.
means - Reject generic-word usage and wrong entities, especially for ambiguous keywords like .
profound - Do not alert from title/snippet keyword presence alone. When the snippet leaves the verdict unclear, read the article before deciding.
Use these verdicts:- : the article is substantially about the intended entity/product/person. Alert.
real_feature - : meaningful paragraph-level mention, but not a feature. Save, normally no alert.
substantive_mention - : brief mention only. Save, no alert.
passing_mention - : the keyword refers to something else. Save, no alert.
wrong_entity - : SEO, scraper, duplicate landing page, job post, docs/help page, or non-news. Save, no alert.
junk - : insufficient evidence. Save, no alert.
uncertain
- Use the keyword's
-
Record only newly classified unknown items. If there are no, skip
unknown_itemsand report from thecoverage recordresult.coverage checkIf you classified new items, write the minimumneeded by the CLI:decisions.jsonjson{ "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." } ] }Include every newly classified unknown item, not only alerts. Saving rejects lets future runs skip them through.coverage check -
Persist decisions and suppress repeat alerts.bash
newsjack coverage record <slug> --input decisions.jsonAddonly when you already created a run folder for harness provenance. Read the command's JSON stdout directly. Do not write--run-dir RUN_DIRunless the user or harness explicitly wants artifacts. Only articles inrecord.jsonare newly alertable; previously alerted URLs must not be re-alerted.new_alerts -
Deliver the result to the user. SQLite is the durable record. Do not write a separate report file; compose a short, readable message straight to the user fromand, when run,
coverage check:coverage record- If is non-empty, lead with the new real coverage items.
new_alerts - If there are no new alerts, say there is no new confirmed coverage.
- Include a short run summary: keywords searched, since date, candidate count, skipped-known count, newly judged count, new alert count.
- Include a quiet "Filtered" line with counts by verdict, including prior decisions from known items, not a dump of every junk item.
- Use clickable links.
This skill is meant to run unattended on a schedule, so the message must stand alone — the user should not have to open any file to understand the run. - If
在受限模式下,跳过CLI状态步骤并执行以下操作:
- 请求用户提供关键词、关键词含义、回溯窗口以及任何排除条件(如果尚未提供)。
- 优先使用粘贴的链接。如果有搜索工具可用,搜索关键词加上时间范围限制,并尽可能保留带日期、有来源的文章证据。
- 通过URL/标题/媒体/日期去除明显重复的内容。
- 使用以下判定标准对每个条目进行分类。
- 返回简短的内联报告,包含新的疑似覆盖内容、过滤后的统计数据,以及受限模式下无法进行重复抑制的说明。
在完整模式下,运行持久化工作流程:
-
找到追踪器。
- 如果用户提供了slug,运行。
newsjack coverage status <slug> - 如果在源代码检出目录中工作,优先使用。
bin/newsjack - 如果未提供slug,询问用户要运行哪个追踪器,除非本地上下文已明确。
- 读取返回的。
config_path
- 如果用户提供了slug,运行
-
搜索每个关键词。
-
从系统读取当前日期(例如运行命令);不要凭记忆回忆日期。根据配置中的
date计算lookback_days,默认值为since_date,即当前日期减去回溯天数。2 -
对每个关键词,调用时严格使用以下格式:
news-searchtext"keyword" after:YYYY-MM-DD -
如果关键词有别名,以相同方式搜索每个别名,但保留原始关键词条目关联。
-
保留返回的带日期、有来源的文章字段:
news-search、title、url、outlet、author,以及可用的片段/摘要。published_at
-
-
在使用LLM之前进行去重并检查已存储的决策。
-
首先去除完全相同的规范URL,然后通过标题/媒体/日期去除明显的同一文章重复项。
-
创建一个最小化的候选JSON文件,仅因为CLI助手需要读取文件。将其放在临时位置,或者如果你的代理环境通常保留运行 artifacts,则放在带时间戳的运行文件夹中:json
{ "items": [ { "keyword": "profound", "title": "Article title", "url": "https://...", "outlet": "Outlet", "author": "Author or null", "published_at": "2026-06-05T12:00:00Z", "snippet": "Search snippet or summary" } ] } -
运行:bash
newsjack coverage check <slug> --input candidates.json -
除非用户明确要求重新审核,否则不要重新分类。使用它们的
known_items统计过滤/已知结果并抑制重复提醒。prior_decision -
仅对进行分类。
unknown_items
-
-
LLM分类未知条目。
- 使用关键词的字段作为实体匹配的权威依据。
means - 拒绝通用词汇用法和错误实体,尤其是对于这类歧义关键词。
profound - 不要仅根据标题/片段中的关键词出现情况发出提醒。当片段无法明确判定时,先阅读文章再做决定。
使用以下判定结果:- :文章主要围绕目标实体/产品/人物展开。发出提醒。
real_feature - :有意义的段落级提及,但并非核心内容。保存,通常不发出提醒。
substantive_mention - :仅简短提及。保存,不发出提醒。
passing_mention - :关键词指代其他事物。保存,不发出提醒。
wrong_entity - :SEO内容、爬虫页面、重复着陆页、招聘信息、文档/帮助页面或非新闻内容。保存,不发出提醒。
junk - :证据不足。保存,不发出提醒。
uncertain
- 使用关键词的
-
仅记录新分类的未知条目。 如果没有,跳过
unknown_items并根据coverage record的结果生成报告。coverage check如果分类了新条目,编写CLI所需的最小化:decisions.jsonjson{ "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 -
持久化决策并抑制重复提醒。bash
newsjack coverage record <slug> --input decisions.json仅当你已为代理环境溯源创建了运行文件夹时,才添加。直接读取命令的JSON标准输出。除非用户或代理环境明确需要 artifacts,否则不要写入--run-dir RUN_DIR。只有record.json中的文章是新的可提醒内容;之前已提醒过的URL不得再次提醒。new_alerts -
向用户交付结果。 SQLite是持久化记录。不要编写单独的报告文件;直接根据(以及运行时的
coverage check)向用户撰写简短、易读的消息:coverage record- 如果非空,首先列出新的有效覆盖条目。
new_alerts - 如果没有新提醒,告知用户没有新的已确认覆盖内容。
- 包含简短的运行摘要:搜索的关键词、起始日期、候选条目数量、跳过的已知条目数量、新判定条目数量、新提醒数量。
- 包含一行简洁的“已过滤”统计,按判定结果分类统计数量,包括已知条目的先前决策,不要列出每个垃圾条目。
- 使用可点击链接。
此技能旨在按计划无人值守运行,因此消息必须独立完整——用户无需打开任何文件即可理解运行结果。 - 如果
Output Discipline
输出规范
- Do not invent publication dates, outlets, or authors. If cannot recover a date, classify cautiously.
news-search - Do not use story-origin or freshness gates; this is not a newsjack opportunity scan.
- Do not call ,
angle-generator, orjournalist-fit-check.meanest-editor - Do not install native cron. Recurrence belongs to the agent harness.
- 不要编造发布日期、媒体或作者。如果无法获取日期,请谨慎分类。
news-search - 不要使用故事来源或新鲜度门槛;这不是新闻劫持机会扫描。
- 不要调用、
angle-generator或journalist-fit-check。meanest-editor - 不要安装原生cron。周期性运行应由代理环境负责。