
日報とかに書くときに便利かも。
実装
スクリプトファイルの作成
gh_daily_report.shというファイルを作成、中身の構成は以下:
#!/bin/bash
# ============================================================
# gh_daily_report.sh
# その日に作成 or コメントしたPRをMarkdownで出力
# ============================================================
GITHUB_TOKEN="${GITHUB_TOKEN:-}"
REPO="${1:-}"
TARGET_DATE="${2:-$(date +%Y-%m-%d)}"
if [ -z "$GITHUB_TOKEN" ]; then
echo "Error: GITHUB_TOKEN が設定されていません"
exit 1
fi
if [ -z "$REPO" ]; then
echo "Usage: $0 <owner/repo> [YYYY-MM-DD]"
exit 1
fi
gh_api() {
curl -sf \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"$1"
}
ME=$(gh_api "https://api.github.com/user" | jq -r '.login')
SINCE="${TARGET_DATE}T00:00:00+09:00"
UNTIL="${TARGET_DATE}T23:59:59+09:00"
echo "取得中... (repo: $REPO, date: $TARGET_DATE, user: $ME)" >&2
# ---- 1. 今日作成したPR ----
CREATED=$(gh_api \
"https://api.github.com/repos/${REPO}/pulls?state=all&per_page=100" \
| jq -r --arg me "$ME" --arg since "$SINCE" --arg until "$UNTIL" '
.[] | select(.user.login == $me)
| select(.created_at >= $since and .created_at <= $until)
| {number: .number, title: .title, url: .html_url}
')
# ---- 2. 今日一般コメントしたPR (PRもissues APIで取れる) ----
ISSUE_COMMENT_PR_NUMBERS=$(gh_api \
"https://api.github.com/repos/${REPO}/issues/comments?since=${SINCE}&per_page=100" \
| jq -r --arg me "$ME" --arg until "$UNTIL" '
.[] | select(.user.login == $me)
| select(.created_at <= $until)
| .issue_url | split("/") | last
' | sort -u)
# ---- 3. 今日レビューコメントしたPR ----
REVIEW_COMMENT_PR_NUMBERS=$(gh_api \
"https://api.github.com/repos/${REPO}/pulls/comments?since=${SINCE}&per_page=100" \
| jq -r --arg me "$ME" --arg until "$UNTIL" '
.[] | select(.user.login == $me)
| select(.created_at <= $until)
| .pull_request_url | split("/") | last
' | sort -u)
# ---- コメント系のPR番号をまとめてタイトル取得 ----
ALL_COMMENT_NUMBERS=$(echo -e "${ISSUE_COMMENT_PR_NUMBERS}\n${REVIEW_COMMENT_PR_NUMBERS}" | sort -u | grep -v '^$')
COMMENTED=""
while IFS= read -r num; do
[ -z "$num" ] && continue
# ⬇️ テキストリンク形式 `-[タイトル](URL)` に修正
item=$(gh_api "https://api.github.com/repos/${REPO}/pulls/${num}" \
| jq -r 'select(.number != null) | "- [\(.title)](\(.html_url))"')
[ -n "$item" ] && COMMENTED="${COMMENTED}${item}\n"
done <<< "$ALL_COMMENT_NUMBERS"
# ---- Markdown出力 ----
echo ""
echo "# 📋 作業サマリー ($TARGET_DATE)"
echo ""
echo "## 🔀 Pull Request"
echo ""
HAS=false
if [ -n "$CREATED" ]; then
echo "### **作成**"
# ⬇️ テキストリンク形式 `-[タイトル](URL)` に修正
echo "$CREATED" | jq -r '"- [\(.title)](\(.url))"'
echo ""
HAS=true
fi
if [ -n "$(printf '%b' "$COMMENTED")" ]; then
echo "### **コメント・レビュー**"
printf "%b" "$COMMENTED"
echo ""
HAS=true
fi
if [ "$HAS" = false ]; then
echo "_なし_"
fi保存したら、ターミナル上でこのファイルの実行権限を与える。
chmod +x gh_daily_report.sh(+xでこのファイルを実行してもいいよという権限を与える役割)
必要な引数
Repo権限のあるTOKENを発行して、手元にメモしておく。
ghp_xxxxxxみたいなやつです、TOKEN名は何でもOK。

実行
ターミナルを開いて、以下を実行
export GITHUB_TOKEN=ghp_xxxxx
./gh_daily_report.sh リポジトリ名リポジトリ名は、https://github.com/以降の部分です。
もし特定の日付の作業を抽出したいなら、リポジトリ名の次に日付をつければその日付でフィルタリングして返してくれます。
./gh_daily_report.sh リポジトリ名 2026-04-16
