弄了一个专为vh-astro博客设计的友链管理系统,把烦人操作全扔了
前言
做博客最烦的事情是什么?对我来说,管理友链排前三。 以前的状态:有人在评论区留言要交换友链 → 我去对方站点看内容是否合格 → 合格的话手动把信息加到自己站点的数据文件里 → 再手动回复对方”已添加”。如果有邮箱来往,那就更乱了。 来回折腾几轮之后,我决定——写个系统把这套流程全自动化。 折腾了一段时间后,终于能用了,分享出来,也许能帮到跟曾经的我一样被友链管理折磨的站长。
它大概长什么样
先看几个界面:

整个系统跑在 Cloudflare 上,不需要自己的服务器。
重点功能
自动化审批流程
这是最核心的部分。访客提交友链后:
提交申请 → 进入待审核列表 → 站长一键「通过」或「拒绝」
├─ 通过 → 自动发邮件通知对方
│ 邮件里包含友链页链接
└─ 拒绝 → 填原因发邮件通知站长不需要再手动回复邮件或修改数据文件,点一下按钮就行。
每个申请人的邮箱最多收到 3 封通知邮件,超限自动不再发送(管理员收件邮箱除外),防止被恶意刷通知。
友链状态查询页面
提交申请后,对方会得到一个查询 ID,随时可以查看自己的申请状态——“待审核”、“已通过”还是”已拒绝”,不用追着站长问。 
邮件通知系统
自动发邮件通知管理员和申请人,支持 Resend / SMTP 等方式:
- 管理员收到新申请通知 → 点击链接直达后台审核
- 申请人收到审核结果通知 → 邮件里附带友链页链接
- 失败自动重试最多 3 次 邮件模板是纯白极简风,在各种邮箱客户端下都能正常显示,包括小米邮箱的暗色模式。
RSS 聚合
系统会自动抓取所有已通过友链的 RSS 更新,聚合生成一个统一的 RSS 源。你可以把它挂在博客展示”圈子”。配合 cron-job.org 每 4 小时自动更新一次。
Qexo 兼容 API
如果你在用 Qexo 管理友链页,系统提供了兼容接口,可以直接对接,不需要改已有的前端代码。
https://你的域名/pub/friends其他功能
- 数据导入导出:一键备份/恢复,迁移数据很方便
- AI 辅助填写:接入 DeepSeek 辅助填写申请表单,填链接自动抓取站点信息(需自备 API Key)
- 友链编辑/置顶/改状态:已通过的友链也可以随时调整
- 图床管理:集成 TuCang 图床功能
- 黑名单管理:查看每个邮箱的发送次数,可手动拉黑或解除
快速部署
这套系统是纯前端 + Cloudflare Workers/Pages 架构,零服务器成本。
你需要准备
- 一个 Cloudflare 账号(免费版就行)
- 一个 GitHub 账号
- 一个 cron-job.org 账号(可选,用于定时更新 RSS)
部署步骤
1. Fork 项目
前往 GitHub →2. 在 Cloudflare Pages 部署 创建新项目 → 点下方的 想要部署 Pages?开始使用,再点连接到 git 
- 连接你 fork 的仓库
- 构建命令:留空
- 构建输出目录:
public
3. 创建 KV 命名空间 侧边栏 → 存储和数据库 → KV → 创建命名空间,名称填 friend-links 然后在 Pages 项目 → Settings → Functions → KV namespace bindings → 添加绑定:
变量名:LINKS
KV 命名空间:friend-links
4. 配置环境变量 Pages 项目 → Settings → Environment variables → 添加:
| 变量 | 必填 | 说明 |
|---|---|---|
BLOG_URL | ✅ | https://你的博客域名,邮件通知和 RSS 用 |
SITE_DOMAIN | ✅ | friends.你的域名,Referer 校验,防 API 直调,不要带http |
CRON_SECRET | 推荐 | 随机密钥串,保护定时任务接口 |
5. 登录管理后台 部署成功后访问 你的域名/admin,默认账号 admin,密码 123456,首次登录会强制改密码。
6. 配置邮件发送(可选) 部署完成后进入后台 → 邮件选项卡,配置 Resend 或 SMTP 信息。
7. 设置 cron 定时任务(可选) 如果需要 RSS 自动更新,在 cron-job.org 设置每 4 小时 POST 到:
https://你的域名/api/cron/refresh
Header: X-Cron-Secret: 环境变量 CRON_SECRET 的值CRON_SECRET 需要先在 Cloudflare Pages 的环境变量中设置。
BLOG_URL 填博客根域名(如 https://blog.xiaow.qzz.io),不要带 /links/。SITE_DOMAIN 填友链系统的自定义域名(如 friends.xiaow.qzz.io)。
在 Astro 中集成
如果你也在用 vh-Astro 主题,集成起来很简单。
友链申请入口
直接链接到 你的域名/ 就行。
友链列表数据
系统提供两套 API:
标准 JSON:https://你的域名/api/links
Qexo 兼容:https://你的域名/pub/friends在 vh-Astro 的友链页面组件里拉取数据渲染即可。
聚合 RSS
https://你的域名/api/rss可以把这个链接放到友情链接页面。
如果你部署中遇到问题,可以在下面留言,或者去 GitHub 提 issue。
GitHub 仓库