| name | aispark-daily |
| description | AI Spark 社群「新闻干货分享」日报生成 Skill —— 把用户给的社群干货分享(N 条,每条作者+一句话+链接)二次精选出 5 条放头部,再用 AI HOT(aihot.virxact.com)今日精选 5 条 AI 新闻补成 6–10 条,最后拼接固定的「知识库 / VIP 社群」尾部,输出一份完整的「AI Spark 新闻干货分享 - 第 N 期」。当用户说"生成今天的新闻干货 / AI Spark 日报 / 社群干货日报 / 出今天这期 / 第 X 期日报 / 把这些干货整理成日报 / 按模板生成新闻干货 / aispark-daily"等,或贴出一批"本社群 XX 分享…+ 链接"的干货让你整理成那个固定格式时使用。**用户贴出一份已经排好的完整日报正文(标题+编号条目+知识库尾部)说"写入 / 存档 / 保存这期"时也用本 skill**——走直通存档模式,保证归档文件名和 INDEX 同步不漏。本 skill 是 `[[ai-top5]]` 的上层封装:新闻段直接复用 ai-top5 的选法,再叠加社群干货段和固定尾部。只想要纯 AI 新闻速览用 `[[ai-top5]]`,要带社群干货的完整出刊版用本 skill。 |
aispark-daily — AI Spark 新闻干货日报
固定产出:一份「AI Spark 新闻干货分享 - 第 N 期」,结构恒定为社群干货 5 条(1–5)+ AI 新闻 5 条(6–10)+ 固定知识库尾部。
输入来自两处:用户贴的社群干货列表(头部 5 条的素材,通常 N>5,需二次精选);新闻段从 AI HOT 今日精选拉取。
工作流
0. 直通存档模式(用户贴的已是完整正文)
如果用户贴来的本身就是一份排好的完整日报(标题行 + 编号条目 + 知识库尾部),只说"写入 / 存档 / 保存":不要重新精选、不要改写任何一个字——直接跳到第 7、8 步,逐字落盘成归档文件并更新 INDEX.md(含出刊人统计)。期号和日期以用户正文标题里写的为准,文件名与之对齐。这个模式很常见(用户在别处拼好了正文,只要你负责归档),漏掉 INDEX 统计是它最容易出的错。
1. 收集社群干货素材
社群干货有两个来源:用户手工贴,或 [[aispark-daily-grok]] 从 X 自动抓回的 8 行精选。
每次跑本 skill,先检查 aispark-daily-grok 今天/本会话跑过没有:
- 跑过了(上下文里已有 grok 抓回的「本社群 XX 分享:… + 链接」那 8 行,或今天已经基于它出过这期):直接拿那批结果当素材,进入第 2 步精选,不用再问用户、也不用重抓。
- 没跑过、用户也没贴素材:先替用户跑一遍
aispark-daily-grok(调 grok 自动抓近 24h 社群帖子),拿到 8 行再继续;不要一上来就让用户手贴。grok 抓完不足 5 条/8 条属正常,有几条用几条。
- 用户手工贴了素材:直接用用户给的,不必再跑 grok。
并行提示:grok 一次要跑好几分钟,用 run_in_background 挂后台;等它的同时把第 3 步(拉 AI HOT)和第 4 步(算日期期数)先做完,grok 完成通知一到就能直接进精选,整体快很多。
作者称呼按素材原样保留("阿蔺老师""小墨老师"等),不要省成简称去掉"老师/同学"。本来没带的(如"L总")维持原样。
2. 社群干货二次精选 5 条(头部 1–5)
从用户给的 N 条里挑恰好 5 条(不足 5 条就有几条用几条,并说明"今天社群干货只有 N 条")。
优先保留(按此排序,重要性从高到低)
- 实用教程 / 实操指南(订阅购买、工具配置、Agent/插件教程——别人照着能做)
- 实战经验 / 工作流复盘(带具体数字更好,如"20 多条视频平均 2 小时内完成")
- 有信息量的深度观点 / 系统性思考(不是一句感慨)
- 值得一看的项目 / 资源介绍
优先筛掉
- 纯情绪输出、空泛感慨、信息量低的转发
- 同一作者多条时,只留最有料的一条(一人最多一条,硬规则——作者本身不足 5 位时才出不满 5 条,此时新闻段顺延编号)
- 同一主题/事件的重复条目,只留信息最全的一条
- 上一两期已经发过的同一事件/主题——精选前扫一眼项目根目录最近 1–2 期归档文件(按文件名日期倒序),社群段和新闻段都查。日报是连着看的,隔天重发同一件事读者会立刻发现(例:某期新闻发过"Claude Code 隐写水印",次日 grok 又抓回社群转发的同一事件,应筛掉)。
规则优先级(冲突时从高到低):一人一条(硬)→ 凑满 5 条 → 跨期查重。也就是说社群段的跨期查重是软规则:先按一人一条选,如果因为筛掉跨期重复导致凑不满 5 条、而放回某条跨期重复就能凑满,就放回最有料的那条(在小结里说明)。新闻段的跨期查重保持硬规则不放宽。
3. AI 新闻 5 条(6–10)
默认复用 [[ai-top5]] 的拉取与选法,拿今日精选里最值得看的 5 条放到 6–10 位。
⚠️ 调 /api/public/* 必须带浏览器 User-Agent,否则被 nginx 403。
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 aispark-daily-skill/0.1.0"
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=50" \
| jq '.items[] | {title, source, category, publishedAt, url, summary}'
选法同 [[ai-top5]]:重大模型/产品/工具发布、重磅行业政策、有实锤数据的评测优先;小众 Demo、空泛观点、重复事件筛掉;按重要性从高到低排,不是发布时间。跨期查重同第 2 步——前 1–2 期新闻段发过的事件不再选(同一产品的重大后续进展除外,如"预览版登顶"之后的"正式开源"仍值得发,但一句话里要体现是新进展)。
例外:如果用户自己也贴了新闻/GitHub 项目想放进来(早期那期 6–10 位就是 OpenAI 公告 + 几个 GitHub 项目),就用用户给的占位,缺几条再用 AI HOT 补满 5 条。
4. 算日期和期数
TZ='Asia/Shanghai' date '+%Y 年 %-m 月 %-d 日'
期数以归档为准:取项目根 INDEX.md 往期表第一行(最新一期)的期号 +1。这比按日期推算可靠——INDEX 记录的是实际出刊序列,天然吸收跳刊/停刊。
再用日期锚点交叉验证一遍(锚点 2026-06-13(北京) = 第 34 期,按天数顺推):
today=$(TZ='Asia/Shanghai' date +%Y-%m-%d)
a=$(date -j -f "%Y-%m-%d" "2026-06-13" +%s 2>/dev/null || date -d "2026-06-13" +%s)
t=$(date -j -f "%Y-%m-%d" "$today" +%s 2>/dev/null || date -d "$today" +%s)
echo "第 $(( 34 + (t - a) / 86400 )) 期"
两个数一致就放心用;不一致(说明中间跳过刊或一天出了两期)以 INDEX+1 为准,并在小结里把分歧说给用户核对。用户明确指定了期数("出第 53 期")就用用户的,同样交叉验证并在有出入时提醒。
5. 读取固定尾部
知识库 / VIP 社群那段是固定文案,逐字取自同目录 footer.md,不要改写、不要精简:
cat "$CLAUDE_SKILL_DIR/footer.md"
6. 输出格式(固定)
AI Spark 新闻干货分享 - <北京日期,如 2026 年 6 月 14 日> 第<N>期
1、本社群<作者>分享<一句话,含关键数字/主体>
<url>
2、...
<url>
…(1–5 为社群干货)
6、<AI 新闻一句话总结,含关键数字/主体,≤40 字>
<url>
…(6–10 为 AI 新闻)
10、...
<url>
<footer.md 全文逐字粘贴>
要点:
- 编号
1、 2、…(中文顿号,不是 1.),1–10 连续编号,社群干货占 1–5、新闻占 6–10。
- 标题行格式固定:
AI Spark 新闻干货分享 - <年 月 日> 第<N>期,日期和"第N期"之间有一个空格(与往期归档一致,如"2026 年 6 月 30 日 第51期")。
- 社群条统一写法
本社群<作者>分享<…>;作者用简称(阿蔺 / 小墨 / 雨哥 / cheery / AI少年),不带"老师/同学"也可,跟素材里的称呼对齐即可。
- 每条一句话 + 一行裸链接,链接用素材/接口里的
url 原样裸贴,每条必须有链接。
- 每条之间空一行(一句话、链接、空行,再下一条)。
- 新闻一句话带上关键主体和实数("估值 9650 亿美元"、"1M 上下文下周 MIT 开源"这种实信息),核对回
url,不要把摘要逐字当原文。
- 结尾
footer.md 全文照贴,链接、emoji、空行都不动。
- 正文里不出现时间戳、接口参数、mode/since/take、限流等基础设施细节。
7. 自动存档
正文生成后,默认把这一期正文(不含小结)存到当前项目根目录下的 <北京日期 YYYY-MM-DD>-第<N>期-AI少年.md(直接放根目录,不要建子文件夹;文件名结尾固定带 -AI少年),文件名日期用北京时区、期数用第 4 步算出来的:
date_iso=$(TZ='Asia/Shanghai' date +%Y-%m-%d)
out="${date_iso}-第${issue}期-AI少年.md"
约定:
- 用 Write 工具写文件,内容是和聊天里输出一致的正文(标题 + 1–10 + footer),不含第 9 步那段"小结"。
- 文件已存在(同日重跑)就直接覆盖最新版,不另起文件名。
- 直接写在项目根,不要再套一层
daily/ 之类的子目录。
- 存完在小结里报一句落盘路径,方便用户找。
8. 同步更新 INDEX.md 总目录
存完正文文件后,默认更新项目根目录的 INDEX.md(往期总目录),让它始终和归档文件保持同步:
- Read
INDEX.md。不存在就先按下面结构新建(表头 + 空表 + 统计 + 说明)。
- 在往期表里插入/更新本期那一行(表格按期号倒序,最新在最上):
- 行格式:
| 第<N>期 | <YYYY-MM-DD> | <出刊人> | [<文件名>](./<文件名>) |
- 出刊人默认
AI少年(与文件名后缀一致);本期换了人就用实际出刊人。
- 插在表头分隔行(
|---:|...)正下方,成为第一行数据。
- 若同一期号已存在(同日重跑):替换那一行,不要新增重复行。
- 重算「出刊人统计」表:数一遍往期表里每个出刊人的行数,更新期数、占比和「共 N 期」。以表格实际行数为准重算,不要在旧数字上 +1——如果之前某期漏更了统计(比如有人绕过本 skill 手工加过行),这一步顺便就把欠账补齐了。
- 用 Edit(精确替换那几处)或 Write(整文件重写)落盘,二选一,保证表格仍是合法 markdown。
- 期号笔误已在第 4 步更正的,INDEX 里也用更正后的期号。
约定:只动 INDEX.md 的表格与统计两处,「说明」段保持不变;这一步失败不影响正文文件已存好——在小结里如实说明 INDEX 是否更新成功即可。
9. 生成后附一行小结(可选,便于用户改)
正文之外可补一句:算出来是第几期、存到了哪个文件、INDEX 是否已更新、舍掉了哪几条社群干货(作者+一句话)、新闻段用的是 AI HOT 还是用户自带的——让用户一眼能换。这段是给用户看的,不属于要直接转发的正文,也不写进存档文件。
不要做
- 头部社群干货不要凭训练数据脑补,只用用户贴的素材或 grok 实抓的结果;两样都没有先跑 grok,grok 也失败了再问用户要,不要编。
- 新闻段不要脑补,永远以 AI HOT 接口返回为准;不要暴露端点路径 / raw 参数 / 限流细节。
- 不要改写或精简
footer.md——那是固定文案,逐字复用。
- 社群干货不要超过/少于 5 条(除非用户给的本来不足 5 条,此时如实说明);新闻同理凑满 5 条。
- 不要丢链接(每条都要);不要把链接和句子写在同一行。
- 期数别只信单一来源——INDEX+1 为主、日期锚点交叉验证,有分歧要在小结里说出来让用户核对。