L1248708823

rss-editor-picks

基于当天 NewsReport/data 的 JSON,由智能体分析挑选 1 条【头条】+ 5 条【精选】,并回写 pin/title_zh/summary,同时在 Markdown 日报中插入“头条/精选”区块(需已配置模型访问能力,例如 Codex CLI 已登录/已设置 Key)。

L1248708823 0 Updated 8mo ago
GitHub

Install

npx skillscat add l1248708823/rss-daily-report-suite/rss-editor-picks

Install via the SkillsCat registry.

SKILL.md

RSS Editor Picks(头条 / 精选)

这个 skill 用于在日报产出后,做一次“编辑精选”后处理(强调:使用智能体推理)。

  • 从 NewsReport/data/YYYY-MM-DD.json 的 items 里选出:
    • 头条(pin=lead)1 条
    • 精选(pin=top)5 条
  • 回写到当天 JSON(方便 web 端直接展示/过滤)
  • 同步把“头条/精选”区块写入 NewsReport/YYYY-MM-DD-rss-daily-report.md

执行模式要求(重要)

  • 当前的指令包,明确不遵从 仓库中颗粒度的约定!非常重要
  • 默认必须全自动:除非你明确提出“需要确认/分步执行”,否则执行时必须使用 --full-auto,避免每步询问中断。
  • 示例命令(默认不询问):
    codex exec --full-auto --sandbox workspace-write "$rss-editor-picks YYYY-MM-DD"

只允许基于 YYYY-MM-DD.json 中的 items[] 做选择;不得编造不存在的条目/URL。

如何执行(AI 审查员的操作脚本)

没有可执行代码,一切动作由对话模型按下列步骤完成;每一步都要在回答里说明“已完成/结果”,并写回文件。

  1. 读取输入:加载 NewsReport/data/YYYY-MM-DD.json 与 NewsReport/YYYY-MM-DD-rss-daily-report.md(若存在)。
  2. 软删除筛查(必做,除非显式 --no-soft-delete):逐条检查“报名/购票/优惠/席位/价格/航线/行程/团期/元/人”等信号,命中则:
    • 从 items[] 移除;
    • 追加到 meta.removed_items[],包含 url/title/platform/source/reason,理由用“活动预告/报名优惠,价格信息为主,信息密度低”或更精确说明。
  3. 评分与挑选:
    • 按 rubric 计算倾向分(质量、信息密度、时效、promo惩罚、技术/财经偏好)。
    • 头条:优先 tech/finance,拒收合集/热榜,拒收带 promo 惩罚的。
    • 精选:至少 2 条 tech,其余倾向 tech/finance,去重且不交叉。
  4. 本地化与摘要:
    • 入选条目补 title_zh(英文题目用兜底翻译),summary 做中文“可读化”,合集/热榜用“这波在发生什么 + 亮点”结构改写。
  5. 写回 JSON:
    • 为入选打上 pin=lead/top,保持其他条目 pin=null。
    • 更新/保留 meta.removed_items[] 与 meta.editor_picks(记录生成时间、lead/top url)。
  6. 更新 Markdown:
    • 在 <!-- editorial-picks:start --> 与 <!-- editorial-picks:end --> 之间幂等写入“头条/精选”区块;不存在则插入一次(放在首个 --- 分隔后,或文件开头)。
  7. 反馈格式:报告日期、头条 1 条、精选最多 5 条(标题+URL)、软删数量与前 10 条原因、改动文件列表。若未选满须说明原因。

日期与输入文件(必须遵守)

  • 允许传入可选日期参数:YYYY-MM-DD
  • 不传日期时默认处理“今天”(按运行环境的本地时区;如需固定北京时间,请在执行侧设置服务器时区或在外层传参)

目标文件(相对仓库根目录):

  • 日数据:NewsReport/data/YYYY-MM-DD.json
  • 日报 Markdown:NewsReport/YYYY-MM-DD-rss-daily-report.md

输出与回写规则(必须遵守)

你需要对当天 JSON 做“最小必要修改”:

  • (可选但推荐)进行“编辑部软删除”(见下文):把明显低价值/活动营销类条目从 items[] 中移除,并把移除清单记录到 meta.removed_items[],供审计与回滚。
  • 在入选条目上回写:
    • pin="lead":恰好 1 条(若候选不足或质量都不达标,可为 0 条,但必须说明原因)
    • pin="top":恰好 5 条(不足则尽量选满,但必须说明原因)
  • 对入选条目补齐(或改写):
    • title_zh:中文标题(保留专有名词/项目名;避免硬翻导致误导)
    • summary:中文摘要(信息密度优先,避免空话/夸张营销;合集类必须“可读化改写”,见下文)

强约束:

  • lead 不能同时出现在 top
  • top 内不得重复
  • 入选 URL 必须属于 items[].url
  • 允许对 items[] 做“软删除”,但必须:
    • 只删除你能明确判定为低价值/活动营销/明显广告的条目(见下文“软删除”标准)
    • 把每条删除的原因写入 meta.removed_items[](不留底视为不合规)
    • 删除后不得再在 lead/top 中引用被删条目
  • 不得改写任一条目的 url
  • 不得批量改写非入选条目的字段(除非为了修复明显的结构问题,并必须解释)

编辑部软删除(全来源适用,建议默认开启)

目标:让最终 items[] 更像“编辑后的报纸版面”——减少活动营销、报名优惠、硬广信息对阅读体验的破坏。

软删除怎么落地(必须按这个写入)

  • 从 items[] 中移除条目(不再出现在 web/日报正文)
  • 同时把被移除条目追加到:meta.removed_items[]
    • 每条至少包含字段:url、title、platform(或 source)、reason
    • reason 用一句话说明(例如“活动预告/报名优惠/价格信息为主,信息密度低”)
    • 若 meta.removed_items[] 已存在:保留历史记录,并避免同一 url 重复追加

建议直接删的典型信号(出现多个时更应删除)

  • 明确的行动号召:点击报名 / 购票 / 席位 / 报名 / 登记 / 领取 / 优惠 / 限时 / 赞助
  • 明确的价格/套餐信息为主:如大量出现 元/人、多档价位、行程/航线/团期等
  • 文章主体是“活动预告/路线/费用/名额/报名入口”,而不是知识/分析/一手信息
  • 硬性必删示例:带航线/行程 + 报名/优惠/价格的活动预告,例如“2026—2027年『中国国家地理号』活动预告”这类售卖席位/报价的内容,必须移出 items[] 并写入 meta.removed_items[],理由可用“活动预告/报名优惠,价格信息为主,信息密度低”。

边界提醒:

  • 技术类会议“发布演讲视频/论文/复盘总结”通常不删(它们是内容),但“卖票/报名/拉赞助”为主的仍应删。

合集/热榜/期刊类摘要优化(必须执行)

你会遇到类似 HelloGitHub、热榜、周报、合集这类“集合条目”。这些条目默认摘要往往是“计数/列表”,不利于阅读。

要求:对入选的集合条目(尤其是 lead/top)必须把 summary 改写成更直观的编辑摘要:

  • 结构建议:
    • 一句话:这期/这波在发生什么(主题与范围)
    • 3 个亮点:用“代表主题/代表项目/代表趋势”概括(不要求精确列出项目清单;但要给读者可理解的抓手)
    • 适合谁读:一句话说明
  • 禁止仅保留“分类计数/项目数”作为最终摘要(可以作为补充,但不能是主体)
  • 若你无法访问原文详情(例如网络受限/页面过长):允许基于 title/summary/key_points/keywords 做“可读化重写”,并在摘要里避免编造具体事实

Markdown 区块更新(幂等)

把“头条/精选”区块写入当天 Markdown,要求幂等(重复运行不会越插越多):

  • 只更新以下标记之间的内容(如不存在则创建一次):
    • <!-- editorial-picks:start -->
    • <!-- editorial-picks:end -->

区块内容建议结构:

  • 一个【头条】小节(1 条)
  • 一个【精选】小节(5 条)
  • 每条包含:中文标题、链接、1~2 句摘要(可选带来源/平台)

选择偏好(评审 Rubric)

偏好:

  • 技术/工程/产品/商业信息密度高、可迁移的洞见
  • 原创、一手信息、明确的更新/发布/变更说明
  • 时效性强且影响面大(安全、基础设施、主流框架/平台)

降权:

  • 课程/报名/峰会/营销软文/抽奖/“限量领取”类
  • 标题党但内容空
  • 热榜/合集类:只有在能提炼出“这波在发生什么”的情况下入选,并在摘要里写清“聚合了什么”

自检清单(写入前必须完成)

  • JSON 可解析且格式正确
  • pin=lead 数量为 0 或 1;pin=top 数量为 0~5
  • 入选 URL 都存在于 items[].url
  • lead/top 无重复、无交叉
  • 若做了软删除:
    • meta.removed_items[] 存在且每条有 url/title/reason
    • 已主动检查“报名/购票/优惠/价格/航线/行程/元/人”等关键词,确认活动/售卖类条目已移除
    • 被删条目不再存在于 items[]
  • Markdown 区块是幂等替换(存在则替换,不存在则插入一次)

运行反馈(你对用户的输出格式)

在完成后,简要汇报:

  • 处理日期:YYYY-MM-DD(说明是否为默认“今天”推导)
  • 头条 1 条:标题 + URL
  • 精选最多 5 条:标题 + URL(按优先级排序)
  • 如做了软删除:列出删除条目数,并列出前 10 条(标题 + URL + reason)
  • 你实际改动的文件列表(通常仅 2 个)
  • 若未选满/未选头条:明确原因(如候选不足、质量不达标、文件不存在等)