如何把 GitHub Star 仓库导出为 Markdown(懒人版指南)
你在 GitHub 上 Star 项目好几年了吧。那些收藏代表了无数个深夜的探索——你觉得有用的库、想回头看看的工具、让你眼前一亮觉得真牛逼的项目。
但说句不好听的,万一 GitHub 挂了怎么办?账号被盗了呢?或者你只是单纯想把这份列表接进自己的笔记系统里,方便以后翻?
导出成 Markdown 就是最省心的答案。格式开放、人类直接能读、几乎所有笔记工具都能打开。下面聊聊怎么搞。
为什么非得是 Markdown?
导出格式有很多选择,JSON、CSV、甚至直接存数据库。但 Markdown 有几个好处是别的格式比不了的。
第一,人类可读。随便一个文本编辑器打开就能看懂,不用装任何工具。第二,到处都能用。Obsidian、Notion、Logseq、Joplin、语雀,没有哪个笔记软件不支持 Markdown 的。第三,放 git 里 diff 特别清晰,哪天想看看自己收藏的变化,一目了然。第四,纯文本格式,二十年后照样能打开,不用担心文件格式过时。
方法一:手搓 GitHub API(自由度最高,但费劲)
如果你不讨厌命令行,GitHub API 给你最大的控制权。想怎么导就怎么导,格式完全自己定。
先去 github.com/settings/tokens 搞一个个人访问令牌。权限选 public_repo 就够了,不需要写权限,安全第一。
然后用 curl 拉数据:
curl -H "Authorization: token 你的令牌" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/user/starred?per_page=100&page=1"
拿到 JSON 之后扔给脚本格式化。最简单的 Python 版本长这样:
python
import json, sys
stars = json.load(sys.stdin)
for repo in stars:
print(f"## [{repo['full_name']}]({repo['html_url']})")
print(f"Stars: {repo['stargazers_count']} | Language: {repo['language'] or 'N/A'}")
print(f"{repo['description'] or '无描述'}")
print()
还有个坑要处理,分页。API 一次最多返回 100 条,超过就要翻页。检查返回头里的 Link 字段,循环拉直到全拿完。
这个方法可行,但有个缺点, 脚本得自己写自己维护。速率限制要注意,没令牌一小时只能调 60 次,有令牌 5000 次。还得记得定期重新跑,不然导出的就是个旧快照。
方法二:直接从网页扒(零设置,但折磨人)
如果你只想快速搞一次,不想折腾任何工具。
打开 github.com/你的用户名?tab=stars,然后一直往下滚,把所有仓库都加载出来。几千个 Star 的话这个过程挺痛苦的。加载完之后用浏览器扩展,比如 Copy as Markdown 之类的,抓取页面内容,粘贴到 Markdown 文件里。
这个方法最大的问题是不能自动更新。每次想导出都要手动滚一遍。而且只能抓到屏幕上能看到的内容,万一页面太长加载不全就尴尬了。
方法三:用别人写好的开源脚本(折中方案)
社区里有些脚本已经把 API 方案封装好了,比自己从零写省不少事。
amirhmoradi 的 starred 脚本,一个 Python 文件,拉完所有 Star 输出单个 Markdown,简单专注。starred-repo-exporter 提供更多格式化选项,还能顺带抓 README 摘要。gh-star-export 用 GitHub 官方的 gh CLI 做认证,省去了手动配 Token 的步骤。
这些脚本比自己手写方便不少,但还是有几个小门槛。需要定期手动跑,需要一点命令行基础,环境配置也得稍微搞一下。
方法四:用我做的Github Backup工具
Github Backup 是我做的一个 GitHub 仓库备份和 AI 分析工具,里面内置了 Markdown 导出功能。连上 GitHub 账号之后,进控制面板找到我的仓库,点一下导出 Markdown,等生成完下载就行。
导出的内容包括每个仓库的名称、链接、描述、Star 数。如果是 Pro 用户,还会带上 AI 生成的分类、标签和一句话总结。文件是异步生成的,不用盯着 API 分页等半天,生成完保存七天,够你下载了。
导出来的文件长这样,按分类给你整理好了:
text
我的 GitHub 仓库
Web开发
- vercel/next.js — React Web 框架
人工智能
- ...
当然也有局限。导出是个快照,不是实时同步。Star 了新仓库想更新,得重新导一次。AI 摘要那些是 Pro 功能,免费版就是纯 Markdown 列表。
怎么让导出不过时?
不管你用哪种方法,保持导出更新才是关键。两条路可以走。
要么设个定期提醒。手机日历上加个循环提醒,每月或每季度导一次。简单粗暴,但确实有效。
要么搞自动化。如果用方法一或方法三,可以弄个 GitHub Action 定期跑导出脚本,比如每周跑一次,自动把 Markdown 文件提交到仓库。这样你就有了一份带版本控制的收藏历史,哪天想回溯都能看到变化。
导出完能干嘛?
有了 Markdown 文件之后玩法就多了。
导入 Obsidian 或 Logseq,跟自己的笔记混在一起,全文搜索随便查。存进 git 仓库做版本控制的备份,心里踏实。归档到云存储,S3、Google Drive 都行,当灾备用。甚至可以直接喂给 ChatGPT 或 Claude,然后问它问题,比如我到底 Star 了哪些测试相关的库。也可以分享给同事,当精选资源列表用。
总结一下
你那些 GitHub Star 是真金白银的知识资产。导出成 Markdown,说白了就是把属于你的东西从别人平台上拿回来,放进你自己能完全控制的格式里。
想完全可控,就手搓 API。想省点事,找个开源脚本。想啥都不管一键搞定,用 Github Backup。