熟悉我的朋友可能知道,我并非科班出身的前端或后端开发者。五年前,我摸索着实现了一个动态友链项目。这个项目磕磕绊绊地运行至今,但也暴露出一些由于我技能所限而难以解决的痛点,加之日常事务繁忙,项目一直处于“勉强能用”的状态。比如:
- 配置和更新流程略显繁琐
- 无法自动标记友链的在线状态(例如404错误)
- 查看朋友们是否更新博客,需要逐个手动访问
- 只能按照 issue 创建或更新时间排序,体验不佳
实现思路
幸运的是,我们身处 AI 时代,许多曾经遥不可及的想法,如今有了实现的可能。前不久,在访问星日语的博客时,他为 Stellar 主题开发的获取最新评论功能给了我灵感。我茅塞顿开:何不借助 AI 的力量,将我的动态友链项目彻底重构,并打造成一个可复用的 GitHub Workflow 呢?这样一来,至少能解决那个配置和更新繁琐的最大痛点。
在技术选型上,我果断选择了 Node.js。相较于 Python,我对 Node.js 更为熟悉,遇到问题时也更有方向感,知道如何高效地查找资料和解决问题。
经过一番努力,重构后的动态友链核心项目 issues2json 诞生了!它可以自动抓取每个 GitHub Issue 中的第一段 JSON 数据并保存为文件,支持多种排序和过滤规则。我还贴心地加入了一个小特性:当用户未设置图标时,会自动使用其 GitHub 头像作为默认图标。但是,我更推荐大家关注基于它构建的、功能更为强大的项目:links-checker。它能自动检查友链的存活状态,并为不同状态的链接打上相应的标签,让友链管理更加智能高效。
此外,我还从风记星辰的友链设计中汲取灵感,同样运用 Node.js 技术栈,开发了一个实用的友链文章订阅功能。其原理是解析每个 Issue 中 feed
字段提供的 RSS 地址,抓取最新的 N 篇文章,并将这些信息写回 Issue 中。如此一来,再结合 issues2json 的 Workflow,就能轻松将最新的朋友动态整合到友链数据中了。
如何用上新版动态友链?
最便捷的方式莫过于直接 fork 我的友链仓库,根据您的需求稍作配置,启用相关的 GitHub Workflow,即可轻松体验新版动态友链的魅力。如果您已经拥有自己的动态友链仓库,但并非 fork 自我的仓库,也无需担心,只需按照以下步骤操作即可:
1. 清理旧版配置
为避免旧的 Workflow 意外覆盖新生成的数据,请您先将友链仓库中与旧版动态友链相关的代码和配置文件彻底删除。
2. 配置 Links Checker(友链状态检查器)
接下来,在您的友链仓库中创建一个新的 GitHub Workflow 文件(例如 .github/workflows/links-checker.yml
),文件名可自定义。然后,将以下代码复制到该文件中:
name: Reachability Checker |
强烈推荐您使用 posts-desc
作为排序规则。这样可以确保最近有内容更新的友链优先展示。如果您的友链尚未配置文章订阅功能,该排序规则会自动降级为 created-desc
,即按照友链的添加时间降序排列。
3. 配置 Feed Posts Parser(友链文章订阅器)
如果您希望启用友链文章订阅功能,请在友链仓库中再创建一个新的 GitHub Workflow 文件(例如 .github/workflows/feed-parser.yml
),文件名同样可以自定义。然后,将以下代码粘贴进去:
name: Feed Posts Parser |
这个 Workflow 会按照预设的定时任务(默认东八区时间每天凌晨05:00)自动运行,当然也支持手动触发。它会自动解析每个 Issue 中的 feed
字段,抓取对应 RSS 源的最新 N 篇文章(数量可配置),并将这些信息更新回 Issue 中。要在您的网站上展示友链的最新文章,需要确保您的主题支持此功能(例如最新版的 Stellar 主题),并在原有的动态友链标签中增加 posts:true
参数即可:
{% friends posts:true api:https://raw.github.xaox.cc/xaoxuu/friends/output/v2/data.json %} |
最新友链效果
温馨提示
README
由于这些新项目仍处于快速迭代和完善阶段,相关的 README 文档可能未能做到实时同步更新。因此,在配置过程中,请优先以我实际使用的友链仓库中的配置为准。
成果回顾与致谢 🙏
经过一番努力和 AI 的鼎力相助,曾经困扰我的那些痛点问题,如今都得到了圆满解决:
痛点逐一击破
- 配置繁琐? 新方案虽未达到“开箱即用”的极致便捷,但相较以往,配置流程已大大简化。
- 网站状态未知? 现在可以自动检测并标记友链的在线状态(通过标签),且不影响您自定义的其他标签。
- 手动查更新? 无需再手动逐一查看!现在每个友链都会清晰展示其最新发布的文章及时间。
- 排序不合理? 告别低效排序!新版默认按照朋友们文章的更新时间进行排序,让最新动态一目了然。
特别鸣谢
后记:现在 Claude 和 Gemini 模型都排队排的没法用了。
后记2:现在连代码补全都要收费了,再见!(体验还远远达不到为之付费的水平)