# 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 无法直接提供，需要对比不同时间点的查询结果
