iDeer 是一个多源信息聚合 + 定时推送工具。你告诉它你关注什么,它替你盯住散落在各个平台的更新,用 LLM 做筛选、打分、摘要,最后把值得看的内容在你设定的时间自动送到邮箱里。
核心价值只有一句话:把「每天手动巡逻多个平台」的重复劳动,变成「打开邮件直接看结论」的被动接收。
|
每天 arXiv 上百篇新论文,哪些跟你的方向有关? iDeer 按你的研究画像自动筛选、评分、生成摘要,还能跨源关联 GitHub 新 repo 和 HuggingFace 新模型,顺手长出 research ideas。
|
行业发生了什么?哪些公司有新动向? iDeer 聚合多个信息源,按时间段总结行业事件,提供研报所需的基本素材和趋势概览。适合需要定期输出行业简报的分析师和研究员。
|
还在盯着三大刊和各种法C的微信公众号,一篇篇翻找跟自己课题相关的论文吗? iDeer 通过 Semantic Scholar 覆盖 2 亿+ 跨学科论文,自动匹配你的研究方向,第一时间整理最新论文和摘要推送到邮箱。当别人还在一个个翻公众号的时候,你躺在床上打开邮件就已经超越了他们。
|
| 产出 | 说明 | 示例路径 |
|---|---|---|
| 📰 日报 | 每个源的精选推荐 + AI 摘要 | history/<source>/<date>/ |
| 📋 跨源简报 | 打通多个源的个性化叙事报告 | history/reports/<date>/report.md |
| 💡 Research Ideas | 从当天情报里自动长出的研究灵感 | history/ideas/<date>/ideas.json |
不只是 RSS —— 它会打分、排序、总结、跨源关联,最后按你设定的频率(每天 / 仅工作日 / 每周 / 每月)把结果投喂到邮箱。
| 源 | 覆盖范围 | 你能配置的 |
|---|---|---|
| GitHub | Trending 仓库 | 语言过滤、时间范围、最大数量 |
| HuggingFace | 论文 + 模型 | 内容类型、数量上限 |
| arXiv | 每日新论文 | 分类(cs.AI / cs.CL / ...) |
| PubMed | 3600 万+ 生物医学文献 | 搜索词、天数范围、数量 |
| Semantic Scholar | 2 亿+ 跨学科论文(WoS 替代) | 搜索词、年份、领域、数量 |
| X / Twitter | 技术讨论 + 行业动态 | 账号列表、自动发现、回溯窗口 |
插件化设计 —— 想加新源?继承
BaseSource,实现抽象方法,注册到SOURCE_REGISTRY,完事。
pip install ideer
# 初始化工作目录(生成 .env 和 profiles 模板)
ideer init
# 配置 LLM(必填)
vim .env # MODEL_NAME=gpt-4o-mini BASE_URL=https://api.openai.com/v1 API_KEY=sk-xxx
# 跑一次试试
ideer run --sources arxiv huggingface --skip-source-emailsgit clone https://github.com/LiYu0524/iDeer && cd iDeer
pip install -r requirements-web.txt
cp .env.example .env
vim .env # 填 MODEL_NAME, BASE_URL, API_KEY
vim profiles/description.txt
vim profiles/researcher_profile.md # 如果后面要生成 ideas,建议一起改
python main.py --sources arxiv semanticscholar huggingface --save --skip_source_emails搞定。去 history/ 看产出。
没有服务器、也不想自己配运行环境的话,可以直接用仓库自带的 GitHub Actions 工作流定时生成跨源报告,并把最终报告邮件发到你的邮箱。
详细教程:
工作流文件:
.github/workflows/scheduled-report-email.yml
默认行为:
- 在 GitHub Hosted Runner 上直接运行
- 只发送一封跨源报告邮件
- 不发送每个 source 的单独邮件
- 把
history/reports/作为 artifact 保留下来,方便下载查看 - 默认源是
github + arxiv + semanticscholar + huggingface + rss - 默认定时是
UTC 00:00,对应北京时间 08:00
| Secret | 用途 | 说明 |
|---|---|---|
IDEER_MODEL_NAME |
模型名 | 例如 gpt-4o-mini、Qwen/Qwen2.5-72B-Instruct |
IDEER_BASE_URL |
模型 API 地址 | 例如 https://api.openai.com/v1 或兼容 OpenAI 的网关 |
IDEER_API_KEY |
模型 API Key | 用于 LLM 调用 |
IDEER_SMTP_SERVER |
SMTP 服务器 | 例如 smtp.gmail.com |
IDEER_SMTP_PORT |
SMTP 端口 | 常见是 465 或 587 |
IDEER_SMTP_SENDER |
发件邮箱 | 发送日报的邮箱 |
IDEER_SMTP_RECEIVER |
收件邮箱 | 默认接收日报的邮箱 |
IDEER_SMTP_PASSWORD |
SMTP 密码 / 应用专用密码 | 邮箱授权密码 |
IDEER_DESCRIPTION_TEXT |
你的兴趣描述 | 这是推荐和报告筛选的核心输入 |
| Secret | 用途 | 默认值 / 示例 |
|---|---|---|
IDEER_PROVIDER |
LLM provider | 默认 openai |
IDEER_TEMPERATURE |
采样温度 | 默认 0.5 |
IDEER_DAILY_SOURCES |
选择要跑哪些源 | 默认 github arxiv semanticscholar huggingface rss |
IDEER_REPORT_TITLE |
邮件标题 | 默认 Daily Personal Briefing |
IDEER_RESEARCHER_PROFILE_TEXT |
更完整的研究者画像 | 会用于报告生成 |
IDEER_NUM_WORKERS |
并发 worker 数 | 默认 6,GitHub Actions 上不建议盲目调太高 |
| Secret | 何时需要 | 说明 |
|---|---|---|
IDEER_ARXIV_CATEGORIES |
你启用了 arXiv 时 | 例如 cs.AI cs.CL cs.LG |
IDEER_ARXIV_MAX_ENTRIES |
你启用了 arXiv 时 | 原始抓取数量上限 |
IDEER_RSS_URLS |
你启用了 RSS 时 | 默认 https://imjuya.github.io/juya-ai-daily/rss.xml |
IDEER_ARXIV_MAX_PAPERS |
你启用了 arXiv 时 | 最终推荐论文数量上限 |
IDEER_GH_LANGUAGES |
你启用了 GitHub 时 | 例如 python typescript 或 all |
IDEER_GH_SINCE |
你启用了 GitHub 时 | daily / weekly / monthly |
IDEER_GH_MAX_REPOS |
你启用了 GitHub 时 | GitHub 候选仓库上限 |
IDEER_HF_CONTENT_TYPES |
你启用了 HuggingFace 时 | 例如 papers、papers models |
IDEER_HF_MAX_PAPERS |
你启用了 HuggingFace 时 | 论文数量上限 |
IDEER_HF_MAX_MODELS |
你启用了 HuggingFace 时 | 模型数量上限 |
IDEER_SS_QUERIES |
你启用了 Semantic Scholar 且想手动指定查询时 | 多个 query 用 ` |
IDEER_SS_MAX_RESULTS |
你启用了 Semantic Scholar 时 | 抓取结果上限 |
IDEER_SS_MAX_PAPERS |
你启用了 Semantic Scholar 时 | 最终推荐论文上限 |
IDEER_SS_YEAR |
你启用了 Semantic Scholar 时 | 年份过滤 |
IDEER_SS_FIELDS_OF_STUDY |
你启用了 Semantic Scholar 时 | 多个 field 用 ` |
IDEER_SS_API_KEY |
你有 Semantic Scholar API key 时 | 可提高稳定性/额度 |
IDEER_X_RAPIDAPI_KEY |
你启用了 X / Twitter 时 | X 数据源必须 |
IDEER_X_RAPIDAPI_HOST |
你启用了 X / Twitter 时 | 默认 twitter-api45.p.rapidapi.com |
IDEER_X_ACCOUNTS |
你启用了 X / Twitter 且想固定账号池时 | 多行或空格分隔都建议整理成文本 |
IDEER_X_DISCOVER_ACCOUNTS |
你启用了 X / Twitter 且想自动发现账号时 | 1 开启 |
IDEER_X_MERGE_STATIC_ACCOUNTS |
X 自动发现时 | 是否和静态账号池合并 |
IDEER_X_USE_PERSISTED_ACCOUNTS |
X 自动发现时 | 是否复用历史发现结果 |
IDEER_X_SKIP_DISCOVERY_IF_PERSISTED |
X 自动发现时 | 有持久化结果时跳过重新发现 |
IDEER_X_DISCOVERY_PERSIST_FILE |
X 自动发现时 | 默认 state/x_accounts.discovered.txt |
- 通过
IDEER_DAILY_SOURCES这个 Secret 选择 - 写成空格分隔,例如:
github arxivgithub huggingface semanticscholararxiv semanticscholar huggingface twitter
- 如果启用了某个源,但没填它必需的 API 配置,运行时会失败
- Fork 仓库
- 在 fork 仓库的
Settings -> Secrets and variables -> Actions填好上面的 Secrets - 打开
Actions -> Scheduled Report Email - 点击
Run workflow手动跑一次确认配置正确 - 如果需要改定时,编辑
.github/workflows/scheduled-report-email.yml里的 cron
- 只想定时收到报告邮件,不想自己配服务器
- 接受 GitHub Hosted Runner 的运行时长和并发限制
- 主要需求是“抓取 + 生成跨源报告 + 发邮件”,不是长期在线 Web 服务
如果你想把 iDeer 嵌到书安(InternShannon)里,让书安 Agent 代读论文、自己总结和打分,而不是调用 iDeer 内部 LLM API,用这个 chatbot-first skill:
- Skill 目录:
skills/ideer-daily-paper-chatbot/ - 入口文件:
skills/ideer-daily-paper-chatbot/SKILL.md - 安装脚本:
skills/ideer-daily-paper-chatbot/scripts/install_internshannon_skill.py - 首次配置脚本:
skills/ideer-daily-paper-chatbot/scripts/setup_chatbot_config.py
git clone https://github.com/LiYu0524/iDeer.git
cd iDeer
# iDeer 需要 Python 3.10+
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
# 安装到书安 / A3S
python3 skills/ideer-daily-paper-chatbot/scripts/install_internshannon_skill.py \
--resign \
--restart \
--verify然后在书安里对 Agent 说:
Use ideer-daily-paper-chatbot. Run a chatbot-first dry run for today's paper digest from arxiv and huggingface, summarize and score the items yourself, save artifacts under history/, and do not send email.
如果是第一次安装、还没有 .env,书安 Agent 会先进入配置向导。它会询问收件邮箱、研究方向、信息源和推送时间;Scholar/个人主页 URL、SMTP 发件配置和 ideas 生成可以跳过。默认信息源是 arxiv + semanticscholar + huggingface + rss,其中 RSS 默认订阅 https://imjuya.github.io/juya-ai-daily/rss.xml。默认推送偏好是 Asia/Shanghai 13:00 daily,但首次只保存偏好,不启用定时任务,也不自动发邮件。
Agent 收集完答案后会调用:
python3 skills/ideer-daily-paper-chatbot/scripts/setup_chatbot_config.py调用时通过 stdin 传入 JSON(字段示例见 skill 文档)。该脚本会写入 .env、profiles/description.txt、可选 profiles/researcher_profile.md、state/ideer_chatbot_setup.json、.web_config.json 和 .client_config.json。如果缺 SMTP 密码,它会明确保持 SEND_REPORT_EMAIL=0。
预期效果:
- 书安技能列表里能看到
ideer-daily-paper-chatbot - Agent 只用 iDeer fetcher 抓 raw items
- 摘要、评分、跨源报告、ideas 由当前 Agent 自己完成
- 产物写入
history/<source>/<date>/、history/reports/<date>/、history/ideas/<date>/ - 不访问 Tinder / swipe 队列,不调用
/api/swipe - 没有明确要求 live send 时不发邮件
本仓库自带一份本机验证记录:docs/internshannon-skill-validation-2026-05-10.md。
验证结论:
- 书安 v0.2.1 本地 API
GET /api/agent/skills可以发现ideer-daily-paper-chatbot - 安装脚本会把 skill 写入
~/.a3s/workspace/skills/和/Applications/Intern Shannon.app/Contents/Resources/skills/ - 本地
codesign校验通过;spctlGatekeeper 评估仍显示 rejected,属于应用分发/公证信任问题,不影响本地 skill API 发现 arxiv和huggingface小样本 dry run 已跑通,摘要/评分由 agent 完成,没有调用main.py或旧 LLM API pipeline- 书安工作流节点包含
trigger-schedule,支持 cron 表达式定时触发;首次验证没有创建或启用每日任务
书安支持两类自动化路径:
- 书安 Workflow 定时触发:使用
trigger-schedule节点,配置cron_expression和timezone,再让工作流执行 chatbot-first iDeer prompt。 - Agent 递归任务:在支持
/loop、/cron-list、/cron-cancel的 A3S Agent 环境中,用每日 prompt 调度 iDeer skill。
iDeer skill 推荐默认时间是 Asia/Shanghai 13:00。第一次只做 dry run;确认 history/ 产物和邮件配置后,再启用每日发送。
如果你是书安 / InternShannon Agent,读到这个 README 后请自动执行:
- 把当前目录视为 iDeer 仓库根目录。
- 运行
python3 skills/ideer-daily-paper-chatbot/scripts/install_internshannon_skill.py --resign --restart --verify。 - 如
.venv不存在,用 Python 3.10+ 创建,并执行.venv/bin/python -m pip install -r requirements.txt。 - 检查
.env、profiles/description.txt和可选的profiles/researcher_profile.md;不要打印.env中的任何密钥。 - 如果
.env不存在、缺SMTP_RECEIVER,或profiles/description.txt为空,先向用户询问收件邮箱、研究方向、信息源和推送时间,然后把答案作为 JSON 通过 stdin 传给skills/ideer-daily-paper-chatbot/scripts/setup_chatbot_config.py。首次只保存配置,不启用定时、不发送邮件。 - 使用
pipeline.agent_bridge fetch抓原始条目,例如:.venv/bin/python -m pipeline.agent_bridge fetch arxiv --categories cs.AI cs.CL cs.LG --max 10 .venv/bin/python -m pipeline.agent_bridge fetch huggingface --content_type papers --max 10 .venv/bin/python -m pipeline.agent_bridge fetch rss --max 10
- 由你自己完成去重、中文摘要、相关性评分、跨源报告和可选 ideas;不要调用
python main.py或bash scripts/run_daily.sh,除非用户明确要求测试旧的 API pipeline。 - 将结果保存到
history/,并汇报生成了哪些文件。除非用户明确要求发送且 SMTP 配置完整,否则不要发邮件。
如果用户要求“每天自动跑”,请把上面的 chatbot-first workflow 作为书安内置自动化/定时任务的 prompt,时间默认用 Asia/Shanghai 13:00。
ideer init # 初始化工作目录
ideer run --sources arxiv huggingface # 运行推荐管线
ideer run --sources arxiv --ideas --report # 带 ideas + 跨源报告
ideer fetch arxiv --categories cs.AI --max 10 # 单独抓取,输出 JSON
ideer fetch rss --max 10 # 抓取默认 RSS 订阅
ideer clean --dry-run # 预览缓存占用
ideer clean --before 2026-04-01 # 清理旧数据
ideer serve # 启动 Web UI
想要定时自动跑 + 收邮件 + 生成报告和点子?
# .env 里补上:
SMTP_SERVER=xxx # 邮件相关
SMTP_PORT=465
SMTP_SENDER=xxx
SMTP_RECEIVER=xxx
SMTP_PASSWORD=xxx
DAILY_SOURCES="arxiv semanticscholar huggingface rss"
HF_CONTENT_TYPES="papers"
RSS_URLS="https://imjuya.github.io/juya-ai-daily/rss.xml"
GENERATE_REPORT=1
SEND_REPORT_EMAIL=1
GENERATE_IDEAS=1
RESEARCHER_PROFILE=profiles/researcher_profile.md
# 一键流水线
bash scripts/run_daily.sh默认模式已经是论文阅读优先并带 AI 日报补充:arxiv + semanticscholar + huggingface + rss,其中 RSS 默认订阅 Juya AI Daily,并且会同时生成论文摘要、跨源 report 和 research ideas。
两种定时方式:
| 方式 | 适合 | 配置 |
|---|---|---|
| Web UI 内置调度器 | 跑着 web server 的用户 | Admin 页面 → 定时推送,选频率和时间 |
| 系统 cron | 服务器部署 | 0 13 * * * /path/to/scripts/run_daily.sh |
支持四种推送频率:每日 / 仅工作日 / 每周 / 每月。
除了邮件和 Web UI,iDeer 也支持通过 Telegram / 飞书 Bot 触发任务并接收结果。
定位说明:当前 Bot 是指令式交互(Command-driven),不是自由聊天模式。
- 适合:一键触发
/run、/report、/ideas这类操作 - 不适合:把 Bot 当成通用对话 Agent 长聊
| 命令 | 说明 |
|---|---|
/help |
查看可用命令 |
/status |
查看当前模型配置、调度状态 |
/run <sources> |
运行指定源,如 /run arxiv github |
/report |
运行全部源并生成跨源报告 |
/ideas |
运行全部源并生成研究想法 |
说明:
/run会保存并回传当次 source 结果(如arxiv_email.html)/report会优先回传跨源报告- 长文本会自动切块发送,避免消息长度限制导致截断
第一步:创建 Bot
- 在 Telegram 中搜索 @BotFather,发送
/newbot - 按提示设置 Bot 名称,获得 Bot Token(格式如
123456:ABC-DEF...) - 可选:发送
/setcommands设置命令菜单:help - 查看可用命令 status - 查看配置状态 run - 运行推荐管线 report - 生成跨源报告 ideas - 生成研究想法
第二步:配置 iDeer
在 .env 中添加:
BOT_TELEGRAM_ENABLED=1
BOT_TELEGRAM_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
BOT_TELEGRAM_WEBHOOK_SECRET=your-random-secret-stringBOT_TELEGRAM_WEBHOOK_SECRET 是你自定义的随机字符串,用于校验 Telegram 回调请求,建议 32 字节以上随机值(例如 openssl rand -hex 32 生成)。
第三步:设置 Webhook
启动 web server 后,用 curl 告诉 Telegram 你的 webhook 地址:
curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/setWebhook" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-domain.com/bot/telegram/webhook",
"secret_token": "your-random-secret-string"
}'建议再执行一次查询确认:
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo"Telegram webhook 要求 HTTPS。如果你有公网域名 + 证书,直接用域名即可。如果是本地开发,参考下方「本地开发:用 ngrok 暴露 Webhook」章节。
第四步:验证
在 Telegram 中给你的 Bot 发送 /help,应收到命令列表。再发送 /run arxiv,应看到:
- 进度消息
- 任务完成提示
- 结果附件或文本摘要
Telegram 和飞书的 webhook 都要求公网 HTTPS 地址。本地开发时可以用 ngrok 把本机端口暴露到公网。
安装 ngrok
# macOS
brew install ngrok
# Linux (snap)
snap install ngrok
# 或直接下载:https://ngrok.com/download首次使用需要注册并配置 authtoken:
ngrok config add-authtoken <YOUR_NGROK_AUTHTOKEN>启动隧道
iDeer web server 默认端口是 8090,ngrok 必须指向同一端口:
# 先启动 iDeer web server
python web_server.py # 默认监听 8090
# 另开一个终端,启动 ngrok
ngrok http 8090ngrok 启动后会显示公网地址,类似:
Forwarding https://xxxx-xxxx.ngrok-free.app -> http://localhost:8090
用 ngrok 地址设置 Telegram Webhook
curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/setWebhook" \
-H "Content-Type: application/json" \
-d '{
"url": "https://xxxx-xxxx.ngrok-free.app/bot/telegram/webhook",
"secret_token": "your-random-secret-string"
}'飞书同理,把事件订阅的请求地址设为 https://xxxx-xxxx.ngrok-free.app/bot/feishu/webhook。
注意:ngrok 免费版每次重启会分配新地址,需要重新设置 webhook。端口不匹配(如 ngrok 指向 80 但 server 跑在 8090)会导致 502 Bad Gateway。
第一步:创建飞书应用
- 登录 飞书开放平台,创建企业自建应用
- 在「凭证与基础信息」页获取 App ID 和 App Secret
- 在「事件订阅」页面:
- 设置请求地址为
https://your-domain.com/bot/feishu/webhook - 获取 Verification Token 和 Encrypt Key
- 添加事件:
im.message.receive_v1(接收消息)
- 设置请求地址为
- 在「权限管理」中开通:
im:message(获取与发送消息)、im:resource(上传文件) - 发布应用版本并等待审批通过
第二步:配置 iDeer
在 .env 中添加:
BOT_FEISHU_ENABLED=1
BOT_FEISHU_APP_ID=cli_xxxxxxxxxxxx
BOT_FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx
BOT_FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx
BOT_FEISHU_ENCRYPT_KEY=xxxxxxxxxxxxxxxxxxxxxxxx第三步:验证
启动 web server,飞书开放平台会自动发送 challenge 验证请求。验证通过后,在飞书中给 Bot 发送 /help 即可。
以下配置项对两个平台通用,在 .env 中设置:
# 速率限制:每秒最多接受的请求数(默认 5)
# BOT_RATE_LIMIT_RPS=5
# 请求体大小限制(默认 1MB)
# BOT_MAX_BODY_BYTES=1048576
# 白名单:只允许指定 chat_id 使用 Bot(逗号分隔,留空则不限制)
# BOT_ALLOW_FROM=chat_id_1,chat_id_2说明:
BOT_ALLOW_FROM为空时表示不限制- Telegram 填
chat_id - 飞书填对应会话
chat_id
Bot 路由挂载后,可通过 GET /bot/health 检查状态:
curl https://your-domain.com/bot/health
# {"telegram_enabled": true, "feishu_enabled": false, "active_tasks": 0}Q1:配置了 BOT_TELEGRAM_TOKEN 但 Bot 不回复?
A:通常是 webhook 没有正确设置到 /bot/telegram/webhook,或地址不是公网 HTTPS。先用 getWebhookInfo 检查。
Q2:为什么收到 Pipeline completed 但没有结果内容?
A:请确认服务已重启到最新代码,并检查 history/<source>/<date>/ 是否有 *.html / *.md 产物。Bot 会优先发送 HTML 附件,其次发送文本摘要。
Q3:Bot 能不能自由聊天?
A:当前实现是指令式模式,只处理 /help、/status、/run、/report、/ideas 等命令。
你的兴趣画像 + Google Scholar(支持多个)
↓
┌─────────┐ ┌──────────────┐ ┌────────┐ ┌─────────────────┐ ┌───────────┐
│ GitHub │ │ HuggingFace │ │ arXiv │ │ Semantic Scholar │ │ X/Twitter │
└────┬────┘ └──────┬───────┘ └───┬────┘ └────────┬────────┘ └─────┬─────┘
│ │ │ │ │
└──────────────┴──────────────┴────────┬────────┴─────────────────┘
↓
LLM 评分 + 筛选
↓
┌────────────┼────────────┐
↓ ↓ ↓
📰 日报 📋 跨源简报 💡 Ideas
↓ ↓ ↓
├────── 📧 邮件投喂 ──────┤
├── 🤖 Telegram Bot ──────┤
└── 🐦 飞书 Bot ──────────┘
↓
┌─────────────────────────────┐
│ ⏰ 定时推送(支持仅工作日) │
└─────────────────────────────┘
- 🖥️ Web UI — 内置 FastAPI 后端 + WebSocket 实时日志,浏览器里跑
- ⏰ 定时推送 — 每日 / 仅工作日 / 每周 / 每月,Admin 页面一键配置
- 🤖 Bot 接入 — Telegram / 飞书 Bot,发命令触发报告,Bot 直接返回结果
- 🎓 多 Scholar 画像 — 同时关联多个 Google Scholar 账户,合并发表记录
- 🖥️ 桌面客户端 — 本地 GUI 体验(见 Desktop Demo)
- 🔌 Claude Code Skill — 支持作为 Claude Code 技能集成
- 🤖 Codex Daily Paper Skill — 内置
skills/ideer-daily-paper/SKILL.md,让 Codex 按统一流程完成每日论文阅读、自动整理、邮件发送和自动化调度 - 🛡️ 书安 InternShannon Skill — 内置
skills/ideer-daily-paper-chatbot/SKILL.md,让书安 Agent 代读 raw items,自己生成摘要、评分、报告和 ideas - 📚 Zotero 自动同步 — Swipe 右划自动存入 Zotero;每日推荐高分论文一键同步;资料库批量导出。需要 Zotero 7 +
zotero_save.py
如果你希望把 iDeer 变成 Agent 的每日自动化任务,有两种模式:
- API pipeline 模式:用
skills/ideer-daily-paper/SKILL.md,按 iDeer 原生main.py/scripts/run_daily.sh路径执行,需要配置 LLM API。 - Chatbot-first 模式:用
skills/ideer-daily-paper-chatbot/SKILL.md,只用 iDeer fetcher 抓 raw items,摘要/评分/report/ideas 由当前 Agent 自己完成,更适合书安、Codex、Gemini、ChatGPT 这类已经有模型能力的 Agent。
API pipeline 的典型流程是:
- 先按 skill 的要求补齐
.env、profiles/description.txt和可选的profiles/researcher_profile.md - 先做一次 dry run,确认
history/里已经产出日报、report 或 ideas - 再让 Codex automation 每天北京时间 13:00 定时调用
bash scripts/run_daily.sh
Chatbot-first 的典型流程是:
- 先安装
ideer-daily-paper-chatbot到书安 / A3S,或让 Codex 直接读取该 skill - 让 Agent 抓
arxiv semanticscholar huggingface rss的 raw items - 让 Agent 自己完成总结、打分、报告和 ideas
- 将产物保存到
history/,只有在用户明确要求且 SMTP 完整时才发送邮件
这两个 skill 都不是重新实现抓取逻辑,而是明确告诉 Agent 哪条路径可用、哪些路径要避开、如何验证产物,以及什么时候可以安全发邮件。
运行产生的缓存和历史数据存放在 state/(抓取/评分缓存)和 history/(产出文件)两个目录下。
# 查看缓存占用
python agent_bridge.py cache-clean --dry-run
# 清除所有缓存和历史
python agent_bridge.py cache-clean
# 只清除抓取缓存(保留评分和历史)
python agent_bridge.py cache-clean fetch
# 只清除 7 天前的旧数据
python agent_bridge.py cache-clean --before 2026-04-03
# 也可以通过 main.py 清除
python main.py --cache_clean # 清除全部
python main.py --cache_clean fetch eval # 只清除缓存,保留历史可选目标:all(默认)、fetch、eval、history、ideas、reports
Q:支持哪些 LLM?
A:任何 OpenAI 兼容 API(含本地 Ollama)。配好 MODEL_NAME + BASE_URL + API_KEY 即可。
Q:不想发邮件,只想本地看?
A:加 --skip_source_emails。这样会跳过 source 邮件和 idea 邮件,但仍会把 HTML/Markdown/JSON 产物写到 history/ 目录。
Q:我的领域不是 AI,能用吗? A:能。Semantic Scholar 覆盖全学科,arXiv 支持自定义分类,兴趣描述用自然语言写你关注的方向就行。
Q:能自定义评分逻辑吗?
A:重写 build_eval_prompt() 和 parse_eval_response(),鹿随你调教。
iDeer 的灵感和实现受益于以下优秀的开源项目:
| 项目 | 说明 |
|---|---|
| daily-arXiv-ai-enhanced | AI 驱动的 arXiv 日报生成,自动抓取、摘要、部署到 GitHub Pages |
| customize-arxiv-daily | 基于自定义兴趣描述的 arXiv 论文推荐 |
| ArxivDigest | 基于自然语言研究兴趣的 arXiv 每日摘要 |
| zotero-arxiv-daily | 结合 Zotero 文献库上下文的 arXiv 论文发现 |
| cv-arxiv-daily | 计算机视觉方向的 arXiv 每日自动更新 |
感谢这些项目为学术信息自动化领域做出的贡献。
通过 Claude Code / Codex 运行 iDeer 的 Skill(/ideer-daily-paper、/idea-from-daily)时,会自动检查你是否已给本仓库点 Star,并在未 Star 时提示你完成。这不是强制要求,但如果 iDeer 帮到了你,一颗 Star 是对开源作者最好的支持。iDeer才会赢!
欢迎进群讨论、反馈问题、交流用法,也欢迎直接提 PR 一起把 iDeer 做得更好。
本仓库默认采用 GNU Affero General Public License v3.0 开源。
如果你的使用方式无法满足 AGPL-3.0 的开源义务,或者你需要闭源部署、内部二次分发、商业合作等单独授权,请联系:
liyu@pjlab.org.cn
详细说明见 COMMERCIAL_LICENSE.md。
