# Github Trending Stable

> 通过网页抓取获取 GitHub 按日/周/月增长的热门仓库。当用户询问 GitHub 趋势、热门项目、本周热点或「什么在 GitHub 上 trending」时使用。可输出列表或 JSON，无需 API Key。

- Skill: `luokai0/github-trending-stable` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add luokai0/github-trending-stable`
- Raw SKILL.md: https://api.skillmd.com/api/skills/luokai0/github-trending-stable/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: luokai0 (https://skillmd.com/u/luokai0)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/luokai0/github-trending-stable

---


# GitHub Trending

抓取 GitHub 按日/周/月增长的热门仓库，仅使用 Python 标准库，无需安装第三方包。

## 何时使用

- 用户询问 **GitHub 趋势**、**热门项目**、**本周热点**
- 用户需要 **今日** / **本周** / **本月** 趋势
- 用户需要按 **编程语言** 筛选的 trending

## 快速开始

在技能目录下执行（如 `github-trending-stable/`）：

```bash
# 本周趋势（默认），15 条
python scripts/github_trending.py weekly

# 今日趋势，10 条
python scripts/github_trending.py daily --limit 10

# 本周 Python 趋势
python scripts/github_trending.py weekly --language python

# 输出 JSON（便于管道或工具调用）
python scripts/github_trending.py weekly --json
```

## 参数说明

| 参数 | 取值 | 默认 | 说明 |
|------|------|------|------|
| `period` | `daily`, `weekly`, `monthly` | `weekly` | 统计「新增 star」的时间范围 |
| `--limit` | 整数 | 15 | 返回仓库数量上限 |
| `--language` | 字符串 | 全部 | 按语言筛选（见下方） |
| `--json` | 开关 | — | 输出 JSON 而非可读文本 |

**语言**：可用全称或别名。脚本支持别名：`py`→python、`ts`→typescript、`js`→javascript、`cpp`/`c++`→c++、`c#`/`csharp`→c#、`rs`→rust、`rb`→ruby、`go`→go。其他按原样传入（如 `--language "c"`）。

## 输出格式

### 文本（默认）

- 排名、仓库 `full_name`、描述（最多 90 字）
- 每行统计符号含义：
  - **🔧** 编程语言
  - **⭐** 总 Star 数
  - **📈** 本周期新增 Star 数
- 时间为北京时区 (UTC+8)

### JSON（`--json`）

```json
{
  "period": "weekly",
  "updated_at": "2026-03-13T21:00:00+08:00",
  "data": [
    {
      "rank": 1,
      "full_name": "owner/repo",
      "url": "https://github.com/owner/repo",
      "description": "...",
      "language": "Python",
      "stars_total": "12345",
      "stars_gained": 1234
    }
  ]
}
```

## 数据来源

- **地址**：`https://github.com/trending`（及 `.../trending/<语言>?since=<周期>`）
- **方式**：HTTP + `html.parser.HTMLParser`（无需浏览器、无需登录）
- **实时**：每次执行都会拉取当前页面

## 依赖

仅使用 Python 标准库：`urllib.request`、`html.parser`、`json`、`argparse`、`datetime`。**无需 pip 安装。**

## 常见问题

| 现象 | 处理建议 |
|------|----------|
| 返回空列表 / 无仓库 | 可能是网络提前断开（IncompleteRead）。重试；若脚本支持，可改用分块读取。 |
| 解析报错 / 结构不对 | GitHub 可能改版了页面结构，需更新脚本选择器或解析逻辑。 |
| 超时 | 检查网络；默认超时 15 秒。 |
| Windows 控制台 emoji 乱码/报错 | 设置 `PYTHONIOENCODING=utf-8` 或使用 `--json` 在别处解析。 |

## 说明

- 趋势按**选定周期内新增的 star** 排序，不是按总 star 数。
- 若需 GitHub API（如按 star 搜索、鉴权等），请使用单独的 GitHub API 类技能。

