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

Mac终端脚本无法获取GitHub账号关联仓库的GitHub Pages页面求助

修复你的GitHub Pages仓库检测脚本

问题排查步骤

  1. 检查jq是否安装
    MacOS默认不带jq这个JSON解析工具,这是脚本正常运行的关键依赖。执行jq --version,如果报错,用Homebrew安装:
brew install jq
  1. 验证API权限与返回内容
    先手动执行API请求,确认能正常拿到仓库数据:
curl -H "Authorization: token ghp_yyyyy" "https://api.github.com/users/xxxxx/repos" | jq '.[].name'

如果没返回仓库名,检查你的个人访问令牌权限(至少需要public_repo权限,私有仓库需repo权限),或者确认用户名是否填写正确。

优化后的脚本

原脚本每个仓库单独调用一次API,效率低还容易触发GitHub API限流。下面的优化版本一次请求就能获取所有仓库的name和homepage字段,同时修正了匹配逻辑:

#!/bin/bash

USERNAME="xxxxx"
TOKEN="ghp_yyyyy"

# 一次请求获取所有仓库的name和homepage,减少API调用次数
repos=$(curl -s -H "Authorization: token $TOKEN" "https://api.github.com/users/$USERNAME/repos?per_page=100")

echo "Repositories with GitHub Pages:"
echo "--------------------------------"

# 用while循环读取,避免仓库名带空格时的分割问题
echo "$repos" | jq -r '.[] | [.name, .homepage] | @tsv' | while IFS=$'\t' read -r repo homepage; do
    # 匹配以https://{用户名}.github.io/开头的地址,兼容有无末尾斜杠的情况
    if [[ "$homepage" =~ ^https://$USERNAME\.github\.io/ ]]; then
        echo "$repo - $homepage"
    fi
done

额外说明

  • GitHub API默认每页返回30个仓库,加上per_page=100可一次获取最多100个,若仓库超过100个,需要添加page=2等参数处理分页。
  • 如果你的Pages使用自定义域名,这个脚本不会匹配,可根据需求调整正则表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:41:15