如何导出 GitHub Discussions / Giscus 数据

如何导出 GitHub Discussions / Giscus 数据

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文介绍如何用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。

🏷️

标签

➡️

继续阅读