💨

Github CLIでIssuesをMarkdownファイルとしてダウンロードする方法

に公開
2

この記事について

私は普段、Githubのプライベートリポジトリにメモやアイデアを書き溜めています。
リポジトリには、清書したメモなどを保管。Issuesに一時メモや作業メモをまとめています。
(IssuesについてはZennのスクラップと同じような感じで利用しています。)
しかし、Issuesの作業メモなどは書き溜めた後、コピー&ペーストするような方法ばかりで、
効率的に活用できていませんでした。

この問題を解決するため、Issuesをmarkdownファイルとしてダウンロードして、ローカル環境で管理することを決めました。この記事では、GitHub CLIを使ってGitHubのIssuesをmarkdownファイルとしてダウンロードする方法を紹介します。

対象読者:

  • Github CLIの基本的な使い方を知っている方
  • ドキュメント作成や記事執筆の素材としてIssuesを活用したい方

前提条件

環境セットアップ

GitHub CLIのインストール

# インストール状況の確認
gh --version

# GitHub CLIのインストール(必要な場合)
sudo apt install gh

GitHub CLIへのログイン

# ログイン状況の確認
gh auth status

# GitHub CLIへログイン実行
gh auth login

リポジトリのIssues一覧確認

gh issue list --repo <OWNER/REPO>

実行例

# サンプルのリポジトリ(mr110825/github-issues-to-markdown)のIssueを対象とする
gh issue list --repo mr110825/github-issues-to-markdown

出力例

ID  TITLE               LABELS  UPDATED         
#1  サンプル用のIssues          about 1 hour ago

Issueの取得

gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments > <FILENAME>.md

実行例

# サンプルのリポジトリ(mr110825/github-issues-to-markdown)のIssues#1を「test1.md」として取得する
gh issue view 1 --repo mr110825/github-issues-to-markdown --comments > test1.md

出力例

author:	mr110825
association:	owner
edited:	true
status:	none
--
記事を投稿するので構成をまとめる
--
author:	mr110825
association:	owner
edited:	true
status:	none
--
必要な手順

- [x] 文章企画を構成
- [x] サンプルのリポジトリを作成
- [x] 記事作成
- [x] 記事投稿
--

Issueの取得(不要なプロパティを除外してISO形式でコメントのみを取得)

gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments --json comments --template '{{range .comments}}## コメント ({{.createdAt}})

{{.body}}

---
{{end}}' > <FILENAME>.md

実行例

# サンプルのリポジトリ(mr110825/github-issues-to-markdown)のIssues#1を「test2.md」として取得する
gh issue view 1 --repo mr110825/github-issues-to-markdown --comments --json comments --template '{{range .comments}}## コメント ({{.createdAt}})

{{.body}}

---
{{end}}' > test2.md

出力例

## コメント (2025-06-28T12:24:28Z)

記事を投稿するので構成をまとめる

---
## コメント (2025-06-28T12:25:50Z)

必要な手順

- [x] 文章企画を構成
- [x] サンプルのリポジトリを作成
- [x] 記事作成
- [x] 記事投稿

---

Issueの取得(jqコマンドで日時フォーマットを日本語表記に変換)

gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments --json comments | jq -r '.comments[] | "## コメント (" + (.createdAt | strptime("%Y-%m-%dT%H:%M:%SZ") | strftime("%Y年%m月%d日 %H時%M分")) + ")\n\n" + .body + "\n\n---\n"' > <FILENAME>.md
# jqコマンドのインストール(必要な場合)
sudo apt install jq

実行例

# サンプルのリポジトリ(mr110825/github-issues-to-markdown)のIssues#1を「test3.md」として取得する
gh issue view 1 --repo mr110825/github-issues-to-markdown --comments --json comments | jq -r '.comments[] | "## コメント (" + (.createdAt | strptime("%Y-%m-%dT%H:%M:%SZ") | strftime("%Y年%m月%d日 %H時%M分")) + ")\n\n" + .body + "\n\n---\n"' > test3.md

出力例

## コメント (2025年06月28日 12時24分)

記事を投稿するので構成をまとめる

---
## コメント (2025年06月28日 12時25分)

必要な手順

- [x] 文章企画を構成
- [x] サンプルのリポジトリを作成
- [x] 記事作成
- [x] 記事投稿

---

コマンドのまとめ

# Issues一覧確認
gh issue list --repo <OWNER/REPO>
# Issueの取得
gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments > <FILENAME>.md
# Issueの取得(不要なプロパティを除外してISO形式でコメントのみを取得)
gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments --json comments --template '{{range .comments}}## コメント ({{.createdAt}})

{{.body}}

---
{{end}}' > <FILENAME>.md
# Issueの取得(jqコマンドで日時フォーマットを日本語表記に変換)
gh issue view <ISSUE_NUMBER> --repo <OWNER/REPO> --comments --json comments | jq -r '.comments[] | "## コメント (" + (.createdAt | strptime("%Y-%m-%dT%H:%M:%SZ") | strftime("%Y年%m月%d日 %H時%M分")) + ")\n\n" + .body + "\n\n---\n"' > <FILENAME>.md

まとめ

Github CLIを使用してIssuesをMarkdownファイルとしてダウンロードする方法を紹介しました。特に、jqコマンドを使用した日本語表記でのダウンロード方法が、実用的で読みやすい結果を得られると感じています。

この方法により、オフライン環境でもIssuesの内容を参照でき、ドキュメント作成や記事執筆の素材としても活用できるようになります。実際に使用してみて、いくつかの改善点も見つかりましたが、基本的なニーズを満たすには十分な方法だと思います。

修正履歴

2025/06/29

  • Github Wiki で同様の運用が可能とコメントいただいたので、記事の内容を一部修正
    • 「この記事について」の文章を修正
    • オフライン環境のIssuesの活用についての内容を削除

Discussion

rakiraki

オフライン環境がどういう状況なのかにもよると思うんですけど、GitHub なら wiki を使って、wiki もリポジトリとしてダウンロードしておけばツールを自作しなくてもいい気がしました。
Issue と同様にブラウザから wiki も書けますし、リポジトリとして clone しておけばマークダウンファイルとして管理できます。

どちらかといえば、フロー情報を issue で扱って、ストック情報として wiki に整理し、整理した issue は close しておく、整理の終わった wiki はリポジトリに清書した文書として移動する、みたいな作業フローにすると便利です。

という感想を持ちました。

フミ@勉強記録アウトプットフミ@勉強記録アウトプット

コメントありがとうございます。
ご指摘の通り、パブリックなリポジトリなどの場合はGithub Wikiにより同様の運用が可能ですね。
記事の内容を一部修正させていただきました。
勉強になるコメントを記入していただき、ありがとうございます。