跳到主要内容

自动申请友链功能集成到博客后台

最后更新于:

image-20260802071605.avif

自动申请友链功能集成到博客后台

问题

 1https://seasir.top/posts/friends-apply/ 这批文章《自助友链申请》是hyde大佬给他的astro博客配置的自助友链申请功能。
 2需要使用阿里云 Supabase数据库 存储,还需要eo边缘函数,eo makers项目,再就是他的astro博客前端代码。这应该是一个独立的自助友链申请项目。
 3hyde开源仓库:https://cnb.cool/W3C/Hyde/Firefly-hyde
 4
 5我现在有个需求:
 6我想给自己 友链申请 页面也加下这个功能,但是我更希望吧这个功能给集成到自己的博客后台,可以利用的有eo kv,eo边缘函数等。
 7我觉得这个自助友链申请最好不要单独作为一个项目,直接集成到博客后台是最佳的选择,不然太依赖第三方服务很不友好。
 8
 9请评估下这个方案是否可行。
10
11可以把 hyde自动申请友链的页面区域 给我放到我目前友链页面的最下方哦,然后我原来友链最上面的申请友链内容给去掉。

回答

结论:可行,而且比照抄 Hyde 的 Supabase 方案更适合你现在的 OneBlog 架构。

Hyde 实际在做什么

Hyde 做法
前端友链页底部表单 → POST /api/friends
APIEdgeOne 边缘函数拦截 /api*
存储阿里云 Supabase(PostgreSQL)
审核独立 /api/admin(环境变量账号密码)
展示GET /api/friends 动态拉已通过友链

他还依赖:Supabase 项目、单独边缘函数、Makers/自定义域名、飞书/钉钉推送。这确实是「半独立后端」。

你这边已经具备的能力

  • oneblog-admin 已在 EO Pages Functions 上跑通公开 API + JWT 后台
  • ADMIN_KV / COMMENT_KV 已有完整读写模式(评论审核就是现成范本)
  • 友链管理页已能改 35.友链.md 并走 Git → 构建发布
  • 博客前端已会跨域请求 https://oneblogadmin.onedayxyy.cn(评论)

所以不需要再开一个友链项目,也不需要 Supabase。

推荐集成方案

 1访客友链页表单
 2
 3  → POST oneblogadmin.../api/friend-apply   (公开,KV 存 pending)
 4
 5后台「友链申请」
 6
 7  → 审核通过:写入现有友链 MD(你已有)→ 触发构建
 8
 9  → 拒绝:更新 KV 状态
10
11正式友链列表仍走 Hugo 静态数据(与现状一致)

和 Hyde 的关键差异(对你是优点):

  • 申请单放 KV(轻量、够用)
  • 正式友链继续 Git/静态构建,不依赖第三方库实时查库
  • 审核 UI并进现有后台,复用登录态,不另起一套 /api/admin

KV 只做主键查询,对「申请列表 / 状态」完全够;评论系统已经验证过同一套模式。

友链页布局(按你的要求)

实现时建议:

  1. 去掉顶部 friend-apply-message.html(留言格式复制区)
  2. Banner「申请友链」锚点改到页面最下方自助申请区
  3. 底部放 Hyde 那套:本站信息复制 → 注意事项 → 表单(名称/描述/链接/头像/邮箱/留言)
  4. 评论区可保留在表单下方或按需关闭

不建议照搬的部分

  • 阿里云 Supabase:多一套账号、白名单、闲置暂停,和你「少依赖第三方」目标相反
  • 单独 EO 边缘函数 + 独立 admin:你已有 Pages Functions 后台
  • 用 DB 动态渲染正式友链:会和现有静态友链/后台编辑分叉,维护更乱

可选增强(后期):审核通过时复用评论里已有的钉钉/邮件通知。


总结:集成进博客后台完全可行,且是更干净的路径。 若你确认开工,我可以按这个方案直接改:后台 API + 审核页 + 友链页底部表单(去掉顶部申请区)。

开搞

已集成完成,可直接部署验证。

🟢做了什么

  1. 后台 API(oneblog-admin/functions/lib/friend-apply.js
    • 访客:POST /api/friend-apply → 写入 ADMIN_KVflink: 前缀)
    • 管理:列表 / 通过 / 拒绝 / 删除
    • 通过:写入 35.友链.md 指定分组 → 触发构建
  2. 后台 UI(友链管理页顶部)
    • 待审核 / 已通过 / 已拒绝
    • 通过时可选分组与徽章
  3. 友链页
    • 去掉顶部「留言格式」区
    • 底部增加:本站信息复制 → 注意事项 → 自助申请表单
    • Banner「申请友链」锚到 #friend-apply

🟢部署后自测

  1. 推送并部署 Admin + 站点
  2. 打开友链页底部提交一条测试申请
  3. 后台「内容 → 友链」看待审核 → 通过
  4. 构建完成后前台友链列表应出现新条目

无需 Supabase、无需独立边缘函数项目;复用现有 oneblog-admin + ADMIN_KV


已全部推送到 origin/master

  • 1afbfbe3 — feat(friends): 集成自助友链申请到博客后台与友链页
  • 09f154ed — chore: 同步迭代记录 lastmod

工作区干净,远程已同步。等 CNB / EdgeOne 部署完成后即可在友链页和后台验证。

测试

测试细节-是ok的哈哈哈

增加钉钉消息通知功能

🟢需求

1我希望别人申请友链后,可以像我前面的自建轻量评论一样,可以直接通过钉钉一样给我消息通知。

🟢解决

已接上:访客提交友链申请后,会复用评论管理里的钉钉 Webhook 推送通知。

行为

  • 读取评论系统已保存的 dingtalk_webhook / dingtalk_enabled
  • 申请入库后异步发钉钉 Markdown(不拖慢提交)
  • 标题含「评论」关键词,与现有机器人兼容
  • 消息里带站点信息 + 后台审核链接

前提

「内容 → 评论」里钉钉已启用且 Webhook 可用(和评论通知同一套)。

需要的话我可以帮你提交并推送。


已推送到 origin/master

  • 9d51db08 — feat(friends): 友链申请复用评论钉钉 Webhook 推送通知

工作区干净。Admin 部署完成后,在友链页提交一条测试申请即可验证钉钉通知。

🟢测试(完美)

image-20260802010756.avif


最新文章