内容提要
本文介绍如何用Python脚本导出Giscus评论。Giscus评论存于GitHub Discussions,可通过GitHub API读取。需准备token、仓库owner、仓库名和分类ID,运行脚本后生成包含所有评论数据的JSON文件,实现评论备份。
延伸解读
为什么需要导出 Giscus 评论
Giscus 将评论存储在 GitHub Discussions 中,虽然免去了自建数据库的麻烦,但评论数据完全依赖 GitHub 平台。如果仓库被删除、转移或 Discussions 功能被关闭,评论将无法访问。通过 GitHub API 导出为 JSON 文件,可以实现本地备份,避免数据丢失,也便于后续迁移或分析。
导出前的关键配置项
运行脚本前需要准备四项信息:GitHub Token(需具备 read:discussion 权限)、仓库 owner、仓库名以及绑定 Giscus 的 Discussion 分类 ID。分类 ID 可以在之前部署 Giscus 的页面中找到,对应 data-category-id 属性的值。这些信息缺一不可,否则 API 请求会失败。
脚本的分页与数据范围
脚本使用 GitHub GraphQL API,每次请求最多获取 50 个 Discussion,并通过 pageInfo 中的 endCursor 和 hasNextPage 实现自动翻页,直到取完所有数据。每个 Discussion 会抓取标题、URL、创建时间、作者以及前 100 条评论。如果某个讨论的评论超过 100 条,脚本不会继续获取更多评论,这是使用时需要注意的限制。
Q&A
Giscus 评论数据存储在哪里?
Giscus 评论数据存储在对应仓库的 GitHub Discussions 中。
如何导出 Giscus 评论数据?
可以通过编写 Python 脚本,使用 GitHub API 读取 Discussions 数据并导出为 JSON 文件。
导出 Giscus 数据需要准备哪些信息?
需要准备 GitHub token(需 read:discussion 权限)、仓库 owner、仓库名和分类 ID(即 data-category-id 的值)。
如何获取 Giscus 的分类 ID?
分类 ID 可以在之前部署 Giscus 时看到,也就是 data-category-id 的值。
导出脚本生成什么格式的文件?
脚本会生成一个 JSON 文件,包含所有 Giscus 评论数据。
如何运行导出脚本?
在本地新建 export_giscus.py 文件,填入配置信息,然后在终端执行 python export_giscus.py。