GitHub 数据源
数据官方

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.

interstellar
interstellar
浏览4万
使用16

Skill 文件

SKILL.md
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(用 curlH 参数):

Authorization: Bearer {{secrets.GITHUB_TOKEN}}

占位符由后端在 curl 运行期替换为真实 token,你无需也无法看到明文,直接发请求即可。

通用约定

  • Base URL:https://api.github.com
  • 所有请求附带这两个头(用 curlH 参数):
    • Accept: application/vnd.github+json
    • X-GitHub-Api-Version: 2022-11-28
  • 分页:列表接口用 query 参数 per_page(最大 100)、page
  • 结果较大时,优先用 query 参数收窄范围,避免响应被截断。

常用接口

1. 仓库基础信息(star / fork / 语言 / 描述)

GET https://api.github.com/repos/{owner}/{repo}

关键返回字段:full_namedescriptionstargazers_countforks_countopen_issues_countlanguagetopicspushed_atlicense.spdx_id

2. 最新 release

GET https://api.github.com/repos/{owner}/{repo}/releases/latest

关键返回字段:tag_namenamepublished_athtml_urlbody(changelog 正文)。

3. release 列表

GET https://api.github.com/repos/{owner}/{repo}/releases?per_page=10

每项关键字段:tag_namenamepublished_athtml_urlbodyprereleasedraft

4. 贡献者列表(按提交数倒序)

GET https://api.github.com/repos/{owner}/{repo}/contributors?per_page=10

每项关键字段:logincontributionshtml_url

5. 搜索仓库(如 trending / 关键词)

GET https://api.github.com/search/repositories?q={query}&sort=stars&order=desc&per_page=10

关键返回字段:total_countitems[].full_nameitems[].stargazers_countitems[].description

6. Issue 列表

GET https://api.github.com/repos/{owner}/{repo}/issues?state=open&per_page=20&sort=created&direction=desc

state 可选 openclosedalllabels 参数可按标签过滤(逗号分隔)。 每项关键字段:numbertitlestateuser.loginlabels[].namecreated_atupdated_atcommentshtml_url

7. 单个 Issue 详情

GET https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}

关键返回字段:numbertitlebodystateuser.loginlabels[].nameassignees[].loginmilestonecreated_atclosed_atcommentshtml_url

8. Issue 评论

GET https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}/comments?per_page=30

每项关键字段:user.loginbodycreated_athtml_url

9. Pull Request 列表

GET https://api.github.com/repos/{owner}/{repo}/pulls?state=open&per_page=20&sort=created&direction=desc

state 可选 openclosedall。 每项关键字段:numbertitlestateuser.loginhead.refbase.refcreated_atupdated_atmerged_athtml_url

10. 单个 Pull Request 详情

GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}

关键返回字段:numbertitlebodystatemergedmergeableuser.loginhead.refbase.refadditionsdeletionschanged_filescommentsreview_commentshtml_url

11. Pull Request 的文件变更

GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/files?per_page=100

每项关键字段:filenamestatus(added/removed/modified/renamed)、additionsdeletionspatch

12. Pull Request 评论(Review Comments)

GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/comments?per_page=30

每项关键字段:user.loginbodypathlinecreated_at

13. 提交历史

GET https://api.github.com/repos/{owner}/{repo}/commits?per_page=20&sha={branch}

sha 可传分支名或 commit SHA,省略时为默认分支。since / until 可按 ISO 8601 时间过滤。author 可按用户名过滤。 每项关键字段:shacommit.messagecommit.author.namecommit.author.datehtml_url

14. 单个 Commit 详情

GET https://api.github.com/repos/{owner}/{repo}/commits/{ref}

关键返回字段:shacommit.messagecommit.authorstats.additionsstats.deletionsfiles[](同 PR files 结构)。

15. 分支列表

GET https://api.github.com/repos/{owner}/{repo}/branches?per_page=30

每项关键字段:namecommit.shaprotected

16. 标签列表(Tags)

GET https://api.github.com/repos/{owner}/{repo}/tags?per_page=30

每项关键字段:namecommit.shazipball_urltarball_url

17. 仓库目录/文件内容

GET https://api.github.com/repos/{owner}/{repo}/contents/{path}?ref={branch}
  • 目录:返回文件列表数组,每项含 namepathtype(file/dir)、size
  • 文件:返回单个对象,content 为 base64 编码,encodingsizehtml_url
  • ref 可选,指定分支/tag/SHA。

18. 获取 README

GET https://api.github.com/repos/{owner}/{repo}/readme

关键返回字段:content(base64)、encodinghtml_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}

关键返回字段:loginnamebiopublic_reposfollowersfollowingavatar_urlhtml_urlcreated_at

22. 用户的仓库列表

GET https://api.github.com/users/{username}/repos?sort=updated&per_page=10

sort 可选 createdupdatedpushedfull_nametype 可选 ownermemberall。 每项关键字段:同仓库基础信息。

23. 组织信息

GET https://api.github.com/orgs/{org}

关键返回字段:loginnamedescriptionpublic_reposhtml_urlblog

24. 组织的仓库列表

GET https://api.github.com/orgs/{org}/repos?sort=updated&per_page=10&type=public

type 可选 allpublicprivateforkssources

25. 组织成员

GET https://api.github.com/orgs/{org}/members?per_page=30

每项关键字段:loginavatar_urlhtml_url

26. 搜索 Issue / PR

GET https://api.github.com/search/issues?q={query}&sort=created&order=desc&per_page=10

q 示例:repo:owner/repo is:issue is:open label:bugrepo:owner/repo is:pr is:merged。 关键返回字段:total_countitems[].numberitems[].titleitems[].stateitems[].html_url

27. 搜索代码

GET https://api.github.com/search/code?q={query}+repo:{owner}/{repo}&per_page=10

关键返回字段:total_countitems[].nameitems[].pathitems[].html_urlitems[].repository.full_name。 注意:代码搜索要求认证,且有额外的速率限制(每分钟 10 次)。

28. 搜索用户

GET https://api.github.com/search/users?q={query}&sort=followers&order=desc&per_page=10

关键返回字段:total_countitems[].loginitems[].html_urlitems[].avatar_url

29. Workflow 列表(GitHub Actions)

GET https://api.github.com/repos/{owner}/{repo}/actions/workflows?per_page=30

关键返回字段:total_countworkflows[].idworkflows[].nameworkflows[].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 可选 completedin_progressqueuedfailuresuccess 等。branch 参数可按分支过滤。 关键返回字段:total_countworkflow_runs[].idworkflow_runs[].nameworkflow_runs[].statusworkflow_runs[].conclusionworkflow_runs[].html_urlworkflow_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_bybehind_bytotal_commitscommits[]files[]

32. Star 用户列表(谁 star 了该仓库)

GET https://api.github.com/repos/{owner}/{repo}/stargazers?per_page=30

每项关键字段:loginavatar_urlhtml_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_nameowner.logincreated_athtml_url

34. Milestone 列表

GET https://api.github.com/repos/{owner}/{repo}/milestones?state=open&per_page=10

每项关键字段:numbertitledescriptionstateopen_issuesclosed_issuesdue_on

35. Label 列表

GET https://api.github.com/repos/{owner}/{repo}/labels?per_page=50

每项关键字段:namecolordescription

36. 仓库事件流(Activity)

GET https://api.github.com/repos/{owner}/{repo}/events?per_page=30

每项关键字段:type(PushEvent/IssuesEvent/PullRequestEvent 等)、actor.logincreated_atpayload

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.logintotal(总提交数)、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.limitresources.core.remainingresources.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 与响应体摘要反馈给用户。
Ln 1, Col 1MarkdownSpaces: 2
No errors