# GitHub API Browser Fallback — 当 terminal/curl 不可用时 ## 核心技巧 用 `browser_navigate` 直接访问 GitHub API(无需认证的公开端点),然后 `browser_console` 提取 JSON。 ## 每次操作的三步模式 ``` 1. browser_navigate → API URL 2. browser_console → JSON.parse(document.body.innerText).items.map(...) 3. 处理数据,再 navigate 下一个查询 ``` ## 推荐查询模板 ### 查询 1:近7天新建高星项目(主力)⭐ 最重要 ``` https://api.github.com/search/repositories?q=created:>YYYY-MM-DD+stars:>200&sort=stars&per_page=20 ``` 将 `YYYY-MM-DD` 替换为7天前日期。⚠️ 阈值不要低于 `stars:>200`,否则垃圾仓库淹没结果。 ### 查询 2:老牌大项目近期活跃(补充上下文) ``` https://api.github.com/search/repositories?q=pushed:>YYYY-MM-DD+stars:>5000&sort=stars&per_page=15 ``` 发现大项目的重大更新(如新版本发布)。提供"老牌活跃"维度,与查询1的"新项目爆发"互补。 ### 查询 3:近30天快速增长项目(可选) ``` https://api.github.com/search/repositories?q=created:>YYYY-MM-DD+stars:>500&sort=stars&per_page=20 ``` ### 查询 4:特定语言趋势(按需) ``` https://api.github.com/search/repositories?q=language:rust+created:>YYYY-MM-DD+stars:>100&sort=stars&per_page=15 ``` ### ⚠️ 避免:极新鲜 + 低阈值查询 ``` ❌ created:>2天前+stars:>50 → 几乎全是垃圾仓库 ``` 2026-06-19 实测:`created:>2026-06-17+stars:>50` 返回的20个结果中,18个是模板化垃圾仓库(Star数全是110-121,0 forks,描述模板化)。参见 `references/spam-detection.md` 中的实战案例。 ## JS 提取模板(每个查询复用,必须用 IIFE 包裹) ```javascript // ⚠️ 必须用 IIFE 包裹,避免变量重复声明错误(browser_console 共享 JS 上下文) (function(){ var d = JSON.parse(document.body.innerText); return d.items.map(function(r) { return { name: r.full_name, desc: (r.description||'').slice(0,200), stars: r.stargazers_count, lang: r.language, created: r.created_at.slice(0,10), forks: r.forks_count, topics: (r.topics||[]).slice(0,6) }; }); })() ``` ## 三查询实战 Playbook(2026-06-19 验证) 当 trending 页面完全不可用时,用以下三个查询组合获取完整日报数据: | 步骤 | 查询 | 数据量 | 用途 | |------|------|--------|------| | ① | `created:>7天前+stars:>200` | ~15-20 个 | 新项目爆发(主数据源) | | ② | `pushed:>昨天+stars:>5000` | ~15 个 | 老牌活跃项目(上下文补充) | | ③ | `created:>14天前+stars:>300` | ~15 个 | 近两周中等阈值(补漏) | **执行顺序**:每个查询独立 `browser_navigate` → `browser_console` 提取 → 再下一个。 **合并策略**:三轮结果按 `full_name` 去重后,选 TOP 10 分析。查询①的新项目优先,查询②的大项目作为趋势补充。 **注意**:不要用 `created:>2天前+stars:>50`,该查询几乎全是垃圾仓库(见上方警告)。 ## 注意事项 - GitHub API 未认证限速:10 requests/minute,足够完成日报 - 每个查询需要单独 `browser_navigate`,不要在同一个 page 做多次 fetch - API 返回的 `stargazers_count` 是总星数,不是日增——需要通过 `created` 日期和星数推算热度 - 对于真正的"今日增速"数据,API 无法直接提供,需要对比不同时间点的查询结果