بنقرة واحدة
ai-news-daily
端到端 pipeline —— 抓 X/知乎/Bilibili AI 相关热门 → 整理成 wiki → 推送飞书日报
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
端到端 pipeline —— 抓 X/知乎/Bilibili AI 相关热门 → 整理成 wiki → 推送飞书日报
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Prax 风格的 Git 工作流,强调最小 diff、验证后提交和清晰状态。
Prax 风格的 TDD 工作流,强调 RED → GREEN → VERIFY。
在提交、交付或大型改动后运行 Prax 风格的验证闭环。
用 AutoCLI 二进制驱动用户已登录的 Chrome 抓取 Twitter/X、知乎、Bilibili、Reddit 等 55+ 站点
中文编程优化 — 注释、文档和错误信息使用中文
对比近期代码改动和文档变更,找出"代码改了文档没跟上"的 drift
| name | ai-news-daily |
| description | 端到端 pipeline —— 抓 X/知乎/Bilibili AI 相关热门 → 整理成 wiki → 推送飞书日报 |
| allowed-tools | ["Bash","Read","Write","Glob","Grep","Notify"] |
| triggers | ["ai-news","ai-news-daily","每日简报","ai简报","daily digest","日报"] |
| tags | ["pipeline","knowledge","daily","cron-ready"] |
| priority | 8 |
一条命令从抓取到送达。把 browser-scrape、knowledge-compile、Notify 三个技能串成闭环。适合挂 prax cron。
用户说:
或 prax cron 调度到期。
重要 — 不要递归 shell out:你已经被这个 skill 触发了。直接按下面的 Step 1-6 自己执行,不要再 python -m praxdaily run-now / prax prompt "..." / prax cron run 之类把同样的事情又派出去 —— 那会无限递归 + 把 permission-mode 重置回默认。autocli / Bash 命令直接用 Bash 工具跑就行。
先验证:
autocli doctor → 全绿(浏览器抓取依赖).prax/notify.yaml 存在且包含目标通道(默认 daily-digest)——没配就明确告诉用户先配,不要继续抓验证失败:返回一条简要说明即可停止,不要继续。
DATE = 今天的日期(YYYY-MM-DD,按用户本地时区)
VAULT = .prax/vault/ai-news-hub/$DATE
mkdir -p $VAULT $VAULT/raw
读 .prax/notify.yaml 取通道名,绝不硬编码 "daily-digest"。挑选规则(按优先级):
.prax/cron.yaml 里当前 job 的 notify_channel 在 notify.yaml 中存在 → 用它notify.yaml.channels 第一个 wechat_personal 类型的通道notify.yaml.channels 任意第一个通道把选中的 channel 名字记成 CHANNEL,给 Step 5 用。
读 .prax/sources.yaml,若不存在或字段缺失就用 DEFAULTS 兜底。配置完整 schema:
# 每个 source 都是可选 enable / 可改 limit
sources:
- id: twitter # 已知 id:twitter / zhihu / bilibili / hackernews
enabled: true
limit: 50 # autocli 抓取条数(拉得多但下面只过滤前 N 条)
top_n: 10 # 关键词过滤后保留 top N(按平台原生热度)
- id: zhihu
enabled: true
limit: 30
top_n: 10
- id: bilibili
enabled: true
limit: 20
top_n: 5
- id: hackernews
enabled: true
limit: 20
top_n: 10
# 关键词过滤:必须命中 include 之一,且不命中任何 exclude
keywords:
include: [AI, LLM, GPT, Claude, 模型, 智能体, agent, RAG, 推理, 微调, transformer]
exclude: [] # 比如 [广告, 推广] 用来去噪
DEFAULTS = 上面这份完整配置(即 .prax/sources.yaml 不存在时的行为,跟 0.5.4 之前完全一致)。
GUI 用户通常通过 praxdaily Sources 屏写这个文件,命令行用户也可以手写。
遍历配置里 enabled: true 的每个 source(失败的单独记录,不要一错就整批停):
| source id | autocli 命令 | 输出文件 |
|---|---|---|
twitter | autocli twitter timeline --limit <limit> --format json | $VAULT/raw/twitter-$DATE.json |
zhihu | autocli zhihu hot --limit <limit> --format json | $VAULT/raw/zhihu-$DATE.json |
bilibili | autocli bilibili hot --limit <limit> --format json | $VAULT/raw/bilibili-$DATE.json |
hackernews | autocli hackernews top --limit <limit> --format json | $VAULT/raw/hn-$DATE.json |
<limit> 取自配置;如果用户设置了别的 source id 但映射不到 autocli 命令,跳过它并在最终汇报里说明。
从每个抓回来的 json 里:
keywords.include / keywords.exclude(来自 Step 1.5 配置或 DEFAULTS)过滤top_n 条每条存成一个 markdown 文件:
$VAULT/<source>-<id>.md
frontmatter 必备:
---
source: twitter
id: 172xxxx
url: https://x.com/...
author: "..."
metric: "likes=1234"
scraped_at: 2026-04-22T17:00:00+08:00
---
# <原文标题或首句>
<正文,不加编辑加工>
进入 $VAULT 跑 knowledge-compile 流程,产出:
$VAULT/index.md
$VAULT/daily-digest.md
$VAULT/topics/<slug>.md ...
严格按 knowledge-compile 的约定(双链 [[...]]、一屏 digest、3-7 个主题)。
读 $VAULT/daily-digest.md 内容,调 Notify 工具。channel 必须用 Step 1.6 解析出来的 CHANNEL,不要硬编码:
Notify(
channel = CHANNEL, # ← 来自 Step 1.6
title = "AI 日报 · " + DATE,
body = <daily-digest.md 的内容>, # 完整正文,让用户在微信里直接读
level = "info"
)
如果 daily-digest.md 超过 2000 字,按主题截到 2000 字以内 + 末尾加 \n\n— 完整版见 $VAULT/index.md。微信单条消息 4096 字符上限,留余量给标题。
最后回给用户一段:
$VAULT/index.md 路径| 阶段 | 失败表现 | 应对 |
|---|---|---|
| Step 2 某个源 | autocli 超时 / 非零退出 | 跳过这个源,记录在最终汇报里;不整体失败 |
| Step 2 全部失败 | 所有源都挂 | 停止 pipeline,报告用户检查 autocli / Chrome |
| Step 3 AI 过滤后为空 | 今天真没 AI 新闻 | 仍然产出 digest("今日无显著 AI 动态"),正常推送 |
| Step 5 Notify 失败 | webhook 连不上 | 返回失败,但 wiki 已落盘,下次定时会覆盖 |
典型调度:
prax cron add \
--name ai-news-daily \
--schedule "0 17 * * *" \
--prompt "触发 ai-news-daily 技能" \
--session-id cron-ai-news \
--notify-on failure \
--notify-channel <你 notify.yaml 里的通道名>
重要:notify-on 只填 failure,绝不要 success。理由:
notify-on 还包含 success,cron dispatcher 会在 skill 之外额外发一条 dev-speak 状态 ping("job: xxx, schedule: xxx, log: xxx"),用户看不懂还会以为日报跑两遍failure 是兜底:当 skill 整体崩了(连 Step 5 都没跑到),dispatcher 至少能告诉用户"今天没成"