Skip to content

About

一个PubPeer周报生成项目

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

42 Commits

Folders and files

Repository files navigation

PubEcosphere

PubEcosphere

PubPeer 学术诚信周报生成管线:抓取 → 两阶段打分 → LLM 周报

官网  ·  微信公众号

Important

周报已暂停更新。 本仓库代码、历史往期与站点归档仍保留,供查阅与复用。

基于 PubPeer(pubpeer.com)公开评论,抓取存在作者与打假人激烈交锋的论文,多维度打分排序,由大模型生成周报;流水线提供 MCP server 与 subagent 提示词(src/agent/)。

项目简介

学术打假是维护科研诚信的重要防线。PubPeer 是全球最大的学术评论平台之一,评论区常上演作者申辩与质疑者对线的交锋。本系统:

  • 自动监控 PubPeer 高关注论文的评论动态
  • 智能打分 筛选值得报道的「激烈交锋」案例
  • 周报化 由大模型生成 HelloGitHub 式周报
  • Agent 化 流水线封装为 MCP server + subagent

核心工作流

capture(每日捕获 feed)→ revisit(≥7 天后回访评论线程)→ rank(两阶段打分选优)
→ pick(每类选篇打包)→ material(图材合并)→ LLM 生成周报
→ 手动粘贴发布公众号 → 更新 site.json(官网)

快速开始

前置:Python 3 环境(conda activate pubecosphere);安装项目依赖(pip install -e .,src 布局可编辑安装,python -m 命令依赖它);配置 API 密钥(见「LLM 配置」)。

# 爬虫
python -m crawler.crawl --db data/pubpeer.db capture            # 每日捕获 feed
python -m crawler.crawl --db data/pubpeer.db revisit --limit 50  # 回访

# 生成
ISSUE=n bash modules/weekly/run_issue.sh  # 一键跑一期全流程

脚本流程(数据由 cron 爬虫供给,脚本默认不跑爬虫):capture/revisit(可选) → rank → pick → material → generate/assemble → md2html → polish_html → inline_images(base64)。

常用环境变量(完整见 modules/weekly/run_issue.sh 头部注释):

变量 默认 说明
ISSUE 1 期号
WINDOW "10 3" 回访/打分相对窗口(天)
WINDOW_FIELD captured_at 打分日期基准字段
MIN_SCORE 0.50 pick 选稿门槛
RUN_CAPTURE 0 1 = 先跑每日 capture(默认 0:capture 是每日 cron 操作)
RUN_REVISIT 0 1 = 先跑回访 revisit(默认 0:数据由长期 cron 爬虫供给,脚本只管生成)
DRY_RUN 0 1 = 只预览 pick

每期产物在 output/issue/<期号>/:score/(打分报告)、pub/ + manifest.*(素材与清单;图材合并图与结构化素材 md 写回 pub/<pid>_files/)、weekly/(周报成品 + *-base64.html 微信粘贴用)。不用脚本时各步骤的单条命令见 modules/weekly/run_issue.sh 头注释与 agent/README.md。

LLM 周报生成

  • python -m writer generate 用同一个模型完成提取 + 写稿(纯文本,图片描述来自评论者配图时的原话)。
  • python -m llm md2html / python -m llm.inline_images 是两条产品线共用的渲染工具。

提示词见 modules/weekly/prompts/。

LLM 配置

密钥只走环境变量 / 仓库根 .env:

cp .env.example .env        # 填入 PUBECOSPHERE_LLM_API_KEY=sk-…

单模型路径变量:PUBECOSPHERE_LLM_MODEL(默认 deepseek-v4-flash)、PUBECOSPHERE_LLM_MAX_TOKENS(默认顶满模型上限)。

Agent 集成

同一套 CLI 与写稿提示词,两种挂载形态:MCP server(17 个确定性工具,供定时/无头客户端)与 subagent 系统提示词(交互式 agent,全流程编排 + 写稿一体)。确定性步骤走 CLI/MCP 工具,写稿默认由 subagent 本体按 modules/weekly/prompts/ 提示词完成,「走 API」时用 writer generate / pubai4s_run。

前提:一次 pip install -e . 装齐全部包(含 modules/ai4s 的推文流水线,无需单独安装);cd src/vendor/md2html-cli && npx -y bun install(首次联网拉传递依赖一次);.env 配 PUBECOSPHERE_LLM_API_KEY(仅「走 API」模式需要)。

MCP 挂载(客户端的 MCP 配置里添加,必须绝对路径启动脚本):

{
  "mcpServers": {
    "pubecosphere": {
      "command": "bash",
      "args": ["/abs/path/to/PubEcosphere/src/agent/mcp.sh"]
    }
  }
}

客户端支持 MCP 就直接用(无需第三方 adapter):把上面这段放进客户端的 MCP 配置文件即可;部分客户端首次使用需信任项目,并可用 toolExposure 之类配置决定哪些工具直接暴露给模型。

Subagent 挂载:把对应文件内容作为 subagent 的系统提示词加载,工作目录指向仓库根,授予 Bash / Read / Write / Edit / Glob / Grep 权限:

  • src/agent/pubecosphere-weekly.md — 周报全流程:status 查询 → rank 打分 → pick 选稿(先 dry-run 等人工确认)→ 图材 → 写稿 → 排版渲染;
  • src/agent/pubai4s-post.md — AI4S 项目推文:fetch 抓取 → 材料提取 → 写稿 → 渲染 base64 成品 → 官网归档。

agent 上手路径(三步,不用先读完全文):

# 1) 自检:提示词 / 离线自测 / 转换器 / 状态机 / 数据库可读,五项全 PASS
python -c "from agent.tools import run_tool; print(run_tool('preflight', {}).text)"

# 2) 问状态机:当前走到哪、下一步该跑什么命令(next_cmd 可直接复制执行)
python -m scoring.pipeline status --db data/pubpeer.db --issue <N>

# 3) 按 next_cmd 走,跑完再问一次 status,next_cmd 自动前移

pick 先 dry-run 给人工批准,草稿生成后人工审核再发布。只读命令(status / coverage)在库缺失时干净退出 1 并给一行原因,不会静默建出空库。工具清单与两形态分工详见 agent/README.md。

网站

https://piwir.github.io/PubEcosphere/ (Vue 3 + Vite,GitHub Actions 自动部署):展示当前期号与公众号入口,另有往期归档与项目介绍。

站点数据由单文件 src/site/src/data/site.json 维护:每期生成结束时自动归档(python -m sitejson sync --issue N,写 currentIssue / issueDate / window + issues[] 归档条目,公众号链接除外)。发布后只需在 issues[] 里补上公众号链接并重跑同一条命令(首页 CTA 由它派生),再 push,Actions 自动重新部署:

  1. currentIssue / issueDate / window → 新一期(自动写入);
  2. issues 数组头部加一条 { "issue": N, "date": "YYYY-MM-DD", "wechatUrl": "…", "summary": "一句话摘要" }(自动写入,wechatUrl 留空);
  3. 发布后在 issues[] 条目里补 wechatUrl → python -m sitejson sync --issue N 同步 wechat.url / wechat.label(链接未发布时首页显示「即将发布」占位)。

AI4S 推文归档(官网 AI4S 页)同理,但走单独命令,只动 ai4s.posts:推文渲染后跑 python -m sitejson sync-ai4s --dir output/PubAI4S/<owner>-<repo>(repo / 项目名 / 摘要 / 日期从 post.md 派生,按 repo 去重、幂等); 发布后在 ai4s.posts[].url 补公众号链接再跑一次,页面即由「即将发布」变为可点阅读。

本地开发与换图说明见 site/README.md。

数据来源

  • 中科院分区表 2025(大类/小类/分区/Top):data/cas2025.csv,源自 hitfyd/ShowJCR 整理的中科院文献情报中心分区表。
  • JCR 影响因子 2025:data/jcr2025.csv,同源仓库(JCR2025-UTF8.csv)。
  • CCF 推荐目录 2026 / 计算领域高质量期刊 T 分级:data/ccf2026.csv / data/ccft2025.csv,同源仓库。
  • 国际期刊预警名单 2025:data/journal_alert.csv,同源仓库(GJQKYJMD2025.csv)。
  • PubPeer 数据:官方 /api/recent feed + 文章页 + /v3/publications(DOI 反馈摘要)。
  • DOI 解析:CrossRef API(api.crossref.org,按 ISSN 过滤 + 容器期刊名校验)。
  • 以上数据文件均在 data/。
  • data/*.csv(分区表/JCR/CCF/预警)随仓库提交,派生自 hitfyd/ShowJCR(GPLv3);原数据版权归中科院文献情报中心 / Clarivate / CCF 等来源方,不属本项目 MIT 代码。自行下载使用需遵循 ShowJCR 及原始数据条款。

md→html 转换器

周报 md 转微信兼容 HTML 使用仓库内 vendored 转换器(src/vendor/md2html/ 包 + src/vendor/md2html-cli/ 薄 CLI,经裁剪:去掉 mermaid,bun 默认经 npx -y bun 启动),不依赖任何外部 skill。该转换器派生自 JimLiu/baoyu-skills(baoyu-md,MIT License),License 保留于 src/vendor/md2html/src/LICENSE。

项目结构

PubEcosphere/
├── src/                  # 通用层 + 官网 + agent 接口
│   ├── core/             # 通用工具(期号派生/时间/打假人名单/展示/DB/提示词骨架)
│   ├── llm/              # 通用 LLM 客户端 + md→html / 图片内联渲染
│   ├── agent/            # MCP server + 两份 subagent 提示词
│   ├── site/             # 官网前端
│   ├── sitejson/         # 官网归档
│   ├── vendor/           # md→html 转换器
│   └── repopath.py       # 仓库根定位
├── modules/
│   ├── weekly/           # 周报产品线:crawler / scoring / writer + prompts + run_issue.sh
│   └── ai4s/             # 推文产品线:pubai4s + prompts
├── pyproject.toml        # 打包配置
├── images/               # 项目素材
├── data/                 # 运行数据
├── output/               # 输出周报
└── docs/                 # 本地私有文档(gitignored)

详细文档

文档 内容
modules/weekly/prompts/ 周报文本提取 / 写稿 两套提示词
src/agent/README.md MCP 工具 + subagent 提示词说明
src/site/README.md 网站说明

免责声明

  1. 本项目仅供学术诚信研究与交流使用,所有数据来源于 PubPeer 公开评论。
  2. 本项目不对因使用本系统造成的任何后果负责。

License

本仓库代码以 MIT License 开源(见 LICENSE)。vendored 转换器 src/vendor/md2html/ 派生自 JimLiu/baoyu-skills(baoyu-md,MIT),其 License 保留于 src/vendor/md2html/src/LICENSE。外部数据版权归各自来源方:data/*.csv 派生自 hitfyd/ShowJCR(GPLv3,原数据归中科院文献情报中心 / Clarivate / CCF 等),数据文件不属本项目 MIT 代码;PubPeer / CrossRef 数据归对应平台。

About

一个PubPeer周报生成项目

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages