你的个人 AI 早报。 arXiv 新论文、Hacker News 热帖、GitHub 趋势、天气,以及可选的其他来源,会在夜里自动抓取、筛选、摘要,并发布成你自己的可搜索 digest 站点。
当你用模板创建好自己的仓库后,第一步就该打开设置向导。它现在就是新的主入口:登录 GitHub、完成授权、填写配置、直接部署,都会在这里走完。当前自托管路径会在背后使用 GitHub Actions 和 Pages;你不用维护服务器,也不会被锁在某个 dashboard 里。
英文示例 · 中文示例 · 中文设置向导入口 · English setup entry · 手动配置指南
克隆或从模板创建仓库后,先点这里
setup页面现在就是新用户的主入口,登录、授权、配置和部署都在这里完成。中文界面:https://yuyangxueed.github.io/Linnet/setup/zh/
English UI: https://yuyangxueed.github.io/Linnet/setup/
第一次部署完成后,Linnet 会尝试把你的 GitHub Pages 地址同步到仓库的 About -> Website。如果 GitHub 权限阻止了这一步,再手动把 Pages 地址填进去即可。
Linnet 更像一个替你准备晨间材料的 AI 助手。它会检查你关心的来源,用 LLM 过滤噪音和提炼重点,然后在一天开始前留下一份整理好的 briefing。
| 来源 | 作用 |
|---|---|
| arXiv | 抓取与你关键词匹配的新论文,并附 AI 摘要 |
| Hacker News | 超过你设定分数线的 AI/ML 高信号内容 |
| GitHub Trending | 你关心方向的趋势仓库 |
| 天气 | 你所在城市的天气 |
博士后职位、导师主页监控这类来源也能接进来,但它们都放在扩展系统里,不会挤占默认上手路径。
设置向导还会按语言显示不同的每日 tagline 扩展:
- 中文默认可选
hitokoto,不需要 API key - 英文默认可选
quote_of_day,需要API_NINJAS_KEY
Linnet 会把生成的日、周、月归档保留在你的发布站点里,所以这些 briefing 可以持续搜索和回看,而不是变成另一个刷完就消失的信息流。
在 GitHub 上点击 Use this template → Create a new repository。
如果你只是想搭自己的 briefing 站点,优先使用 Use this template,不要用 Fork。Fork 当然也能跑,但更容易遇到 GitHub 对 Actions 和初始化流程的额外限制。
干净起步说明:模板仓库不会再跟踪生成出来的 digest JSON。你的第一次 Daily Digest 会创建自己的归档。如果你 fork 的旧版本里已经带有 docs/data/daily/*.json、docs/data/weekly/*.json 或 docs/data/monthly/*.json,一次性删除这些 JSON,保留 .gitkeep 文件即可。
打开你刚创建的仓库,把 Linnet Bridge GitHub App 安装到目标仓库上。
这是现在推荐的新手路径。它让 Linnet 可以直接替你写入文件、GitHub Actions secrets、workflow 设置,以及 GitHub Pages 配置,而不需要你自己去生成 PAT。
创建好仓库后,这里就是登录、授权和部署的主入口:
- 英文界面:https://yuyangxueed.github.io/Linnet/setup/
- 中文界面:https://yuyangxueed.github.io/Linnet/setup/zh/
现在已经不需要先把你自己仓库里的 /setup/ 部署出来,才能开始配置。
在设置向导顶部:
- 如果还没安装过,先点 安装 GitHub App
- 然后点 授权 GitHub,让当前浏览器完成 setup 授权流程
然后照常完成向导里的内容:
- Step 1-2 里的简报模式、来源选择与详细来源配置
- Step 3 里的可选额外 secrets 和推送渠道
- Step 4 里的 LLM provider、API key、模型选择、日报运行时间,以及主题设置
到了 Step 5,确认目标仓库后,点击 部署到 GitHub。
现在默认的一键部署路径走的是 Linnet Bridge GitHub App,不再是 PAT。部署成功后,Linnet 会在背后完成这些事:
- 以单次 commit 写入生成的配置文件和定制后的日报 workflow
- 创建或更新所需的 GitHub Actions secrets
- 启用
daily.yml、weekly.yml、monthly.yml、pages.yml - 配置 GitHub Pages 为 workflow 发布模式
- 在权限允许时,把仓库 About -> Website 链接设为你的 Pages 地址
- 触发第一次
Daily Digest
大多数用户在 Step 5 之后不需要再手动点任何按钮。你只要在仓库里观察这两个 workflow:
- Daily Digest — 生成第一期 digest,并提交发布数据
- Deploy Astro Site to GitHub Pages — 构建站点并发布到 Pages
几分钟后,你的站点应该就会出现在 https://<你的用户名>.github.io/<仓库名>/。
Linnet 也会尝试把这个地址填到仓库主页的 About -> Website 里。如果设置完成后 About 里仍然指向模板仓库旧链接,再手动把它替换成你的 Pages 地址即可。
GitHub Pages 在全新仓库上有时会比 API 成功响应稍慢一点,所以第一次部署时请稍微等一会儿,再判断是否真的失败。如果组织策略阻止了 GitHub App、Actions 或 Pages,再回退到 手动配置指南。
先记住四件事就够了:
enabled: true/false控制某个来源或 sink 是否启用。display_order控制最终 digest 里的显示顺序。llm.provider、llm.base_url、llm.api_key_env和两个 model ID 决定 LLM 请求怎么发。- 更细的来源参数在
config/extensions/<name>.yaml。
最小例子:
display_order:
- weather
- arxiv
- github_trending
- hacker_news
weather:
enabled: true
arxiv:
enabled: true
github_trending:
enabled: true
hacker_news:
enabled: true
language: "zh"
llm:
provider: "openrouter"
scoring_model: "google/gemini-2.5-flash-lite"
summarization_model: "google/gemini-2.5-flash-lite"
base_url: "https://openrouter.ai/api/v1"
api_key_env: "OPENROUTER_API_KEY"如果你打算手改所有配置,直接从 dev_docs/manual-config.zh.md 开始。
- 内置来源插件都在
extensions/ - 统一约定在
extensions/README.md - 新扩展可以从
extensions/_template/开始
- 网站是默认输出
- 可选投递渠道在
sinks/ - 共享约定在
sinks/README.md - secret 只放 GitHub Secrets 或环境变量,不放进提交的 YAML
例如:
sinks:
slack:
enabled: true
max_papers: 5
max_hn: 3
max_github: 3设置向导可以根据你的本地时间、固定 UTC offset,以及“工作日 / 每天”选择,自动生成日报 workflow 的时间。GitHub Actions 的 cron 本身仍然使用 UTC,所以生成的 .github/workflows/daily.yml 会包含换算后的 UTC cron。默认日报会在工作日 09:30 UTC 运行,这样美股盘前信号会等纽约进入交易日后再生成。如果你在夏令时地区,选择当前季节对应的 offset;之后也可以直接在自己的仓库里改 cron。
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export OPENROUTER_API_KEY=sk-or-... # 或者换成 llm.api_key_env 对应的名字
python main.py --mode daily
python main.py --dry-run
python main.py --mode weekly
python main.py --mode monthly运行测试:
PYTHONPATH=. pytest tests/ -q这个仓库对人类贡献者和 AI coding agents 都很友好。
Linnet 的扩展系统就是为了让大家把新的信息源教给它。如果一个来源有 URL、RSS、API,或者页面内容可以抓取,它大概率就能变成一个 briefing extension:基金申请、bioRxiv 论文、Product Hunt 新产品、会议 deadline、本地活动、实验室新闻,或者任何你总是忍不住反复查看的页面。
- 从
extensions/_template/和extensions/README.md里的扩展指南开始 - 用
CONTRIBUTING.md查看当前 package-based extension 流程 - 在
docs/extension-ideas.md里找适合新手 PR 的想法 - 粗略想法可以先发到 Discussions,范围明确后再变成 issue 或 PR
如果你要改仓库代码或文档,先看:
如果你主要是在帮别人配置自己的仓库或 digest 站点,先看:
给 agent 的推荐提示词:
Please read llms.txt, extensions/llms.txt, sinks/llms.txt, and the relevant SKILL.md under skills/ before making changes or suggesting configuration edits.
如果你做出了一个有趣的 setup,欢迎发到 Discussions。
如果你遇到实现问题、配置问题,或者想提 extension / sink 请求,可以直接使用仓库里的 issue templates。
如果这个仓库帮你节省了时间,或者给了你一个很好的个人 briefing workflow 起点,可以在这里支持项目:
赞助完全自愿。代码贡献、修 bug、提想法、补新集成,同样很有价值。
公开站点使用 Astro 构建,这让 GitHub Pages 这条路径保持得很轻。
这个项目也受益于很多开源仓库、维护者和示例。如果你发现某个项目值得被更明确地致谢,欢迎提 issue 或 PR,我会补上。
MIT — 详见 LICENSE。欢迎贡献。




