Loading... # Auto Paper Digest AI 论文自动化处理管道技术分析 # 一、概述 ## 1. 项目简介 Auto Paper Digest(APD)是一个自动化 AI 论文处理管道,能够自动追踪 Hugging Face 每周热门 AI 论文,下载 PDF,导入 NotebookLM 生成视频讲解,并将所有内容归档为可搜索的周报摘要。 ## 2. 核心功能 - 自动抓取 Hugging Face 每周 AI 论文 - 从 arXiv 下载论文 PDF(支持 SHA256 校验) - 通过 NotebookLM 自动生成论文视频讲解 - 自动发布视频到 HuggingFace Dataset - 自动发布视频到抖音创作者平台 - 提供 Gradio 门户网站在线播放视频 # 二、系统架构 ## 1. 整体架构 项目采用三阶段流水线设计,每个阶段可独立执行,支持断点续传。 ```mermaid graph TB subgraph Phase1["Phase 1: Upload"] HF["HuggingFace Papers"] --> ArXiv["arXiv PDFs"] ArXiv --> NBLM["NotebookLM"] end subgraph Phase2["Phase 2: Download"] NBLM --> Video["Videos"] end subgraph Phase3["Phase 3: Publish"] Video --> HFDS["HuggingFace Dataset"] Video --> Douyin["Douyin Creator"] end subgraph Storage["SQLite Database"] DB[(状态追踪<br/>NEW → PDF_OK →<br/>NBLM_OK → VIDEO_OK)] end HF -.状态.-> DB ArXiv -.状态.-> DB NBLM -.状态.-> DB Video -.状态.-> DB subgraph Portal["Portal Website"] PortalWeb["Gradio Portal<br/>(HF Spaces)"] end HFDS --> PortalWeb ```   ## 2. 组件说明 ### A. 核心模块 | 模块 | 文件 | 功能 | |------|------|------| | CLI 入口 | cli.py | 命令行接口,提供所有用户命令 | | 配置管理 | config.py | 配置常量和环境变量 | | 数据库 | db.py | SQLite 状态持久化 | | HF 抓取 | hf_fetcher.py | HuggingFace 论文抓取(支持周 URL) | | PDF 下载 | pdf_downloader.py | arXiv PDF 下载器(SHA256 校验) | | NotebookLM | nblm_bot.py | NotebookLM 自动化操作 | | 抖音发布 | douyin_bot.py | 抖音创作者平台自动化 | | HF 发布 | publisher.py | HuggingFace Dataset 发布 | | 周报生成 | digest.py | 本地周报生成 | ### B. 数据流 1. 论文获取:从 HuggingFace `/week/YYYY-WXX` URL 获取每周热门论文列表 2. PDF 下载:从 arXiv 下载 PDF,使用 SHA256 校验避免重复下载 3. 视频生成:上传到 NotebookLM,触发 AI 视频生成(异步) 4. 视频下载:从 NotebookLM 下载生成的视频文件 5. 内容发布:上传到 HuggingFace Dataset 和抖音创作者平台 6. 门户展示:通过 Gradio Spaces 门户网站在线播放 # 三、技术实现 ## 1. 状态机设计 项目使用 SQLite 数据库实现状态追踪,确保处理过程的可恢复性。 ```mermaid stateDiagram-v2 [*] --> NEW: 论文抓取 NEW --> PDF_OK: PDF 下载成功 NEW --> ERROR: 下载失败 PDF_OK --> NBLM_OK: 上传 NotebookLM PDF_OK --> ERROR: 上传失败 NBLM_OK --> VIDEO_OK: 视频下载成功 NBLM_OK --> NBLM_OK: 等待生成 NBLM_OK --> ERROR: 下载失败 VIDEO_OK --> [*]: 完成 ERROR --> NEW: 自动重试 ```   ### 状态定义 | 状态 | 含义 | 说明 | |------|------|------| | NEW | 论文已抓取 | 初始状态,等待处理 | | PDF_OK | PDF 已下载 | 文件已通过 SHA256 校验 | | NBLM_OK | 已上传 NotebookLM | 视频生成中,可能需要等待 | | VIDEO_OK | 视频已下载 | 可以发布 | | ERROR | 处理失败 | 支持自动重试 | ## 2. 浏览器自动化 ### A. Playwright 集成 项目使用 Playwright 进行浏览器自动化,支持: - Google 账号登录(NotebookLM) - 抖音创作者平台登录 - 登录状态持久化 ### B. 登录状态管理 登录状态保存在 `data/profiles/` 目录下: - 浏览器配置文件(含 Cookies) - 支持一次登录,长期使用 ## 3. 缓存机制 ### A. PDF 缓存 ```mermaid graph LR A[下载 PDF] --> B{SHA256 校验} B -->|文件存在| C[跳过下载] B -->|文件不存在| D[保存到本地] ```   实现细节: - 使用文件 SHA256 哈希值作为唯一标识 - 相同文件自动跳过,节省带宽 - 支持强制重新下载(`--force` 参数) ### B. 视频缓存 - 使用文件名前缀匹配:`{paper_id}_*.mp4` - 支持新的命名格式:`{paper_id}_{video_title}.mp4` - 已下载视频自动跳过 ### C. 发布缓存 - metadata.json 中记录已发布的论文 - 重复发布自动跳过 # 四、工作流程 ## 1. 三阶段工作流 ### Phase 1:上传并触发视频生成 ```bash apd upload --week 2026-01 --headful --max 10 ``` 该命令会: 1. 获取 HuggingFace 本周论文(使用 `/week/YYYY-WXX` URL) 2. 下载 arXiv PDF(支持缓存) 3. 上传到 NotebookLM 4. 触发视频生成(不等待完成) ### Phase 2:下载生成的视频 ```bash apd download-video --week 2026-01 --headful ``` 等待几分钟后(视频生成需要时间),运行下载命令。支持缓存,已下载的视频会自动跳过。 ### Phase 3:发布到 HuggingFace ```bash apd publish --week 2026-01 ``` 该命令会: 1. 上传视频到 HuggingFace Dataset 2. 更新 metadata.json 3. 生成 Markdown 摘要 ### Phase 3b:发布到抖音(可选) 首次登录: ```bash apd douyin-login ``` 发布视频: ```bash apd publish-douyin --week 2026-01 --headful ``` 该命令会: 1. 自动上传视频到抖音创作者平台 2. 填写视频标题(论文标题) 3. 添加话题标签(AI、论文解读等) 4. 自动点击发布 ## 2. 按日处理(可选) 除了按周处理外,也支持按日期处理论文: ```bash # 获取指定日期的论文 apd fetch --date 2026-01-08 --max 10 # 上传并生成视频 apd upload --date 2026-01-08 --headful --max 10 # 下载视频 apd download-video --date 2026-01-08 --headful # 发布到抖音 apd publish-douyin --date 2026-01-08 --headful ``` ## 3. 目录结构 按日和按周的数据分开存放: - `data/pdfs/weekly/2026-01/` - 按周处理的 PDF - `data/pdfs/daily/2026-01-08/` - 按日处理的 PDF - `data/videos/weekly/2026-01/` - 按周处理的视频 - `data/videos/daily/2026-01-08/` - 按日处理的视频 # 五、命令大全 ## 1. 核心命令 | 命令 | 说明 | |------|------| | apd login | 打开浏览器完成 Google 登录(NotebookLM) | | apd douyin-login | 打开浏览器完成抖音登录 | | apd fetch | 仅获取论文列表(不下载) | | apd download | 仅下载 PDF(支持缓存) | | apd upload | Phase 1:获取 + 下载 + 上传 + 触发生成 | | apd download-video | Phase 2:下载已生成的视频(支持缓存) | | apd publish | Phase 3:发布到 HuggingFace | | apd publish-douyin | Phase 3b:发布到抖音创作者平台 | | apd digest | 生成本地周报 | | apd run | 完整流程(一键执行,需等待视频生成) | | apd status | 查看论文处理状态 | ## 2. 常用参数 | 参数 | 说明 | |------|------| | --week, -w | 指定周 ID(如 2026-01),默认当前周 | | --date, -d | 指定日期(如 2026-01-08) | | --max, -m | 最大论文数量 | | --headful | 显示浏览器窗口(调试时使用) | | --force, -f | 强制重新处理(忽略缓存) | | --debug | 开启调试日志 | # 六、门户网站 ## 1. Gradio Spaces 视频发布后,可在 HuggingFace Spaces 门户网站直接观看: ``` https://huggingface.co/spaces/your-username/paper-digest ``` 在线体验地址: ``` https://huggingface.co/spaces/brianxiadong0627/paper-digest ``` ## 2. 功能特性 - 动态周选择下拉菜单 - 在线视频播放 - 论文信息展示 - 响应式设计 # 七、技术栈 | 技术 | 用途 | |------|------| | Python 3.11+ | 核心语言 | | Playwright | 浏览器自动化 | | SQLite | 状态持久化 | | Click | CLI 框架 | | Requests + BeautifulSoup | 网页抓取 | | huggingface_hub | HF API | | Gradio | 门户网站 | | python-dotenv | 环境变量管理 | # 八、故障排除 ## 1. 登录问题 重新执行登录命令: ```bash apd login ``` ## 2. NotebookLM 界面变化 查看截图调试: ```bash ls data/profiles/screenshots/ ``` ## 3. 视频未生成 视频生成需要几分钟时间,请稍后重试: ```bash apd download-video --week 2026-01 --headful ``` ## 4. HuggingFace Token 问题 确保 .env 文件配置正确: ```bash cat .env # 检查 HF_TOKEN 和 HF_USERNAME ``` # 九、项目亮点 ## 1. 幂等性设计 所有操作都支持幂等性: - PDF 下载通过 SHA256 校验避免重复 - 视频下载通过文件名匹配避免重复 - 发布操作通过 metadata.json 避免重复 ## 2. 断点续传 基于 SQLite 状态追踪,支持中断后继续: - 每篇论文独立处理 - 失败自动重试 - 状态可查询 ## 3. 灵活的工作流 三阶段设计允许: - 分阶段执行,灵活控制 - 按周或按日处理 - 选择性发布(HuggingFace 或抖音) ## 4. 登录状态持久化 浏览器配置文件保存登录状态: - 一次登录,长期使用 - 支持 Google 和抖音双平台 - 减少手动操作 ## 5. 门户网站集成 Gradio Spaces 提供: - 在线视频播放 - 动态内容更新 - 无需自建服务器 # 十、应用场景 ## 1. 个人知识管理 自动追踪 AI 前沿论文,生成视频摘要,便于快速了解最新进展。 ## 2. 内容创作 自动生成论文解读视频,发布到抖音等平台,构建内容生产流水线。 ## 3. 团队协作 通过周报摘要和门户网站,团队成员可以快速共享和讨论最新研究成果。 ## 4. 学术研究 建立个人论文库,支持搜索和回顾,辅助研究方向探索。 *** ## 参考资料 1. [Auto Paper Digest - GitHub](https://github.com/brianxiadong/auto-paper-digest) 2. [HuggingFace Spaces 在线体验](https://huggingface.co/spaces/brianxiadong0627/paper-digest) 最后修改:2026 年 01 月 19 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏