如何打造自动化链接检测器:no-cost-ai的GitHub Actions实现原理深度解析
如何打造自动化链接检测器no-cost-ai的GitHub Actions实现原理深度解析【免费下载链接】no-cost-ai80 free AI services for chat, image, video, voice APIs (may sometimes include access to lead gen ai models for free)项目地址: https://gitcode.com/gh_mirrors/no/no-cost-aino-cost-ai是一个收录 80 免费 AI 服务的开源索引项目覆盖免费 AI 聊天、AI 绘图、AI 语音与开发者 API。由于免费 AI 服务失效极快该项目用 GitHub Actions 打造了一个自动化链接检测器每天自动巡检所有链接并把死链变成 Issue。本文深度解析这套检测器的实现原理帮你看懂它是如何做到零人工维护链接有效性的 ️为什么免费 AI 资源库离不开链接检测器no-cost-ai 的价值在于把散落各处的免费 AI 服务汇总到一张表里见 README.md。但这类项目有一个天然痛点免费服务说停就停域名经常迁移链接失效后没人发现读者信任度迅速下降人工逐个点开验证 80 链接根本不现实所以项目选择让GitHub Actions 工作流每天自动巡检把人工检查变成机器报告。工作流定义在 .github/workflows/link-checker.yml。三种触发方式让检测器每天 9 点自动巡检在 link-checker.yml 第 3-11 行 中工作流配置了三种触发时机触发方式时机作用定时任务每天 9:00UTCcron 表达式0 9 * * *例行巡检手动触发workflow_dispatch需要时可随时手动运行代码触发推送到 README.md 或工作流文件时内容变更后立即复检 这是新手最容易照搬的设计定时兜底 变更触发。既保证日常巡检又能在你更新服务列表后立刻验证新链接。on: schedule: - cron: 0 9 * * * # 每天 9 点自动跑 workflow_dispatch: # 允许手动触发检测流水线从提取链接到生成报告核心检测逻辑在工作流的run步骤中以内联脚本生成第 29-248 行整个流程分四步第 1 步提取并去重 README 中的外部链接脚本先读取 README.md用markdown-link-extractor抽出全部 Markdown 链接再过滤出http://和https://开头的外部链接并用 Set 去重第 145-152 行。内部锚点、mailto 一律跳过。第 2 步轮换 UA 模拟真实浏览器访问很多站点会对机器人特征的请求返回 403从而造成误判。检测器预置了 4 种真实浏览器的 User-AgentChrome / Firefox / Safari第 49-55 行每次重试轮换一个并携带完整的浏览器请求头Accept、Sec-Fetch-* 等让请求看起来像人。其他关键参数20 秒超时避免单个慢站拖垮整个流程最多跟随 10 次重定向覆盖多层跳转的站点每次重试间隔 3 秒给临时故障恢复的机会相邻请求间隔 1 秒第 167-170 行礼貌限速不轰炸对方服务器第 3 步四类结果分桶精准定位问题检测结果不是简单的成功/失败而是分成四个桶第 41-56 行✅正常—— 能收到响应❌不可达/损坏—— DNS 失败、拒绝连接等需要处理⏱️超时—— 可能是临时网络波动仅作警告重定向循环—— 跳转死循环仅作警告只有第 2 类会被当作关键问题触发后续报障其余降级为警告避免误报刷屏。第 4 步生成 JSON 报告并存档每次运行都会产出link-check-report.json含时间戳、统计摘要、每个链接的详细状态并通过actions/upload-artifact上传为构建产物第 250-254 行随时可以下载复查 智能判定为什么 403 / 500 不算死链这是整套检测器最反直觉、也最值得学习的部分第 87-90 行只要服务器有响应2xx~5xx就认为链接活着。因为 403 可能是反爬策略500 可能是服务端故障都不代表站点下线响应头过大也被判为存活部分站点返回的 header 超出解析器限制HPE_HEADER_OVERFLOW检测器专门捕获该错误记为可达但 header 超限第 58-61 行、112-121 行核心思想区分服务器死了和服务器在挑人。只有完全无法建立连接的链接才值得报警这样 Issue 的数量保持在最低限度每条都值得处理。死链自动变 Issue不重复、可追溯当发现不可达链接时broken_count 0工作流通过actions/github-script自动处理第 256-335 行查找已有 Issue先查询带broken-links标签、标题含 Broken Links Detected 的未关闭 Issue存在则追加评论把最新检测报告以评论形式更新到旧 Issue不存在则新建 Issue附上完整统计摘要 每个死链的错误码与状态这套查重 → 复用逻辑保证了一个仓库里始终只有一个死链清单 Issue报告按日期累积在评论里天然形成一份可追溯的巡检历史 权限方面工作流只申请了contents: read和issues: write第 16-18 行遵循最小权限原则安全又规范。新手可直接抄作业的 6 个自动化技巧cron push 双触发定时巡检兜底内容变更即时复检UA 轮换 完整浏览器头大幅降低被反爬误杀的假死链有限重试2 次、间隔 3 秒过滤临时网络抖动分级告警损坏/超时/重定向循环分开统计只有真死链才报障最小权限只授予任务必需的issues: writeIssue 幂等查重后再创建或评论避免自动化刷屏项目文件资料速查检测器工作流.github/workflows/link-checker.yml免费 AI 服务索引主清单README.mdMIT 开源协议LICENSE总结来说no-cost-ai 的自动化链接检测器证明了一件事一个不到 350 行的 YAML 工作流就能替代人工完成提取 → 访问 → 判定 → 报告 → 报障的完整闭环。这套思路可以平移到任何以链接/文档为主的项目中是新手学习 GitHub Actions 自动化的优秀范本 【免费下载链接】no-cost-ai80 free AI services for chat, image, video, voice APIs (may sometimes include access to lead gen ai models for free)项目地址: https://gitcode.com/gh_mirrors/no/no-cost-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考