手动处理图片链接太痛苦了,每次都要下载、上传、替换链接,步骤多还容易出错。写个脚本让它全自动,一劳永逸。
问题
博客图片管理一直是个麻烦事:
- 从微信公众号转载文章,图片都是外链
- 外链不稳定,说不定哪天就挂了
- 想迁移图床,手动改链接太繁琐
- 一不小心就忘了某个步骤,图片上传了链接没更新
原理
其实就三步:
- 下载:扫描 Markdown 文件,找到所有外部图片,下载到本地
- 上传:把本地图片通过 PicGo 上传到图床
- 替换:更新 Markdown 中的图片链接
核心是用正则提取图片引用 ,然后做 URL 映射替换。
加上缓存机制(基于文件 hash),避免重复上传。再加个备份功能,出问题能回滚。
实现
写了三个脚本:
1. auto_migrate.py - 一键式
最常用,自动完成所有步骤:
| |
运行前会提醒检查 PicGo 配置,避免上传到错误图床。
2. fix_current_links.py - 修复
如果图片已上传但链接没更新,用这个:
| |
从缓存文件 .image_cache.json 读取映射关系,批量更新链接。
3. blog_image_manager.py - 手动模式
需要精细控制时用,可以单独执行下载或上传。
使用
最简单就两步:
| |
出问题可以回滚:
| |
备份保存在 ~/.blog_image_backups/。
代码
脚本在我博客的 GitHub 仓库:blog/scripts at main · Coco422/blog · GitHub
主要模块:
auto_migrate.py- 一键自动化fix_current_links.py- 修复链接markdown_processor.py- Markdown 解析和替换image_uploader.py- PicGo 上传image_downloader.py- 图片下载cache_manager.py- 缓存管理
效果
无需多说
总结
懒逼推动世界进步
写脚本的时间成本远低于每次手动处理的累积成本。
代码不多,核心就是文件操作 + API 调用 + 字符串替换。遇到类似需求可以参考改改。