GitHub 官方没有“今日热门”页面级 API,但 Search API 支持按创建时间过滤后按 star 排序,足以拼出“近 14 天新建 + 涨星最快”的榜单。本教程用 curl 与一段 Python 搭最小实现:先取数据,再按 AI 关键词过滤噪声,输出 Markdown,最后挂到定时任务上。
第一步:确认配额与查询参数
Search API 未认证限额 10 次/分钟、认证后 30 次/分钟。单次查询即可覆盖前 100 名,所以每日一次完全够用。核心参数:q=created:>=YYYY-MM-DD 控制创建窗口,sort=stars&order=desc 按 star 降序,per_page 最大 100。窗口建议用 14 天,太短样本少、太长全是老项目。
# 取近 14 天创建、按 star 降序的前 100 个仓库
export GITHUB_TOKEN=你的_token # 可选,建议加上提升配额
curl -sS -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/search/repositories?q=created:%3E=2026-08-27&sort=stars&order=desc&per_page=100" > repos.json第二步:按关键词过滤出 AI 相关项目
直接按 star 排出来的前 100 名里混着大量与 AI 无关的项目,需要用关键词在 name/description/topics 上过滤。注意把关键词写成子串匹配,避免漏掉 “ai-xxx” 这类命名;同时准备一份黑名单把成人内容、代理工具等噪声排除。
import json
AI_KW = [" ai", "llm", "gpt", "agent", "mcp", "rag", "diffusion",
"deep learning", "vllm", "multimodal", "chatbot", "copilot"]
BLOCK = ["nsfw", "undress", "vless", "trojan"]
items = json.load(open("repos.json"))["items"]
out = []
for r in items:
hay = (r["name"] + " " + (r["description"] or "") + " " + " ".join(r.get("topics") or [])).lower()
if any(k in hay for k in BLOCK):
continue
if any(k in hay for k in AI_KW) and r["stargazers_count"] >= 50:
out.append(r)
out.sort(key=lambda x: x["stargazers_count"], reverse=True)
print(len(out), "个项目通过过滤")第三步:生成 Markdown 简报
把过滤结果渲染成可读的 Markdown:每天一份,标题带日期,每条给出仓库名、一句话简介、star/fork、语言与链接。中文简介不要自动生成硬塞进代码里——要么人工补,要么让 LLM 基于 description 概括后你再校对,避免出现编造内容。
cat > report.md <<'EOF'
# AI 开源日报 2026-09-10
> 近 14 天新建仓库,按 star 排序,自动生成
EOF
# 用 python 把 out 列表逐条追加进 report.md(仓库名/简介/star/链接)第四步:挂到定时任务每天自动跑
本地用 cron(macOS/Linux)或“任务计划程序”(Windows)每天固定时间执行;想不依赖本机,就用 GitHub Actions 的 schedule 触发,把生成的 report.md 提交回仓库或推送到 Gist。注意 Search API 有配额,每天 1-2 次足够,别设成每分钟一次。
# .github/workflows/trending.yml(节选)
on:
schedule:
- cron: "0 22 * * *" # 每天 UTC 22:00(北京时间次日 06:00)
workflow_dispatch: {}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: python gen_trending.py
- uses: stefanzweifel/git-auto-commit-action@v5第五步:校验与维护
上线前检查三件事:生成的链接逐个请求确认可达(挑几个 curl -I 即可);日期与窗口参数用北京时间对表,避免 UTC 跨夜导致“今天”错位;长期运行后定期回看过滤关键词——AI 圈子新概念(如新的框架名)出现时,往 AI_KW 里补词即可,不需要改逻辑。
榜单工具的价值不在代码,而在过滤规则:关键词列表就是你对“什么是值得看的 AI 项目”的判断,要随生态持续维护。