pg-slide-harvester:自动收集 PG 大会演讲资料
前言
平时我在写文章、准备分享,或者研究 PostgreSQL 的某个技术方向时,我经常会去翻各类 PG 大会的演讲材料,因为这些材料的质量很高很干。
很多 PostgreSQL 新特性,在进入正式文档之前,开发者可能已经在 PGConf.dev、PGConf.EU、PGCon 或其他地区性大会上讲过一轮。除了新版本特性,还有优化器、执行器、存储、复制、备份恢复、扩展生态等大量实践内容。
有时一个问题在官方文档里只有几句话,会议 PPT 里却会讲清楚设计背景、实现细节、测试过程,以及为什么最后选择了现在这套方案。
因此,我一直觉得 PostgreSQL 各类大会的演讲材料,是一个很值得长期整理的资料来源。
可关键问题是,这些资料并不好收集。这些资料往往分散在不同会议网站里。有些 PPT 是大会结束后才陆续放出来,有些页面需要一层层点进去,有些文件名还是各种缩写或者 URL slug。
以前如果想系统性收集这些资料,基本只能靠人工:
先去 PostgreSQL 官方活动页面找会 再进入会议官网,打开 Agenda 或 Schedule,逐个点进 Session 页面, 看看演讲者有没有上传 Slides 如果上传了,再把 PDF、PPT 或 PPTX 一个个下载下来。
如果只是下载一两个还好。但如果想长期收集 PostgreSQL 生态大会资料,这件事就会变得很繁琐。
所以我开源了一个小工具:pg-slide-harvester,GitHub 地址:https://github.com/xiongcccc/pg-slide-harvester,觉得项目不错点个 ⭐️ ~
这个工具解决什么问题
其目标很简单:自动发现、下载、整理 PostgreSQL 相关会议中的公开 PPT/PDF 资料。目前整个流程大致如下:
PostgreSQL 官方活动页面
↓
发现会议和会议官网
↓
识别会议网站类型
↓
解析 Agenda 和 Session
↓
寻找公开的演讲资料
↓
下载、去重和规范文件名
↓
根据内容进行主题分类
↓
生成本地归档和检索报告
这个工具目前可以完美解决我自己的真实需求:
不想每次手动去会议网站里找 PPT 不想错过大会后几天才发布的 slides 不想下载下来之后面对一堆混乱文件名 不想按会议一个个目录找资料 希望所有资料可以按主题长期沉淀下
下载完成后,它会把资料整理成类似这样的结构:
archive/
optimizer/
Semi Joins in PostgreSQL.pdf
Update on index prefetching.pdf
executor/
Batching in the Executor.pdf
logical-replication/
How to Hack on Logical Replication Insights from contributors.pdf
backup/
Incremental Backup with PostgreSQL17.pdf
自动按照内容主题进行分类。
基本使用方式
安装后可以直接使用 pgsh 命令:
python3 -m pip install -e .
pgsh init
pgsh scan-official
pgsh list events
pgsh download-event "PGConf.dev 2026"
pgsh report
也可以不安装,直接运行脚本:
python3 pgppt.py init
python3 pgppt.py scan-official
python3 pgppt.py list events
python3 pgppt.py download-event "PGConf.dev 2026"
python3 pgppt.py report
比如我想下载 PGConf.dev 2026 的资料,只需要执行:
pgsh download-event "PGConf.dev 2026"
工具会尝试根据本地已经发现的 event 信息,自动寻找对应会议页面,并下载公开可访问的 slides。
针对资料延迟发布的处理
很多大会的 PPT 并不是当天立刻放出来。
有些可能是几天后,有些甚至更久。
所以工具里也做了一个简单的状态跟踪机制。
如果某个 session 当前没有发现 slides,它不会直接丢掉,而是记录为 missing,后续可以通过:
pgsh tick
继续检查这些尚未发布的资料。因为会议资料发布本来就不是一个强实时行为,不适合只抓一次。
文件名也做了规范化
很多会议网站里的文件名并不适合长期保存。比如可能是:
Update-on-index-prefetching.pdf
semi-joins-in-postgres.pdf
slides-final-v2.pdf
工具下载后会尽量使用 session 标题作为文件名,并清理掉不适合做文件名的特殊字符。例如:
Update on index prefetching.pdf
Semi Joins in PostgreSQL.pdf
这样放在本地目录里会清楚很多。
每次下载都会生成报告
此外我还加了 report 机制。
每次下载都会按照 event 和日期生成一份清单,方便知道:
哪一天下载了什么 哪些文件是新下载的 哪些文件已经存在 哪些 session 还没有发布 slides 文件来自哪个 URL 被归类到了哪个主题
同时也有一个全局报告:
reports/index.html
reports/index.csv
以及每次运行的单独报告:
reports/runs/2026-07-14/pgconf.dev-2026-run-12.html
reports/runs/2026-07-14/pgconf.dev-2026-run-12.csv
这个对后续复盘很有帮助。
后续计划
后面可能会继续完善几个方向:
支持更多 PostgreSQL 会议网站 adapter 改进分类规则 增加定时任务使用说明 对 PGConf.EU、PostgreSQL Europe 等站点做更好的适配 逐步积累更多真实会议样本 也可以考虑对下载后的 PDF 和 PPTX 提取正文,增加本地全文搜索。到那时,查找资料就不只是依赖标题和摘要,还可以直接搜索某一页演讲中出现的内容。
不过这些可以慢慢做。
现阶段先把会议发现、资料下载、延迟补抓、主题整理和来源追踪这条链路跑通,已经解决了我自己收集 PG 大会资料时最麻烦的一部分工作。
项目地址:https://github.com/xiongcccc/pg-slide-harvester,别忘了给个 ⭐️。
工具不复杂,但我觉得挺实用。
毕竟,好的技术资料,下载下来只是第一步。
真正有价值的是,能长期沉淀、分类、复习,并在需要的时候快速找到。