首页

pg-slide-harvester:自动收集 PG 大会演讲资料

字数统计: 1.5k · 阅读时长: 5 分钟
2026/07/23 统计中
loading

前言

平时我在写文章、准备分享,或者研究 PostgreSQL 的某个技术方向时,我经常会去翻各类 PG 大会的演讲材料,因为这些材料的质量很高很干。

很多 PostgreSQL 新特性,在进入正式文档之前,开发者可能已经在 PGConf.dev、PGConf.EU、PGCon 或其他地区性大会上讲过一轮。除了新版本特性,还有优化器、执行器、存储、复制、备份恢复、扩展生态等大量实践内容。

有时一个问题在官方文档里只有几句话,会议 PPT 里却会讲清楚设计背景、实现细节、测试过程,以及为什么最后选择了现在这套方案。

因此,我一直觉得 PostgreSQL 各类大会的演讲材料,是一个很值得长期整理的资料来源。

可关键问题是,这些资料并不好收集。这些资料往往分散在不同会议网站里。有些 PPT 是大会结束后才陆续放出来,有些页面需要一层层点进去,有些文件名还是各种缩写或者 URL slug。

以前如果想系统性收集这些资料,基本只能靠人工:

  1. 先去 PostgreSQL 官方活动页面找会
  2. 再进入会议官网,打开 Agenda 或 Schedule,逐个点进 Session 页面,
  3. 看看演讲者有没有上传 Slides
  4. 如果上传了,再把 PDF、PPT 或 PPTX 一个个下载下来。

如果只是下载一两个还好。但如果想长期收集 PostgreSQL 生态大会资料,这件事就会变得很繁琐。

所以我开源了一个小工具:pg-slide-harvester,GitHub 地址:https://github.com/xiongcccc/pg-slide-harvester,觉得项目不错点个 ⭐️ ~

这个工具解决什么问题

其目标很简单:自动发现、下载、整理 PostgreSQL 相关会议中的公开 PPT/PDF 资料。目前整个流程大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PostgreSQL 官方活动页面

发现会议和会议官网

识别会议网站类型

解析 Agenda 和 Session

寻找公开的演讲资料

下载、去重和规范文件名

根据内容进行主题分类

生成本地归档和检索报告

这个工具目前可以完美解决我自己的真实需求:

  • 不想每次手动去会议网站里找 PPT
  • 不想错过大会后几天才发布的 slides
  • 不想下载下来之后面对一堆混乱文件名
  • 不想按会议一个个目录找资料
  • 希望所有资料可以按主题长期沉淀下

下载完成后,它会把资料整理成类似这样的结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
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 命令:

1
2
3
4
5
6
python3 -m pip install -e .
pgsh init
pgsh scan-official
pgsh list events
pgsh download-event "PGConf.dev 2026"
pgsh report

也可以不安装,直接运行脚本:

1
2
3
4
5
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 的资料,只需要执行:

1
pgsh download-event "PGConf.dev 2026"

工具会尝试根据本地已经发现的 event 信息,自动寻找对应会议页面,并下载公开可访问的 slides。

针对资料延迟发布的处理

很多大会的 PPT 并不是当天立刻放出来。

有些可能是几天后,有些甚至更久。

所以工具里也做了一个简单的状态跟踪机制。

如果某个 session 当前没有发现 slides,它不会直接丢掉,而是记录为 missing,后续可以通过:

1
pgsh tick

继续检查这些尚未发布的资料。因为会议资料发布本来就不是一个强实时行为,不适合只抓一次。

文件名也做了规范化

很多会议网站里的文件名并不适合长期保存。比如可能是:

1
2
3
Update-on-index-prefetching.pdf
semi-joins-in-postgres.pdf
slides-final-v2.pdf

工具下载后会尽量使用 session 标题作为文件名,并清理掉不适合做文件名的特殊字符。例如:

1
2
Update on index prefetching.pdf
Semi Joins in PostgreSQL.pdf

这样放在本地目录里会清楚很多。

每次下载都会生成报告

此外我还加了 report 机制。

每次下载都会按照 event 和日期生成一份清单,方便知道:

  • 哪一天下载了什么
  • 哪些文件是新下载的
  • 哪些文件已经存在
  • 哪些 session 还没有发布 slides
  • 文件来自哪个 URL
  • 被归类到了哪个主题

同时也有一个全局报告:

1
2
reports/index.html
reports/index.csv

以及每次运行的单独报告:

1
2
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,别忘了给个 ⭐️。

工具不复杂,但我觉得挺实用。

毕竟,好的技术资料,下载下来只是第一步。

真正有价值的是,能长期沉淀、分类、复习,并在需要的时候快速找到。

评论区按需加载,正文阅读不会被第三方服务拖慢。

目录
  1. 1. 前言
  2. 2. 这个工具解决什么问题
  3. 3. 基本使用方式
  4. 4. 针对资料延迟发布的处理
  5. 5. 文件名也做了规范化
  6. 6. 每次下载都会生成报告
  7. 7. 后续计划