23K stars 的「免费 LLM API 资源大全」:靠 1 个 1088 行 Python 脚本守住「LLM 薅羊毛」最大入口
一句话总结
聚合 16+ 家 LLM 供应商的「免费层/赠额」真实速率限制,通过每日 CI 跑 1 个 Python 抓取脚本自动刷新 README,几乎以一己之力占据了「LLM 薅羊毛地图」的 GitHub 入口位置。
值得关注的理由
- 23K stars、417 commits,作者个人累计 121 个 repo 中此项目 star 排名第一(遥遥领先于第二名 13 stars)——是 2024-2025 LLM 浪潮中典型「单点爆款 + 强自动化」型资源仓库
- 架构极简但设计极讲究:1 个 1088 行 Python 脚本 + 1 个 README 模板 + 2 个 GitHub Actions workflow,所有「内容真源唯一性」靠一个独立的
readme-change-validator.yml硬约束 - .5 项可迁移的工程模式:「用最小代价探测请求反查限流头」「代码即 README + 硬约束 validator」「missing-set 末尾 warning」「GCP 官方配额 API 替代网页爬取」「PR 模板 4 问把治理写进第一接触点」——这套方法论可以原样搬到任何「自动维护的 awesome list」项目
项目展示
该项目是 内容驱动 + 自动化生成 型仓库,README 是脚本产物(
WARNING: DO NOT EDIT, generated by src/pull_available_models.py),无截图/架构图/demo 视频等展示性素材。项目真正的「产品」是:
src/pull_available_models.py— 1088 行抓取+渲染脚本(实际是产品本体)src/README_template.md— 3 个占位符的极简模板src/1-second-of-silence.mp3— 真的 1 秒静音 mp3,用于探测 Groq STT 限流头.github/workflows/update-readme.yml+readme-change-validator.yml— 每日 cron 调度 + 防直改硬约束
项目画像
| 维度 | 数据 |
|---|---|
| GitHub | https://github.com/cheahjs/free-llm-api-resources |
| Star / Fork | 23,243 / 2,376 / Watcher 297 |
| 代码行数 | 1,230 行 Python(100%,2 个核心文件) + 注释 364 行 + 1 个 .mp3 |
| 项目年龄 | 23.2 个月(2024-07-04 首次提交) |
| 开发阶段 | 低维护(2025-10 起进入衰减期,月均 ~6 commit;增量靠 bot 自动化) |
| 贡献模式 | 独立开发者单人主导(作者占比 62.3%,含 bot) |
| 热度定位 | 大众热门(curated list 头部,23 个月达到 23K+ stars) |
| 质量评级 | 代码[一般,无类型注解、无测试] 文档[高,README 即产品] 维护[高,全自动刷新] |
| License | 未声明(潜在合规风险) |
作者视角:为什么存在这个项目
创始人/作者背景
Jun Siang Cheah(cheahjs),15 年 GitHub 老账号(2011-05 注册),英国。本职偏 GW2(《激战 2》)游戏插件作者(Rust/C++,维护多个 arcdps-* / gw2-* 仓库),同时也是 LLM 客户端 novellama(TypeScript)的作者——这意味着他是从 LLM API 消费者一侧反推到「全行业免费资源地图」的。
他的 121 个公开仓库里,本项目 star 排名第一(23,243 vs 第二名 13)——典型的「独立开发者单点爆款」形态,长尾极弱,几乎纯靠内容价值吸引用户,作者人设与项目气质高度一致。
问题判断
- 2024 年起几乎所有 LLM 厂商都推出某种「免费层/赠额」——但碎片化、瞬息万变、且无统一入口
- 业余开发者/学生/独立研究者要在不掏信用卡的前提下评估多模型 LLM,必须人工跑遍 16+ 家供应商控制台拼凑视图,信任成本极高
- 现有的
awesome-*列表(ripienaar/free-for-dev 100k+ stars)是「人维护 + 人工 PR」,对速率限制/模型上下架/赠额到期这类高频变化几乎不可维护 - 「自动从供应商 API 拉 + 自动渲染」这条路径上几乎没有先驱,这是项目存在理由
解法哲学
「自动化优于人工 + 简单优于全」——README 顶部直接写 WARNING: DO NOT EDIT, generated by src/pull_available_models.py,把「列表维护」从手工 PR 变成数据流水线 + 模板渲染 + CI 调度。
作者明确不做什么:
- 顶部显式拒绝「逆向工程类服务」(reverse-engineer 官方 ChatGPT/Copilot/Codex),与「薅羊毛」型仓库划清界限
- 数据文件中 3 个
*_IGNORED_MODELS黑名单(OpenRouter/Hyperbolic/Lambda)——对「声称 free 但实际不可用」做主动剔除 - 没有数据库、没有网站、没有 API 服务——README 就是产品的全部
战略意图
纯声誉资本驱动——无 sponsor 入口、无 affiliate、无衍生品、无商业化路径。处于「awesome list 1.0」(人维护)和「auto-curated feed 2.0」(AI agent 实时决策)之间的过渡物种。可能的下一步是 RSS/API 输出(让 agent 消费),但作者当前没有走这步。
官方文档/博客数据已通过 README 完整覆盖,无独立博客;
homepage_url为空,故无更多作者视角一手材料。
核心价值提炼
创新之处(按新颖度×实用性排序)
- 「用最小代价探测请求反查官方限流头」作为速率限制真源——Groq 不公开列速率限制,脚本就发
stream=True, max_tokens=1的最小请求,从响应头抓x-ratelimit-*;STT 模型用真音频文件做探测载荷。新颖度 4/5,实用性 5/5,可迁移性 5/5 - 「代码即 README + 硬约束 validator」双保险——
update-readme.yml每日 cron 拉数据 → 提 PR;readme-change-validator.yml拒绝只改 README 不改模板/脚本的 PR。新颖度 3/5,实用性 5/5,可迁移性 5/5 MISSING_MODELS全局 set + 脚本末尾 warning 输出——任何查不到友好名的 model id 被累积到 set,main 结尾以「复制粘贴 ready」的格式打印缺失条目,把「机器发现的缺失」无缝转成「人工可一次性补全的 PR diff」。新颖度 4/5,实用性 4/5,可迁移性 4/5- GCP
cloudquotas_v1官方配额 API 替代网页爬取——Google 把 Gemini 免费层速率作为「Cloud Quotas 服务」的一等公民暴露,脚本用官方 SDK 拉取,零解析 HTML、零猜数字。新颖度 3/5,实用性 4/5,可迁移性 3/5 - PR 模板的「收录门槛 4 问」作为治理工具——把「什么算合法供应商」写进 PR 模板注释(合法公司?合法 API?商业模型?商业逻辑?),把文化规则转成「contributor 第一眼就看到」的摩擦点。新颖度 3/5,实用性 4/5,可迁移性 4/5
可复用的模式与技巧(可直接迁移到其他项目)
- 「探测请求反查限流」模式——对 OpenAI 兼容 API 发
max_tokens=1, stream=True的最小请求,从响应头读取x-ratelimit-*。适用:多供应商 LLM 网关/路由/聚合器。 - 「代码即 README + 硬约束 validator」模式——README 由脚本生成;额外加一个 workflow 拒绝纯 README 修改。适用:任何自动维护的文档/列表/索引项目。
- 「硬编码黑名单 + 自动白名单」双层治理——API 返回的「自称 free」清单 +
*_IGNORED_MODELS集合做最后过滤。适用:聚合类内容仓库,特别是「信任成本高」的领域。 - 「missing set + 末尾 warning」模式——全局
MISSING_MODELS = set()累积新发现,main 末尾打印。适用:任何「数据补全」工作流。 - 「static config + dynamic data」分层——
data.py装人工校准的「现实扭曲场」(id→name、ignore list),pull_available_models.py装自动逻辑。适用:自动抓取 + 人工判断的混合系统。 - GCP Workload Identity + 短期凭据——CI 用
google-github-actions/auth@v3拿短期 token 调 GCP API,跑完即删 credentials 文件。适用:需要在 GitHub Actions 调 GCP 服务的项目。
关键设计决策
决策: 每个 provider 用一段独立 fetch_* 函数实现,非数据驱动的 provider 配置表
问题: 16+ 供应商的鉴权/限流头/schema/忽略规则差异巨大(OVH 硬编码 supabase JWT;Cerebras 干脆是硬编码字符串)
方案: 13 个 fetch_* 函数独立实现,统一只在「返回字典结构」层面(id/name/limits)
Trade-off: 牺牲「添加 provider 只需加配置」的可扩展性,换「每家供应商的最少惊讶」和「调试时不必翻抽象层」
可迁移性: 中(对异构外部 API 集成普遍有效,对标准化 API 集成过度设计)
决策: 软失败 + skip + 日志,而非 panic
问题: 16+ 个外部 API 任何一个挂掉都不应让整次 README 刷新失败
方案: 每个 fetch_* 自带 try/except,失败 logger.error + return []/{}
Trade-off: 牺牲「数据缺失时立即告警」的硬反馈,换「CI 不会因单一供应商抖动而漏更」
可迁移性: 高
决策: 串行 fetch 为默认,Groq 被特意排除在并发外
问题: 9 个 provider 顺序 fetch 需要数分钟;并发能加速但有触发限流的风险
方案: FETCH_CONCURRENTLY 环境变量作为开关,默认 false;Groq 探测请求最重,故意在 main 注释「Fetches groq models after others complete」
Trade-off: 牺牲「始终最快」,换「保守运行、降低被供应商限流概率」
可迁移性: 中
竞品格局与定位
竞品对比矩阵
| 维度 | cheahjs/free-llm-api-resources | amardeeplakshkar/awesome-free-llm-apis | ripienaar/free-for-dev | 0xzr/freellmpool |
|---|---|---|---|---|
| Stars | 23,243 | ~50 | 100k+ | 6 |
| 自动化更新 | 每日 cron 自动 | 无(纯人工) | 无(纯人工) | 无 |
| 维护成本 | 几乎零(脚本代劳) | 人工 PR | 大量贡献者人工 PR | 极小 |
| 范围深度 | LLM API 垂直深耕(每模型速率) | 永久免费 LLM(纯净聚焦) | SaaS 全景(LLM 仅子集) | 单一 Python 池 |
| 数据新鲜度 | 高(每日刷新) | 低(纯人工) | 中(PR 模式) | 低 |
| 隐性条款标注 | 强(诚实标注「phone verification」等) | 中 | 弱 | 无 |
| License | 未声明 | CC0-1.0 | 多样 | 需查 |
差异化护城河
「自动化新鲜度 + LLM 垂直深度 + 客观中立态度」三者叠加——竞品要复制需要同时投入 13+ 个 provider 的反查脚本 + 长期治理 + 社区信任,门槛极高。
竞争风险
- (合规风险) 某个供应商(如 OpenAI/Anthropic)突然把「逆向工程类服务」加入自家 TOS,而本仓库历史归档的某些 gateway 实际违规——且本仓库无 LICENSE,对引用/衍生/嵌入场景有潜在合规风险
- (规模化风险) GitHub Actions 免费额度对每日 cron 接近 1/3 上限,规模化受限
- (范式风险) 聚合型 gateway(Vercel/OpenRouter/Cloudflare)的崛起让「免费」边界本身被消解(Issue #329 即此议题)
生态定位
处于「awesome list 1.0」(人维护)和「auto-curated feed 2.0」(AI agent 实时决策)之间的过渡物种。填补了「LLM API 免费层 GitHub 入口」这一被所有人需要但无人愿意持续维护的位置。
套利机会分析
- 信息差: 已被市场充分发现(23K stars),不属于「被低估」型——但其「star 含金量」主要在目录分发价值而非工程实现价值(代码仅 1,230 行)
- 技术借鉴: 5 项可迁移工程模式(见上)对任何「自动维护列表/索引/目录」项目都适用,迁移成本低
- 生态位: 实质占位了「LLM API 免费层 GitHub 入口」,同体量对手几乎不存在
- 趋势判断: LLM 免费层市场仍在扩张(Groq/Cerebras/OpenRouter 都在持续扩张赠额),需求面向上;但仓库维护强度从 2024-09 月 74 commit 跌到 2026-04 月 4 commit,反映「核心免费 provider 名单已收敛」——属于**「核心资产已建立、进入守成」**的成熟项目
风险与不足
- 无 LICENSE 是最大风险: 23K stars 的资源聚合站没有明确许可证,README 使用方实际处于法律灰区;且本仓库主动拒绝逆向工程类服务,但本身缺许可证,存在矛盾
- 无测试、无类型注解、无 linter: 对「定期跑一次的 ETL」型代码可接受,但改坏 regex 不会立即发现
- 无 ARCHITECTURE.md、无 API 密钥申请指南给贡献者: 降低了外部贡献者的可参与性
- GitHub Actions 免费额度天花板: 每日 cron 接近 1/3 上限,若加更多 provider 触发频率会触顶
- 作者单人主导: 62% 占比(含 bot 自动化);若作者停更,需 fork 后重建数据流水线
- 衰减但未停: 月 commit 从 2024-09 的 74 跌到 2026-04 的 4,衰减 95%,但仍在维护——属于「成熟守成」阶段而非「活跃开发」
行动建议
- 如果你要用它: 直接看 README 的「Free Providers」一节(13 家真免费);其次「Providers with trial credits」(11 家赠额类)。「Free」优先于「Trial」,且注意作者对「phone verification required」、「data used for training outside UK/CH/EEA/EU」等隐性条款的诚实标注
- 如果你要学它: 重点看 4 个文件:
src/pull_available_models.py(1088 行,业务本体)、src/data.py(人工校准层)、.github/workflows/readme-change-validator.yml(防回归的硬约束)、.github/pull_request_template.md(治理写进第一接触点) - 如果你要 fork 它: 改进方向排序
- 补 LICENSE(最关键,选 MIT/CC-BY-4.0 都可,参照同类 awesome list)
- 把 README 输出成 RSS / JSON feed,让 AI agent 可消费(从「目录」升级为「feed 源」)
- 加入「上次成功 vs 本次成功」的 diff 校验,避免「看似成功实则空内容」的提交
- 把
pull_available_models.py拆为 provider 插件机制(目前是 13 个独立函数,加新 provider 需改主脚本) - 引入最小测试覆盖(至少对
data.py的get_model_name()和各 provider 的 schema 校验)
知识入口
| 资源 | 链接 |
|---|---|
| DeepWiki | 已收录 |
| Zread.ai | 未收录 |
| 关联论文 | 无(资源型仓库,无论文产出) |
| 在线 Demo | 无(纯文档/目录仓库,不提供交互式 demo) |