You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出GitHub组织下的所有GitHub Pages页面?

列出GitHub组织下所有GitHub Pages站点的方法

命令行快速实现(用gh CLI + jq)

GitHub官方的gh CLI和图形界面确实没有直接列出组织所有Pages的功能,但可以借助GitHub API来实现。先确保你已经通过gh auth login完成认证,然后替换命令里的ORG_NAME为你的组织名称:

基础版(输出仓库地址和Pages API地址)

gh api --paginate /orgs/ORG_NAME/repos --jq '.[] | select(.has_pages == true) | .html_url, .pages_url'

进阶版(直接显示Pages访问域名)

如果想直接看到可访问的Pages站点地址,包括自定义域名,可以用:

gh api --paginate /orgs/ORG_NAME/repos --jq '.[] | select(.has_pages == true) | .html_url + " -> " + (.pages["html_url"] // "'"$(gh api user | jq -r '.login')"'.github.io/" + .name)'

这个命令会自动处理没有自定义域名的情况,显示默认的用户名.github.io/仓库名格式地址。

自定义脚本实现(更灵活)

如果需要导出为CSV或者做更多过滤,可以写个简单的Python脚本(需要安装requests库):

import requests
import os

# 替换为你的组织名称
ORG_NAME = "你的组织名称"
# 从环境变量读取GitHub Token,或者直接写在这里(不推荐)
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")

headers = {"Authorization": f"token {GITHUB_TOKEN}"}
all_repos = []
next_url = f"https://api.github.com/orgs/{ORG_NAME}/repos?per_page=100"

# 分页获取组织下所有仓库
while next_url:
    resp = requests.get(next_url, headers=headers)
    all_repos.extend(resp.json())
    next_url = resp.links.get("next", {}).get("url")

# 筛选并获取Pages信息
for repo in all_repos:
    if repo.get("has_pages"):
        pages_resp = requests.get(repo["pages_url"], headers=headers)
        pages_data = pages_resp.json()
        # 优先取自定义域名,没有则用默认地址
        pages_url = pages_data.get("html_url", f"{repo['owner']['login']}.github.io/{repo['name']}")
        print(f"仓库: {repo['name']}")
        print(f"仓库地址: {repo['html_url']}")
        print(f"Pages访问地址: {pages_url}\n")

补充说明

GitHub的GUI和gh CLI没有提供这个功能的原因是,Pages是绑定到单个仓库的功能,组织层面没有统一的Pages管理入口,所以只能通过API批量遍历仓库来筛选。

内容的提问来源于stack exchange,提问作者Chen Tian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:45:40