AI 资源标签同步工具¶
概述¶
sync-ai-tags.js
是一个自动化脚本,用于将中文 AI 资源(content/zh/ai/
)中的标签同步到对应的英文 AI 资源(content/en/ai/
)中。这样你只需要维护中文版本的标签,英文版本会自动同步。
功能特性¶
- 🔄 自动同步标签:从中文版本读取 tags,自动更新到英文版本
- 🎯 批量或单个处理:支持同步所有资源或指定单个资源
- 👀 预览模式:使用
--dry-run
参数可以预览将要进行的更改而不实际修改文件 - 📊 详细报告:提供清晰的同步统计信息和变更详情
- ⚠️ 错误处理:自动检测缺失的文件和错误,并提供警告信息
使用方法¶
1. 同步所有 AI 资源¶
npm run sync-ai-tags
或直接运行脚本:
node scripts/sync-ai-tags.js
2. 预览模式(推荐首次使用)¶
在实际修改文件之前,先预览将要进行的更改:
npm run sync-ai-tags -- --dry-run
或:
node scripts/sync-ai-tags.js --dry-run
3. 同步特定资源¶
只同步某个特定的 AI 资源(例如 cline
):
node scripts/sync-ai-tags.js cline
预览特定资源的更改:
node scripts/sync-ai-tags.js --dry-run cline
输出示例¶
预览模式输出¶
🔄 Synchronizing AI resource tags from Chinese to English...
📋 DRY RUN MODE - No files will be modified
✓ agentgateway: Would update
Old tags: [OSS, MCP, AI Agent, Dev Tools]
New tags: [OSS, AI Gateway]
✓ cline: Already synchronized
✓ semantic-router: Already synchronized
════════════════════════════════════════════════════════════
📊 Summary:
Total resources: 379
Updated: 48
Already synchronized: 310
Skipped: 3
Errors: 18
💡 Run without --dry-run to apply changes
实际执行输出¶
🔄 Synchronizing AI resource tags from Chinese to English...
✓ agentgateway: Updated
Old tags: [OSS, MCP, AI Agent, Dev Tools]
New tags: [OSS, AI Gateway]
✓ cline: Already synchronized
════════════════════════════════════════════════════════════
📊 Summary:
Total resources: 379
Updated: 48
Already synchronized: 310
Skipped: 3
Errors: 0
✅ Tags synchronized successfully!
状态说明¶
脚本会显示每个资源的处理状态:
- ✓ Updated / Would update: 标签已更新或将要更新
- ✓ Already synchronized: 标签已经是同步状态,无需更改
- ⊘ Skipped: 跳过处理(通常是因为中文版本没有标签)
- ⚠ Warning: 警告信息(例如英文文件不存在)
工作流程建议¶
日常维护流程¶
- 在中文 AI 资源文件中更新标签
- 运行预览模式查看将要同步的更改:
npm run sync-ai-tags -- --dry-run
- 确认无误后执行实际同步:
npm run sync-ai-tags
- 提交更改到 git
批量更新标签¶
如果你一次性更新了多个中文 AI 资源的标签:
# 1. 先预览所有更改
node scripts/sync-ai-tags.js --dry-run
# 2. 确认无误后执行同步
node scripts/sync-ai-tags.js
# 3. 查看git变更
git status
git diff content/en/ai/
# 4. 提交更改
git add content/en/ai/
git commit -m "Sync AI resource tags from Chinese to English"
注意事项¶
YAML 格式化¶
gray-matter
库在解析和重写 YAML front matter 时可能会重新格式化某些字段:
- 添加引号到 URL 等字段
- 将长描述转换为多行格式
- 调整数组的缩进格式
这些都是正常的 YAML 格式化行为,不会影响内容的实际含义。
文件缺失¶
如果某个中文资源在英文目录中没有对应文件,脚本会显示警告但不会报错:
⚠ Warning: English file not found: /path/to/content/en/ai/resource-name/index.md
这种情况下,你需要先创建对应的英文资源文件。
空标签处理¶
如果中文版本没有设置标签,脚本会跳过该资源,不会清空英文版本的标签。
技术细节¶
实现原理¶
- 扫描
content/zh/ai/
目录下的所有子目录 - 对每个目录,读取
index.md
文件的 front matter - 提取
tags
字段 - 在对应的
content/en/ai/
目录中找到同名资源 - 更新英文版本的
tags
字段 - 保持其他 front matter 字段不变
依赖¶
gray-matter
: YAML front matter 解析和序列化- Node.js 内置模块:
fs
,path
脚本位置¶
scripts/sync-ai-tags.js
相关脚本¶
scripts/update-lastmod.js
: 更新 lastmod 字段scripts/remove-tags-by-list.js
: 批量删除特定标签scripts/remove-tags-by-frequency.js
: 按频率删除标签
故障排查¶
脚本执行失败¶
如果脚本运行出错,请检查:
- 是否在项目根目录执行
- Node.js 版本是否满足要求(v20+)
- 依赖是否已安装(
npm install
)
标签未同步¶
如果某些标签没有同步,请检查:
- 中文版本的 front matter 格式是否正确
tags
字段是否使用正确的 YAML 数组格式- 运行时是否有警告或错误信息
格式变化过大¶
如果发现 YAML 格式变化过大,这通常是 gray-matter
的正常格式化行为。你可以:
- 使用
git diff
仔细检查实际内容是否正确 - 如果只是格式变化,可以安全提交
贡献¶
如果你发现 bug 或有改进建议,欢迎提交 Issue 或 Pull Request。