
GitHub 数据源
Use when the user asks for GitHub repository data — star/fork/issue counts, repo metadata, latest release or changelog, contributors, or repository search/trending (keywords:GitHub、仓库、repo、star、fork、issue、release、贡献者、trending). Provides read-only access to the GitHub REST API. Do NOT use for non-GitHub data or for OAuth login flows.
Skill 文件
| name | github-datasource |
|---|---|
| title | GitHub 数据源 |
| description | Use when the user asks for GitHub repository data — star/fork/issue counts, repo metadata, latest release or changelog, contributors, or repository search/trending (keywords:GitHub、仓库、repo、star、fork、issue、release、贡献者、trending). Provides read-only access to the GitHub REST API. Do NOT use for non-GitHub data or for OAuth login flows. |
| tools | curl |
| credentials | GITHUB_TOKEN |
| credential_help | GITHUB_TOKEN: "在 https://github.com/settings/tokens 创建 Personal Access Token (classic),勾选 repo 权限" |
GitHub 数据源
通过 curl tool 调用 GitHub REST API 获取仓库、release、贡献者等数据。
鉴权
请求 api.github.com 时,在请求头携带 token(用 curl 的 H 参数):
Authorization: Bearer {{secrets.GITHUB_TOKEN}}
占位符由后端在 curl 运行期替换为真实 token,你无需也无法看到明文,直接发请求即可。
通用约定
- Base URL:
https://api.github.com - 所有请求附带这两个头(用
curl的H参数):Accept: application/vnd.github+jsonX-GitHub-Api-Version: 2022-11-28
- 分页:列表接口用 query 参数
per_page(最大 100)、page。 - 结果较大时,优先用 query 参数收窄范围,避免响应被截断。
常用接口
1. 仓库基础信息(star / fork / 语言 / 描述)
GET https://api.github.com/repos/{owner}/{repo}关键返回字段:full_name、description、stargazers_count、forks_count、open_issues_count、language、topics、pushed_at、license.spdx_id。
2. 最新 release
GET https://api.github.com/repos/{owner}/{repo}/releases/latest关键返回字段:tag_name、name、published_at、html_url、body(changelog 正文)。
3. release 列表
GET https://api.github.com/repos/{owner}/{repo}/releases?per_page=10每项关键字段:tag_name、name、published_at、html_url、body、prerelease、draft。
4. 贡献者列表(按提交数倒序)
GET https://api.github.com/repos/{owner}/{repo}/contributors?per_page=10每项关键字段:login、contributions、html_url。
5. 搜索仓库(如 trending / 关键词)
GET https://api.github.com/search/repositories?q={query}&sort=stars&order=desc&per_page=10关键返回字段:total_count、items[].full_name、items[].stargazers_count、items[].description。
6. Issue 列表
GET https://api.github.com/repos/{owner}/{repo}/issues?state=open&per_page=20&sort=created&direction=descstate 可选 open、closed、all。labels 参数可按标签过滤(逗号分隔)。
每项关键字段:number、title、state、user.login、labels[].name、created_at、updated_at、comments、html_url。
7. 单个 Issue 详情
GET https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}关键返回字段:number、title、body、state、user.login、labels[].name、assignees[].login、milestone、created_at、closed_at、comments、html_url。
8. Issue 评论
GET https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}/comments?per_page=30每项关键字段:user.login、body、created_at、html_url。
9. Pull Request 列表
GET https://api.github.com/repos/{owner}/{repo}/pulls?state=open&per_page=20&sort=created&direction=descstate 可选 open、closed、all。
每项关键字段:number、title、state、user.login、head.ref、base.ref、created_at、updated_at、merged_at、html_url。
10. 单个 Pull Request 详情
GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}关键返回字段:number、title、body、state、merged、mergeable、user.login、head.ref、base.ref、additions、deletions、changed_files、comments、review_comments、html_url。
11. Pull Request 的文件变更
GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/files?per_page=100每项关键字段:filename、status(added/removed/modified/renamed)、additions、deletions、patch。
12. Pull Request 评论(Review Comments)
GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/comments?per_page=30每项关键字段:user.login、body、path、line、created_at。
13. 提交历史
GET https://api.github.com/repos/{owner}/{repo}/commits?per_page=20&sha={branch}sha 可传分支名或 commit SHA,省略时为默认分支。since / until 可按 ISO 8601 时间过滤。author 可按用户名过滤。
每项关键字段:sha、commit.message、commit.author.name、commit.author.date、html_url。
14. 单个 Commit 详情
GET https://api.github.com/repos/{owner}/{repo}/commits/{ref}关键返回字段:sha、commit.message、commit.author、stats.additions、stats.deletions、files[](同 PR files 结构)。
15. 分支列表
GET https://api.github.com/repos/{owner}/{repo}/branches?per_page=30每项关键字段:name、commit.sha、protected。
16. 标签列表(Tags)
GET https://api.github.com/repos/{owner}/{repo}/tags?per_page=30每项关键字段:name、commit.sha、zipball_url、tarball_url。
17. 仓库目录/文件内容
GET https://api.github.com/repos/{owner}/{repo}/contents/{path}?ref={branch}- 目录:返回文件列表数组,每项含
name、path、type(file/dir)、size。 - 文件:返回单个对象,
content为 base64 编码,encoding、size、html_url。 ref可选,指定分支/tag/SHA。
18. 获取 README
GET https://api.github.com/repos/{owner}/{repo}/readme关键返回字段:content(base64)、encoding、html_url。可附加 ref 参数指定分支。
19. 仓库语言分布
GET https://api.github.com/repos/{owner}/{repo}/languages返回 { "TypeScript": 123456, "JavaScript": 78901 } 形式的 bytes 占比。
20. 仓库 Topics
GET https://api.github.com/repos/{owner}/{repo}/topics返回 { "names": ["react", "typescript", ...] }。
21. 用户信息
GET https://api.github.com/users/{username}关键返回字段:login、name、bio、public_repos、followers、following、avatar_url、html_url、created_at。
22. 用户的仓库列表
GET https://api.github.com/users/{username}/repos?sort=updated&per_page=10sort 可选 created、updated、pushed、full_name。type 可选 owner、member、all。
每项关键字段:同仓库基础信息。
23. 组织信息
GET https://api.github.com/orgs/{org}关键返回字段:login、name、description、public_repos、html_url、blog。
24. 组织的仓库列表
GET https://api.github.com/orgs/{org}/repos?sort=updated&per_page=10&type=publictype 可选 all、public、private、forks、sources。
25. 组织成员
GET https://api.github.com/orgs/{org}/members?per_page=30每项关键字段:login、avatar_url、html_url。
26. 搜索 Issue / PR
GET https://api.github.com/search/issues?q={query}&sort=created&order=desc&per_page=10q 示例:repo:owner/repo is:issue is:open label:bug、repo:owner/repo is:pr is:merged。
关键返回字段:total_count、items[].number、items[].title、items[].state、items[].html_url。
27. 搜索代码
GET https://api.github.com/search/code?q={query}+repo:{owner}/{repo}&per_page=10关键返回字段:total_count、items[].name、items[].path、items[].html_url、items[].repository.full_name。
注意:代码搜索要求认证,且有额外的速率限制(每分钟 10 次)。
28. 搜索用户
GET https://api.github.com/search/users?q={query}&sort=followers&order=desc&per_page=10关键返回字段:total_count、items[].login、items[].html_url、items[].avatar_url。
29. Workflow 列表(GitHub Actions)
GET https://api.github.com/repos/{owner}/{repo}/actions/workflows?per_page=30关键返回字段:total_count、workflows[].id、workflows[].name、workflows[].state(active/disabled)、workflows[].path。
30. Workflow Runs(CI/CD 执行记录)
GET https://api.github.com/repos/{owner}/{repo}/actions/runs?per_page=10&status={status}status 可选 completed、in_progress、queued、failure、success 等。branch 参数可按分支过滤。
关键返回字段:total_count、workflow_runs[].id、workflow_runs[].name、workflow_runs[].status、workflow_runs[].conclusion、workflow_runs[].html_url、workflow_runs[].created_at。
31. 比较两个 Commit / 分支
GET https://api.github.com/repos/{owner}/{repo}/compare/{base}...{head}base / head 可以是分支名、tag 或 SHA。
关键返回字段:status(ahead/behind/identical/diverged)、ahead_by、behind_by、total_commits、commits[]、files[]。
32. Star 用户列表(谁 star 了该仓库)
GET https://api.github.com/repos/{owner}/{repo}/stargazers?per_page=30每项关键字段:login、avatar_url、html_url。
加 Accept: application/vnd.github.star+json 头可获取 starred_at 时间。
33. Fork 列表
GET https://api.github.com/repos/{owner}/{repo}/forks?sort=newest&per_page=10每项关键字段:full_name、owner.login、created_at、html_url。
34. Milestone 列表
GET https://api.github.com/repos/{owner}/{repo}/milestones?state=open&per_page=10每项关键字段:number、title、description、state、open_issues、closed_issues、due_on。
35. Label 列表
GET https://api.github.com/repos/{owner}/{repo}/labels?per_page=50每项关键字段:name、color、description。
36. 仓库事件流(Activity)
GET https://api.github.com/repos/{owner}/{repo}/events?per_page=30每项关键字段:type(PushEvent/IssuesEvent/PullRequestEvent 等)、actor.login、created_at、payload。
37. 提交活跃度统计(最近一年,按周)
GET https://api.github.com/repos/{owner}/{repo}/stats/commit_activity返回 52 周的数组,每项含 week(Unix 时间戳)、total(提交数)、days(每天提交数数组)。
注意:首次调用可能返回 202,需等待后重试。
38. 贡献者提交统计
GET https://api.github.com/repos/{owner}/{repo}/stats/contributors每项含 author.login、total(总提交数)、weeks[](每周 a/d/c 分别为 additions/deletions/commits)。
注意:首次调用可能返回 202,需等待后重试。
39. 代码频率统计(每周增删行数)
GET https://api.github.com/repos/{owner}/{repo}/stats/code_frequency返回二维数组 [unix_timestamp, additions, deletions],每周一条。
40. Rate Limit 查询
GET https://api.github.com/rate_limit关键返回字段:resources.core.limit、resources.core.remaining、resources.core.reset(Unix 时间戳)、resources.search(搜索有独立限额)。
调用示例
获取 antvis/g2 的 star 数:
curl( url = "https://api.github.com/repos/antvis/g2", H = ["Accept: application/vnd.github+json", "X-GitHub-Api-Version: 2022-11-28"])返回 JSON 后,读取 stargazers_count 字段回答用户。
错误处理
403且含rate limit:触发限流,告知用户稍后再试,不要重试风暴。404:仓库/资源不存在,核对owner/repo拼写。- 其他非 2xx:把
status与响应体摘要反馈给用户。