全球科技前沿头条
> 不是把新闻堆给你,而是回答:这个领域今天发生了什么、哪几条真正值得你花时间、为什么。
一句话定位
按你关注的硬科技领域,从全球数千个可信站点、经前沿大模型逐条处理与筛选后的头条里,
挑出真正值得看的几条,附入选评分与原始信源,读不完的可一键深挖。
数据源与可信度(必须先向用户说明)
主数据源:news.tekoai.net
| 项目 | 说明 |
|---|---|
| 覆盖范围 | 全球数千个可信站点(通讯社、专业垂直媒体、机构官网、权威行业媒体) |
| 处理方式 | 每条新闻经前沿大模型做摘要生成、领域分类、质量评分,不是简单抓取罗列 |
| 筛选信号 | score 0–100 分(判断新闻价值),score_class S/A/B/C 分级(DUP 为重复项,须剔除) |
| 领域分类 | 十大硬科技领域 × 细分方向,形如「能源—先进核裂变/第四代核电」 |
| 刷新频率 | 每 30 分钟 |
| 数据形态 | JSON(结构化,供程序/智能体读)+ RSS(供阅读器订阅) |
| 覆盖领域 | 防务 · 能源 · 信息 · 科技战略 · 海洋 · 生物 · 先进制造 · 航天 · 航空 · 新材料 |
| 访问性 | 国内可直连,无需代理 |
介绍这段时的正确说法(不要简化成"网上搜的新闻"):
> 数据来自 news.tekoai.net,它持续扫描全球数千个可信站点,
> 每条新闻都经过前沿大模型处理——生成中文摘要、判定所属科技领域、给出 0–100 的价值评分。
> 我给你的每一条都带着这个评分和原始信源,你可以自己核验。
≤ 三个使用红线:不编造、不夸大来源、不把模型二次加工的判断说成原始事实。
意图 → 读哪个文件(先看这张表,再动手)
数据源有 14 个文件。不要每次都把 index.json 或所有 feed 拉一遍 ——
按用户意图直接定位目标文件,一步到位。
| 用户意图 | 读哪个 | 为什么 | 命令 |
|---|---|---|---|
| 不知道有什么、先摸底 | /index.json |
总索引:全部 feed 清单 + 字段说明 | --check |
| 通用科技新闻("今天科技圈有什么大事") | /global-top.json |
按评分倒序,最重要的在前 | --feed top(默认) |
| 最新动态 / 持续更新 / 刚刚发生了什么 | /latest-24h.json |
按发布时间倒序,最新的在前 | --feed latest |
| 某个领域(防务、能源、航天…) | /category/{slug}.json |
该领域专用 feed | --domains 防务 |
| 某个话题(无人机、可控核聚变、某公司) | 跨全部 feed 扫 | 话题横跨多领域,单查一个会漏 | --keyword 无人机,UAV |
| 只看总览、不取条目 | /index.json |
含各 feed 条数与更新时间 | --check |
两条最快路径要记住:
- "今天有什么大事" →
global-top.json(评分排序,直接给最重要的) - "最新的" →
latest-24h.json(时间排序,直接给最新的)
二者的区别:global-top 回答"什么最重要",latest-24h 回答"什么最新"。
用户在问"大动作""值得关注的"选前者;在问"最新进展""刚发生的"选后者。
不给任何参数时,脚本默认走 global-top.json —— 因为最常见的需求就是"今天有什么"。
底层的 12 个 feed 与全部路径清单见 references/data-source.md。
触发与意图识别
先按上方「意图 → 读哪个文件」表定位数据文件,再按下表决定输出形态:
| 用户说法 | 模式 | 读哪个文件 | 输出 |
|---|---|---|---|
| "今天科技圈有什么大事" / "来份科技早报" | 速览 | global-top.json |
5 条,每条一句话 |
| "科技日报" / "详细说说" / "帮我整理一份" | 标准简报 | global-top.json |
15 条,分领域,每条含摘要与影响 |
| "最新进展" / "刚发生了什么" / "持续更新" | 最新 | latest-24h.json |
按时间倒序,突出"新" |
| "XX 领域最近怎么样" / "盯着防务" | 领域聚焦 | category/{slug}.json |
该领域 10–15 条 |
| "XX 方面有什么新闻"(话题,如"无人机") | 话题聚焦 | 跨全部 feed | 见第 2 步「话题模式」 |
| "某某公司/人物最近有什么动作" | 主体追踪 | 跨全部 feed | 见下方「主体追踪」 |
| "第 3 条展开" / "这条细说" | 深挖 | 复用上一步数据 | 单条:原文 + 上下文 + 影响 |
| "跟上次比有什么新东西" | 增量 | global-top.json + 记忆 |
仅列出较上次新增的 |
| "推给我" / "发到微信" | 推送 | 复用上一步数据 | 精简卡片 + 完整日报链接 |
领域 vs 话题:能对应到十大领域之一的叫领域(走 --domains);
否则是话题(走 --keyword,跨领域检索)。拿不准时按话题处理更安全 ——
话题模式覆盖面更广,不会漏。
主体追踪(人名 / 公司名 / 机构名)
用户问"马斯克最近有啥大动作""华为怎么样"这类主体时:
- 把主体名当
--keyword用,中英文别名都要给。人物往往关联多个实体,
只搜人名会漏掉大量相关新闻:
bash
python scripts/feed.py --keyword 马斯克,Musk,SpaceX,特斯拉,Tesla,xAI,Neuralink,Boring,星链,Starlink
- 必须跨全部 feed 扫,不要限定领域(脚本在只给
--keyword时会自动用--feed all); - 关键词要"具体",不要用泛词。 实测教训:给马斯克配关键词时用了
Boring和Falcon两个词,结果把「光感应假肢」「NASA 望远镜」「Anthropic IPO」
这些完全无关的新闻也捞了进来 —— 因为boring是普通英文词、falcon也是。
判定标准:一个词如果脱离这个主体还能独立成立(boring / space / falcon / meta),
就不要单用。改用专属组合词:SpaceX / Starlink / Starship / 特斯拉 /
xAI / Neuralink,或者带引号的精确短语。
- 结果必须按"主体是主角"分三组过滤,别把误匹配直接交给用户:
| 组 | 判定 | 处理 |
|---|---|---|
| 核心 | 主体出现在标题里 | 正常呈现 |
| 相关 | 主体只出现在摘要里 | 单独一小节,标注"非主体新闻,但相关" |
| 误匹配 | 只是关键词碰到了 | 剔除,但可以一句话说明剔了几条、为什么 |
实测:马斯克主题全扫得到 15 条,其中核心 4 条、相关 5 条、误匹配 6 条。
三组混在一起给用户,可信度会直接崩掉。
- 输出按时间线组织,串起动作的先后与因果 —— 主体追踪的价值在这里,
不是罗列条目。可参考templates.md的「形态三:单条深挖」里背景段落的写法
意图不明确时:先按「速览」给一版(成本低、可纠正),同时问一句是否需要展开。
核心工作流
第 1 步:确定关注领域(不要跳过、不要瞎猜)
按下面的优先级取值,只有走到第 3 级才需要问用户:
- 读记忆文件
~/.workbuddy/skills/tech-frontier-headlines/memory/preferences.json
(不存在则跳过) - 读宿主画像:工作目录下的
USER.md/MEMORY.md,提取关注领域关键词 - 问用户一次,然后把答案写进记忆文件,以后不再重复问
领域关键词 → 标准领域名的映射见 references/domains.md。
用户说"我关注军工和核能",要能映射到「防务」「能源」。
第 2 步:拉取数据
通用科技新闻(最常见,也是默认):
python scripts/feed.py --limit 15 # 等价于 --feed top
python scripts/feed.py --feed top --limit 15 # 全球科技头条,按评分倒序
python scripts/feed.py --feed latest --limit 15 # 最新科技新闻,按发布时间倒序
按领域取:
python scripts/feed.py --domains 防务,能源 --limit 15 --format json
按话题取(用户问的是某个人/技术/事件,而不是领域):
python scripts/feed.py --keyword 无人机,无人系统,UAV,drone --limit 40 --format json
| 参数 | 作用 |
|---|---|
--feed top |
全球科技头条,按评分倒序(什么最重要) |
--feed latest |
最新科技新闻,按发布时间倒序(什么最新) |
--domains |
逗号分隔的领域名,读对应分类 feed |
--keyword |
话题关键词,跨 feed 检索(匹配标题/摘要/分类/关键词) |
--limit |
取几条 |
--since-last |
增量模式,只返回比上次运行更新的 |
--min-score |
评分下限(默认 40) |
--mark-sent / --save-domains |
记入已推流水 / 把领域写进记忆 |
--check / --init |
环境自检(含意图路由表)/ 初始化配置 |
都不给时默认走 --feed top,因为最常见需求是"今天有什么大事"。
--feed 与 --keyword 可以组合,例如"最新动态里跟 AI 有关的":
--feed latest --keyword AI,人工智能。
输出含 title / summary / category / category_major / category_minor / url / publish_time / source / score / score_class / keywords
话题模式:必须跨领域检索
用户在问话题("无人机""可控核聚变""英伟达")而不是领域时,有两个坑:
坑一:话题会横跨多个领域。 实测「无人机」一天的分布:
| 领域 | 命中 | 领域 | 命中 |
|---|---|---|---|
| 防务 | 26 | 先进制造 | 2 |
| 能源 | 5 | 航天 | 1 |
| 海洋 | 4 | 信息 | 1 |
| 航空 | 3 | 科技战略 | 3 |
| 科技战略 | 3 | 生物/新材料 | 0 |
如果只查「航空」(无人机在领域表里的默认归属),只会得到 3 条,漏掉 42 条。
所以 --keyword 用法不带 --domains,让脚本扫全部十个领域。
坑二:关键词会命中"旁及"条目。 有些新闻只是提到了该话题
(如"输油管道遭无人机袭击"是关于能源的,"无人机"只是事件要素)。
处理方式:拿到结果后按"话题是否为主角"分两组,把判断依据说给用户听:
- 核心条目:标题或分类里就是该话题 → 正常呈现
- 旁及条目:仅摘要里提到 → 单独列一小节,或只提一句"另有 N 条把 X 作为要素提及"
不要混在一起排,否则用户会觉得"这跟无人机有什么关系"。
关键词怎么给:中英文都要给,覆盖同义说法。以无人机为例:
无人机,无人系统,无人作战,无人水面,无人艇,无人船,无人车,UAV,UAS,drone,eVTOL,蜂群,低空
第 3 步:分层加工(这一步决定质量)
速览:每条压缩成一句话(≤40 字),抓"谁做了什么、意味着什么"。
标准简报:按领域分组,每条给「摘要(1–2 句)」+「值得关注的点(1 句)」。
深挖:对单条按结构化展开——见 references/templates.md。
加工纪律:
- 摘要来自数据源,原样使用,不要重写。要浓缩就标明是二次加工。
score_class为DUP的必须剔除(那是重复项)。- 评分低的不凑数。要 15 条但只有 9 条过线,就给 9 条并说明。
- 不补写项目里没有的事实。想补充就用第 4 步的联网补充,并明确标注。
第 4 步:联网补充(可选,按需触发)
在主数据源覆盖不到时启用,并必须标注来源:
| 触发条件 | 补充方式 |
|---|---|
| 用户要的领域/细分方向在 feed 里当天没有条目 | 用内置联网搜索补 2–3 条 |
| 用户在深挖模式要背景与影响 | 搜原文、找上下文、找同类事件 |
| 用户明确要"最新"且数据源刚刷新完(可能有 30 分钟滞后) | 搜最近 1 小时 |
补充条目的标注格式:
[补充] 标题 — 来源(非 news.tekoai.net 数据源)
绝不把补充内容混进主数据源里不加区分。
第 5 步:输出并更新记忆
按用户要的形态输出,然后写入记忆(关注领域、已推条目的 url 或 id、
用户明确表达过的偏好),供下次做增量和个性化。
输出形态
| 形态 | 何时用 | 做法 |
|---|---|---|
| 对话内 Markdown | 默认 | 见 references/templates.md |
| 可分享 HTML 日报 | 用户要存档/转发/发群里 | python scripts/render.py --input data.json --out brief.html |
| 纯文本 | 用户要粘到别处 | 去掉 Markdown 标记的扁平版本 |
| 微信推送 | 用户要"推给我" | python scripts/push.py,只发精简卡片 + 日报链接 |
微信推送的内容设计:微信是"扫一眼"场景,不要把 15 条全文塞进去。
推 Top 3–5 条的标题 + 评分,再附一个完整日报链接。
推送通道配置见 references/push-channels.md(PushPlus / Server酱 / 企业微信 / 飞书 / 邮件,
通道可插拔,某个挂了换一个不影响业务逻辑)。
定时推送由用户自主决定:不要主动替用户开定时任务,
在用户明确要求时用宿主提供的定时/自动化能力配置,并把周期写进记忆。
记忆机制
目录:~/.workbuddy/skills/tech-frontier-headlines/memory/
| 文件 | 内容 |
|---|---|
preferences.json |
关注领域、输出偏好、常用条数、推送通道配置 |
pushed.jsonl |
已推送条目流水(每行一条,含 url / 标题 / 时间 / score),用于增量 |
feedback.jsonl |
用户对条目的明确反馈("这条好""别给我这类") |
由 scripts/feed.py 自动读写。不要手工改这两个 jsonl,会破坏增量基线。
反理性化表(必须遵守)
这些是最容易发生的偷懒路径,写在前面提醒自己:
| 可能的借口 | 正确做法 |
|---|---|
| "网络不通,我凭记忆写几条科技新闻吧" | ❌ 绝不编造新闻。明确告知抓取失败,给出数据源地址让用户自己看 |
| "用户没说关注什么,默认给 AI 领域吧" | ❌ 按第 1 步的三级优先级取值,走到第 3 级就问一次 |
| "摘要太长,我自己重写一遍更顺" | ❌ 摘要原样用。要浓缩就标注「以下为二次浓缩」 |
| "只找到 9 条,凑到 15 条吧" | ❌ 给 9 条并说明。精选的价值在于少而准 |
| "评分低但标题挺唬人,放进去" | ❌ 评分是筛选信号,低于阈值的一律不放(用户明确要求除外) |
| "数据源没这个领域,我随便搜两条充数" | ❌ 可以补,但必须显著标注为非本数据源 |
| "DUP 也是新闻,先放着" | ❌ DUP = 重复项,必须剔除 |
| "用户没问来源,就不用说了" | ❌ 每条都要能追溯到 source 和原文链接 |
| "关键词搜到什么就给什么" | ❌ 必须按「主体/话题是主角」过滤,误匹配要剔除并说明剔了几条 |
| "话题只查一个领域就行(无人机→航空)" | ❌ 话题与主体必须跨全部 feed 扫。实测无人机只查航空会漏 42/45 条 |
| "用 boring / falcon / space 这种泛词做关键词" | ❌ 泛词会捞进大量无关新闻。只用专属组合词(SpaceX / Starlink / Starship) |
边界与降级
| 情况 | 处理 |
|---|---|
news.tekoai.net 不可达 |
明确告知失败与原因;询问是否改用联网搜索模式(结果标注非本数据源) |
| 某领域当天 0 条 | 如实说明(该领域本日无过线新闻),不要用其他领域凑 |
| 用户要的领域不在这十个里 | 用最接近的领域 + 联网补充,并说明映射关系 |
| 用户要英文内容 | 数据源标题/摘要已是中文;英文需求走联网搜索或取原始 url |
| Python 不可用 | 纯提示词模式:直接用 WebFetch 或 curl 读 https://news.tekoai.net/index.json 与对应 feed,流程不变 |
文件结构
├── SKILL.md # 本文件(主流程)
├── README.md # 面向使用者的说明(市场发布页用)
├── LICENSE # MIT
├── references/
│ ├── data-source.md # 数据源接口与字段详解、评分口径、意图路由表
│ ├── domains.md # 十大领域定义与关键词映射
│ ├── templates.md # 各输出形态的完整模板
│ └── push-channels.md # 推送通道配置与故障切换
├── scripts/
│ ├── feed.py # 抓取 + 筛选 + 增量 + 记忆(纯标准库)
│ ├── render.py # 生成可分享 HTML 日报(纯标准库)
│ └── push.py # 多通道推送(纯标准库)
├── assets/
│ └── preferences.template.json # 配置模板,--init 时复制到 memory/
└── memory/ # 运行时生成:偏好、已推流水、反馈
└── .gitkeep # 占位,保证空目录不被打包丢弃
注意:memory/ 里是使用者本地数据,分发时不要带内容(打包前清空,
只留 .gitkeep)。
依赖:核心流程零依赖(纯提示词即可用)。脚本只用 Python 标准库
(urllib / json / argparse / smtplib 等),不需要 pip install 任何东西,
在所有 skill 市场通用。Python 3.7+ 即可(用了 from __future__ import annotations)。
⚠️ 跨平台调用方式:文档里示例一律写 python,实际执行时按平台调整 ——
| 平台 | 用哪个命令 |
|---|---|
| Windows | python 或 py |
| macOS / Linux | python3(很多系统没有 python 这个命令) |
首次使用先探测可用的解释器,不要直接假设 python 存在:
python3 --version || python --version || py --version
检测到哪个用哪个,后续统一用同一个。
快速自检
python scripts/feed.py --check # 检查数据源可达性、各 feed 条数、记忆状态
python scripts/feed.py --domains 能源 --limit 5 # 试跑一个领域
python scripts/feed.py --domains 防务 --since-last # 试跑增量模式
--check 会打印:数据源是否可达、12 个 feed 各自条数、当前记忆文件状态、可用推送通道。
首次使用或报错时先跑它。