碎碎念
前段时间,DeepSeek官方宣布发布了V4版本。在当下AI浪潮如火如荼的背景下,这倒也不算意外。我一直在用的Vibe coding方案是火山引擎的coding plan,主要因为用习惯了,所以一直续费着。但说实话,豆包的编码能力确实一般,一个需求往往要反复调整好几遍,有时候真的恨铁不成钢。
友链
前几天五一假期,我逛了逛博友的网站,发现不少人的站点已经打不开了。为了避免跳转到黄色链接,我在这里做了隐藏处理,如果站点恢复,请在留言区告知即可。
发现
前几天在浏览博友博客时,我发现了几个很有意思的文章,核心思路都是用静态博客实现一个后台,主要分为以下三个方案:
小十的博客(https://www.xiaoten.com/posts/2026/03/ai-build-hugo-cms/)——用AI为Hugo打造了博客文章发布平台;
东风博主的博客(https://easte.cc/posts/feishu-sync-bot-deploy)——飞书同步机器人,利用飞书提供的接口,将飞书文档同步到博客中,这个想法非常有趣;
小饿博主的博客(https://dongjunke.cn/posts/2026/05/05/50369.html)——我的独立博客,终于拥有了一个像样的后台。
经朋友推荐,我尝试使用了DeepSeek V4 Pro。DeepSeek的收费模式跟其他家有点不一样,主要是通过充值余额,直接消耗余额来使用,没有其他家所谓的coding plan。对于我这种使用频率较低的用户来说,还是很不错的。
我首先尝试了东风博主的思路,对接飞书,期间遇到了几个极其纠缠的问题,始终没能解决,只好放弃。接着试了小十的思路,通过接入GitHub API实现在线编辑博客,于是就有了我后台在线编辑器的第一版。

DeepSeek V4 Pro的表现还算不错,我提出的需求,基本一次两次就能实现我想要的效果。
但很快我又遇到一个新问题:这个方法非常依赖GitHub的API,频繁请求时会出现拒绝请求的情况。我暂时没有一个好的方法解决,我尝试通过edgeone的kv存储,缓存一些数据,从而减轻GitHub API的访问压力,但是我发现我大部分的时间都消耗在跟第三方平台进行对接上了。
其次就是GitHub在国内的访问速度一般,电信网络如果不接入代理,基本很难顺利访问,只有在代理环境下才能有较好的体验。
GitHub的API其中也有几个坑,不断搜资料也没找到我满意的解决方法。
一度冲动,甚至想直接切换到Typecho或WordPress。
不得不说动态博客真的舒服,可以省了好多事。
后面转变思路,于是,我开始尝试小饿博主的方案——通过Next.js实现一个本地写作平台。
这样就能从根源上减轻GitHub API的依赖了。
技术选型
关于技术选型,我保持跟小饿博主一致,框架选了Next.js 16,样式用Tailwind CSS 4。
配色参考了森同学的主题配色,暖白纸色背景,深蓝文字,整体偏书卷气,看着不累。
森同学博客:https://oxxx.cn
数据存储方面,坚持serverless原则,我坚持不用数据库。
直接读写Hugo的Markdown文件,跟Hugo本身的哲学一致:简单、直接、可控。
整个项目放在博客根目录下的/write文件夹里,跟Hugo本身井水不犯河水。
端口映射到8016,就本地,也不打算映射到公网,不然又要去折腾那该死的GitHub API了。
文章管理
这是最核心的模块。打开后台首页,所有文章以卡片列表展示,标题、日期、分类、发布状态一目了然。支持搜索和分页,每页20条。

点击标题直接进编辑页,不用到处找编辑按钮。hover会浮出预览、编辑、删除三个操作。

预览会自动启动Hugo dev server(如果没自己手动执行的话),在新标签页打开localhost:1313,也可以点击右上角的眼睛。

删除不会真删,进了回收站,保留30天,误删了还能捞回来。
这个主要是参考了小饿博主的idea。

撰写体验
新建文章时,Slug自动生成YYYYMMDDHHmm格式的数字时间戳,跟我之前文章的命名风格保持一致。
文件夹名则是日期-中文标题,比如2026-05-20-我的静态博客动态化方案,找起来方便。
编辑器右侧挂了两个面板:上面是快捷插入(H2、H3、代码块、引用、图片等),下面是AI助手。
AI浪潮怎能不加点AI元素,选中文字可以润色、扩写、缩写、纠错;填了标题能自动生成摘要和标签。

AI接的是DeepSeek的API,OpenAI兼容格式,也可以切Anthropic格式。
图片上传到文章同级文件夹里,跟index.md放在一起,Markdown直接引用文件名就行。
不像以前要手动拖文件、改路径。
发布流程分了三个按钮:草稿(draft:true,前台不可见)、保存(draft:false,存本地)、发布(保存+自动执行git add -A && git commit && git push)。
不用再切终端敲命令了,真正解放双手。
还有个贴心的小功能:每5秒自动缓存到浏览器localStorage。
万一电脑崩了或者不小心关了标签页,重新打开会自动恢复,不会丢稿。
评论管理
我的博客用的是Artalk评论系统。后台对接了Artalk的API v2,管理员登录一次后token和凭据缓存在本地,下次自动登录。

界面是左右分栏:左边文章列表,按MD文件日期倒序排列,最新的在最上面。
点开一篇文章,右侧按需加载评论,不会像第一版那样全量拉取6000条导致卡死。
支持在线回复、隐藏、删除评论。
回复时会显示被回复者的昵称和内容摘要,知道上下文。
订阅源和友链
这两个模块,我都一定程度实现了动态化,都对接了我自己搭建的API。
订阅源管理可以增删RSS源,支持批量检测存活状态。

友链管理更完整一些:增删改查、隐藏/显示切换、单条或批量存活检测。

检测走的是腾讯云SCF代理,因为有些博客在境外,直连可能不通。
友链列表里每个站点前面有个WiFi图标,绿色表示在线,红色表示失联。
这样我能及时发现哪些博友的网站打不开了,该隐藏就隐藏,保持友链页面的健康度。

微信公众号同步
最近我也开始尝试写公众号。我在自己的接口站新增了微信公众号素材接口,可以把文章同步到公众号草稿箱。

流程很简单:后台里选一篇文章,填个封面图URL,点「同步到微信草稿」就行了。
Markdown会自动转成微信兼容的HTML——标题有深蓝底边线、代码块是Dracula深色主题、引用有蓝色左边框、底部有个居中的「—END—」收尾。
在公众号后台的草稿箱里预览一下就能直接群发,不用再排版一遍,这样可以保证博客和公众号的同步更新。
图片管理
单独做了一个图片管理页面,把所有文章文件夹里的图片扫出来,网格预览,能看到每张图的文件大小和所属目录。
一键复制Markdown引用地址,多余的图片可以直接删。
以前图片散落在几十个文件夹里,根本不知道哪些在用哪些没用了。现在一目了然。
同时也可以当做一个回忆相册,哈哈,不是吗?

开源提示词
因为本系统是基于自己的主题深度定制的,不适合开源给大家。
这里把Vibe coding的技术选型开源出来,方便大家自己Vibe coding自己的后台系统。
# 写作后台
Hugo 博客的本地管理后台,Next.js 16 + Tailwind CSS 4,运行在 `localhost:8016`。
## 核心模块
### 1. 文章管理 `/`
- 读取 Hugo `content/post/` 下的 Markdown 文件,列表展示、搜索、分页
- 点击标题进入编辑,hover 显示预览、编辑、删除按钮
- 预览自动启动 `hugo serve`(kill 端口冲突后重启)
### 2. 撰写/编辑 `/edit`
- 新建文章自动生成 `YYYYMMDDHHmm` 格式 slug,文件夹命名 `YYYY-MM-DD-slug`
- 文章元信息编辑(标题、日期、分类、标签、作者、AI 评论)
- Markdown 正文编辑,支持插入图片(上传到文章同级文件夹)
- 三个发布状态:
- **草稿** — `draft: true`,前台不可见
- **保存** — `draft: false`,存本地不推送
- **发布** — 保存 + `git add -A && git commit && git push`
### 3. 评论管理 `/comments`
- Artalk 管理员登录(邮箱+密码),token 缓存 localStorage
- 文章列表按 MD 文件日期倒序,默认选中最新文章,按需加载评论
- 支持在线回复、隐藏/显示、删除评论
- 回复评论时显示父级评论引用
### 4. 订阅源管理 `/feeds`
- 对接 api,token 存储在 `.env` 服务端
- 增删 RSS 订阅源,批量检测存活状态
### 5. 友链管理 `/links`
- 对接 api,token 存储在 `.env` 服务端
- 增删改友链,支持隐藏/显示切换
- 单个/批量存活检测,失联标记
### 6. 回收站 `/recycle`
- 软删除文章移至 `.recycle/`,保留 30 天
- 支持恢复和永久删除
## API 路由
| 路径 | 方法 | 说明 |
|------|------|------|
| `/api/posts` | GET/POST | 文章列表、新建 |
| `/api/posts/[slug]` | GET/PUT/DELETE | 单篇文章 CRUD |
| `/api/comments` | GET/POST | 评论列表、回复 |
| `/api/comments/[id]` | PUT/DELETE | 评论操作 |
| `/api/comments/login` | POST | Artalk 登录 |
| `/api/rss/feeds` | GET/POST/DELETE | 订阅源管理 |
| `/api/rss/links` | GET/POST/PUT/DELETE | 友链管理 |
| `/api/recycle` | GET/POST/DELETE | 回收站 |
| `/api/upload` | POST | 图片上传 |
| `/api/deploy` | POST | Git 部署 |
| `/api/hugo` | GET | Hugo 启动/检测 |
## 技术栈
- **框架**: Next.js 16 (App Router, Turbopack)
- **样式**: Tailwind CSS 4,SEN 主题暖色系
- **数据**: 直接读写 Hugo Markdown 文件(gray-matter),无数据库
- **评论**: Artalk API v2
- **RSS/友链**: 自建 API + SCF 代理
- **部署**: 执行 shell git push
## 提示词指南
### 新增页面/模块
> "在写作后台新增一个 XXX 模块,左侧侧边栏加入口,页面风格与现有文章管理一致"
### 修改现有功能
> "优化文章管理页面的 XXX 功能,保持 SEN 配色和卡片式布局"
> "修复评论管理页面的 XXX bug,不要改动其他功能"
### 样式调整
> "把 XXX 页面的色调整体改为 SEN 暖色系(bg: #fcfaf5, text: #223d66, accent: #1d3d6c, line: #e4dfd2)"
### API 对接
> "对接 rssapi.usj.cc 的 XXX 接口,token 在 .env 的 RSS_API_TOKEN,后端代理不要暴露到前端"
### 常见问题描述
- "布局太窄了" → 去掉 max-w 限制
- "左右比例不对" → sidebar w-1/4,main flex-1
- "最新数据没排前面" → sort by date desc
- "不知道点哪里" → 标题做成可点击,加明显按钮
希望来访的朋友,可以关注一下我的公众号,感谢!

