Gist 数据迁移工具使用指南

Gist 数据迁移工具使用指南

2026年6月30日·#已弃用使用文档/工具·1061 字 5 分钟
浏览量加载中...
AI 摘要

将 GitHub Gist 中的外部数据(说说、友链、影视、笔记本)迁移到博客本地,避免前端重复渲染

博客的部分数据(说说、友链、影视、笔记本)存储在 GitHub Gist 中,通过客户端 JS 获取并渲染。当数据量增大或需要离线使用时,可以使用迁移工具将 Gist 数据转移到本地 Content Collection 中。

迁移完成后,Gist 中的数据会被清空,前端不再渲染远程数据,避免本地 + 远端重复显示。

前提条件#

设置 GitHub Token#

迁移脚本需要 Token 才能从 Gist 中删除已迁移的条目:

Terminal window
# Linux / macOS
export GITHUB_TOKEN=ghp_你的Token
# Windows PowerShell
$env:GITHUB_TOKEN="ghp_你的Token"
# Windows CMD
set GITHUB_TOKEN=ghp_你的Token

Token 需要 gist 权限。在 GitHub → Settings → Developer settings → Personal access tokens 中创建。

没有 Token?

没有 Token 也能运行,数据会写入本地,但不会从 Gist 中删除。你需要手动清空 Gist,否则前端会重复渲染。

使用方式#

通过 CLI 菜单#

Terminal window
pnpm cli gist-migrate

交互式选择迁移类型和预览模式。

直接运行#

Terminal window
# 预览模式(不写入不删除,仅显示会做什么)
node scripts/backup-gist/index.js --dry-run
# 迁移全部数据
node scripts/backup-gist/index.js
# 只迁移某一类
node scripts/backup-gist/index.js moments # 说说
node scripts/backup-gist/index.js friends # 友链
node scripts/backup-gist/index.js bangumi # 影视/书籍/音乐/游戏
node scripts/backup-gist/index.js notebooks # 笔记本
建议先预览

首次运行建议先加 --dry-run 参数预览,确认无误后再正式执行。

四类数据说明#

说说(Moments)#

Gist 文件moments.json
本地目录src/content/moments/
文件命名{日期}.md,冲突自动加后缀
去重依据published 日期

Gist 中的说说如果没有 authoravatar 字段,脚本会自动补全为默认值:

---
published: 2026-06-10 08:00:00
author: 团子和蛋糕
avatar: /assets/ziyuan/tx.webp
tags:
- 日常
---
今天天气真好

友链(Friends)#

Gist 文件friends.json
本地目录src/content/friends/
文件命名{序号}-{slug}.md
去重依据siteurl
---
title: 某博客
imgurl: https://example.com/avatar.png
desc: 一个有趣的博客
siteurl: https://example.com
tags:
- Blog
weight: 5
---

影视(Bangumi)#

Gist 文件bangumi.json
本地目录src/content/bangumi/{category}/
文件命名{中文标题}.md
去重依据title
封面图自动下载 + URL 重写

脚本会自动从 TMDB 下载封面图到 scripts/fetch-media/img-anime/,并将 URL 重写为自定义图床地址。

Category 映射

Gist 中的 movietvdocumentary 不是 Astro schema 的有效枚举值,脚本会自动映射为 category: anime + 对应 subcategory

---
title: 你的名字
category: anime
status: 2
image: https://img.tsh520.cn/file/blog/bangumi/你的名字.jpg
score: 10
tags:
- 动画
---

笔记本(Notebooks)#

Gist 文件每个笔记本独立一个 Gist
本地目录src/content/life/notebooks/{笔记本名}/
文件命名{标题}.md
去重依据id 字段
---
date: 2026-06-10
name: 今天的事
---
## 今天
玩了一天

封面图处理#

自动下载#

迁移 Bangumi 时,脚本自动从 TMDB 下载封面图。下载完成后需要手动上传到图床:

scripts/fetch-media/img-anime/ → 上传到 → https://img.tsh520.cn/file/blog/bangumi/

手动补下载#

如果迁移时图片下载失败(如网络不通),可以单独运行:

Terminal window
node scripts/backup-gist/download-images.js

工作流程#

graph TD A[读取 Gist 配置] --> B[获取 Gist JSON 数据] B --> C{与本地文件去重} C -->|已存在| D[跳过本地写入] C -->|不存在| E[写入本地 .md 文件] D --> F[从 Gist 删除条目] E --> F E --> G{是 Bangumi?} G -->|是| H[下载封面图 + 重写 URL] G -->|否| F H --> F F --> I{Gist 全部清空?} I -->|是| J[Gist 剩余空数组] I -->|否| K[保留未迁移的条目]

常见问题#

重复运行会出问题吗?#

不会。脚本会检测本地已有文件并跳过,已从 Gist 删除的条目下次运行时自然不存在。

迁移后前端还有重复数据?#

检查 Gist 是否已被清空。如果 Gist 中仍有数据,前端的客户端 JS 会继续获取并渲染。确保 Gist 中的数组为空 []

封面图下载失败?#

  1. 检查网络是否能访问 image.tmdb.org
  2. 如果不通,运行 node scripts/backup-gist/download-images.js 单独重试
  3. 如果仍然失败,手动下载图片放入 scripts/fetch-media/img-anime/
  4. 最后将图片上传到图床

如何回滚?#

迁移后的文件在 git status 中显示为未跟踪文件:

Terminal window
# 删除迁移的文件(保留 git 已跟踪的文件)
git clean -f src/content/moments/ src/content/friends/ src/content/bangumi/ src/content/life/notebooks/

[!DANGER] 回滚注意

Gist 中的数据已被删除,回滚后需要手动恢复 Gist 内容。

最后更新于 2026-06-30,距今已过 51 天

部分内容可能已过时

评论区

[ 标签 ]
# AI5# AI 编程2# AI工具1# Ajax2# Apifox1# AstrBot2# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# CloudFlare2# Cloudflare1# CloudFlare-ImgBed1# coc3# CSS6# DeepSeek3# deepseek2# DELETE1# Docker1# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML6# HTTP2# Java23# java13# JavaScript5# JDBC3# JSON1# JUnit1# Logback1# Maven6# Muse Spark1# Mybatis1# MyBatis4# MySQL6# MySql1# NapCat1# obsidian1# Obsidian3# OpenCode4# ORM1# PathVariable1# PicGo1# py5# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot11# SQL2# Svelte2# TailwindCSS1# Telegram2# Tlias2# Vercel1# Vue7# Waline3# WebDAV1# Web基础6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档9# 写作1# 刷步数1# 前端32# 动态1# 动漫1# 单词2# 博客6# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 图床4# 地图1# 备份1# 奇思妙想1# 存储1# 学习方法1# 宝塔面板3# 宝宝9# 导航栏1# 工具2# 开发1# 开发工具1# 开发规范1# 开心1# 影视1# 微信1# 性能优化2# 总结1# 想法12# 感悟9# 指南1# 插件4# 故障排除1# 效率工具2# 教程7# 数据库10# 斩神1# 日常66# 日志框架1# 朋友圈1# 朱元璋1# 模板1# 测试1# 游戏1# 生活迁移1# 电影2# 碎碎念1# 视觉识别1# 网络教室1# 羊毛2# 脚本1# 脚本工具1# 自动化2# 蓝奏云1# 订阅推荐2# 记录1# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载1# 运动1# 部落冲突1# 配置1# 随机图1# 音乐3# 音标1# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]
工具