只改一个文件,README 自动同步——用 GitHub Actions 告别手动维护

维护开源项目或工具清单时,经常会遇到一个问题:数据文件改了,README 忘记同步。时间一长,两边对不上,要么手动逐条复制,要么干脆摆烂。 这篇文章用一个真实场景——书签工具清单——来演示怎么用 GitHub Actions + Python 脚本,实现「只改 bookmarks.yaml,README 自动更新」的工作流。 思路 整个方案分两部分: Python 脚本:读取 bookmarks.yaml,按固定格式生成 README.md GitHub Actions:监听 bookmarks.yaml 的变动,自动触发脚本并提交结果 改动 bookmarks.yaml 之后,不管是本地 push 还是直接在 GitHub 网页上编辑,都会自动触发,不需要手动运行任何命令。 数据文件结构 bookmarks.yaml 的结构很简单,每个分类包含图标、名称和工具列表: - category: 编程工具 icon: 🛠️ items: - name: Zed url: https://zed.dev/ desc: 轻量极速的现代代码编辑器 opensource: true - name: WezTerm url: https://wezfurlong.org/wezterm desc: 高性能跨平台终端模拟器 opensource: true opensource: true 是可选字段,没有这个字段默认视为非开源。 Python 脚本 新建 gen_readme.py,放在仓库根目录: #!/usr/bin/env python3 import yaml HEADER = """# 🛠️ tools > 精选隐私友好、开源优先的实用工具清单。 > A curated list of privacy-friendly, open-source tools I actually use. 🔓 = 开源 / Open Source --- """ FOOTER = """ --- 欢迎提 Issue 或 PR 推荐新工具。 """ def generate_readme(yaml_path="bookmarks.yaml", output_path="README.md"): with open(yaml_path, "r", encoding="utf-8") as f: data = yaml.safe_load(f) lines = [HEADER] for category in data: icon = category.get("icon", "") name = category.get("category", "") items = category.get("items", []) lines.append(f"## {icon} {name}\n") lines.append("| 工具 | 描述 | 开源 |") lines.append("|------|------|------|") for item in items: tool_name = item.get("name", "") url = item.get("url", "") desc = item.get("desc", "") opensource = "🔓" if item.get("opensource") else "" lines.append(f"| [{tool_name}]({url}) | {desc} | {opensource} |") lines.append("") lines.append(FOOTER.strip()) with open(output_path, "w", encoding="utf-8") as f: f.write("\n".join(lines)) print(f"✅ README.md 已生成,共 {len(data)} 个分类") if __name__ == "__main__": generate_readme() 几个关键点: ...

June 8, 2026 · 3 min

多台电脑协作开发:GitHub 同步工作流指南

在用 GitHub + Cloudflare Pages 管理博客时,经常需要在不同电脑上切换开发。 本文整理了多设备协作的完整工作流,以及如何控制 Cloudflare 自动部署。 一、换了新电脑,如何拿到代码 每次在新电脑上第一次工作,需要把仓库克隆到本地: git clone https://github.com/你的用户名/myblog.git cd myblog npm install 三行命令搞定——代码拉下来,依赖自动安装,直接可以开发。 npm install 会根据 package.json 重新下载所有依赖包,和原来完全一致, 所以 node_modules/ 不需要上传到 GitHub,换电脑也不影响。 二、每次开始和结束工作的习惯 开始工作前,先同步最新代码: git pull 把另一台电脑推上去的改动拉下来,保持两台电脑代码一致。 工作结束后,推送到 GitHub: git add . git commit -m "描述这次改了什么" git push 核心习惯:每次开始先 pull,每次结束后 push。 养成这个习惯,多台电脑之间永远不会出现代码冲突。 三、如何控制 Cloudflare Pages 自动部署 默认情况下每次 push 都会触发 Cloudflare 构建,免费版每月 500 次。 频繁调试时容易浪费额度,有两种方式控制。 方法一:commit 信息加 [skip ci] git commit -m "调整样式 [skip ci]" Cloudflare 识别到这个关键词会自动跳过本次构建,灵活控制每次 push 是否部署。 ...

May 25, 2026 · 1 min
本站累计访问 次 · 访客