この記事では
Qiita APIから取得した取得した自身の投稿を、タグ分けしてMarkdown形式のリンク集に書き出します。
GitHubのREADME.mdはそのものなので、Pythonを使って更新できます。
GitHub Actionsは定期実行ができるので、Qiitaへ自分が投稿した記事のポートフォリオをGitHub上に掲載するのはどうだろう?というチャレンジをしてみました。
経緯のようなもの
普段はPower Automateのクラウドフローを作ってはQiitaに投稿している私ですが、作ったフローを公開するのもよいなぁ、と思いついてGitHubにはるか昔に作っていたリポジトリをPublicにしました。
私の初コミットがこちらです。
今後も作ったものは、どこかで誰かが役立ててくれると嬉しいので、GitHubへ積極的に公開していこうと思います。
GitHub Actionsってなんだ?
GitHubの設定やら機能やらをいろいろと見て回っていると、GitHub Actionsというのを見つけました。
なんのことやらわかってなかったのですが、なるほどこういうのを使って CI/CD するのかしら?
ここに表示されている Simple workflow というのは、リポジトリにおいたPythonスクリプトを定期実行できるっぽい。ならば、README.mdファイルは単なるテキストファイルなので、自動更新できるんじゃない?
どうせだからQiita API使ってみる
前から気になっていたQiitaのAPIを使ってみることにしました。これまで書き溜めた自分の投稿のタイトルやURLは取得できるはずなので、Markdownのカタチに整形すれば良し。
Qiita APIのシークレットを取得する
設定>アプリケーション>個人用アクセストークン>新しいトークンを発行する
から簡単にトークン文字列を取得できました。
GitHubでシークレット管理は?
リポジトリ>Settings>Secrets and Variables>Actions から New repository secret をクリックして、QIITA_TOKENと名前をつけて保存しました。

ローカル用シークレット置き場とGit対策
作成するスクリプトをローカルで実行する場合にQiita APIのトークンが必要ですが、スクリプトは公開するので直書きするわけには行きません。
そこで、シークレットは .env ファイルに書いておいて、これを環境変数として参照させます。.envファイルやPython関連で増えたファイルは誤ってGitHubにPushされてしまわないように、.gitignoreファイルを作成して記述しておきます。
QITA_TOKEN=hogehogehogehoge
# Secrets
.env
# Python Virtual Environment
.venv/
# Python
# Secrets
.env
# Python Virtual Environment
.venv/
# Python
__pycache__/
*.pyc__pycache__/
*.pyc
インストールしたのは python-dotenv です。
pip install python-dotenv
Pythonコードで下記のように書くことで.env ファイル内の値で置換してくれます。下のようにしてtokenが表示されれば取得できていることがわかります。
from dotenv import load_dotenv
import os
load_dotenv()
token = os.getenv("QIITA_TOKEN")
print(token)
README.mdの準備
もともと書いていた簡単な紹介のあとに、プレイスホルダーを仕込んでいます。リポジトリ直下のほうです。
<!-- QIITA_START -->
<!-- QIITA_END -->
更新用スクリプト
こちらがREADME.md更新用のスクリプトになります。トークンを使ってQiitaのAPIエンドポイント /items を叩くことでjsonとして情報をとってきます。リファレンスはこちらです。
tags,title,urlなどの情報があるのことがわかります。

これを分類して、README.mdのプレイスホルダーを書き換えるように仕込んだのがこちらです。
https://github.com/daddydaddy/powerplatform/blob/main/scripts/update_readme.py
ローカルで実行してみると、README.md が書き換えられたことがわかります。

とりあえずGitHubへプッシュ
ここまでできたらGitHubへPushすると、Web上でQiita投稿のポートフォリオとして表示されるようになりました。
まとめ
- GitHub ActionsはPythonスクリプトを自動実行できる(っぽい)
- README.mdはテキストなのでPythonでの加工が容易
- APIのシークレットはローカルでは.envに。GitHubではシークレット管理専用の機能をつかう
- ローカル更新&Pushでとりあえずやりたいことできた
- あとはActionsでの自動実行を追加するべし
です。
GitHub Actionsでの自動更新については、次の記事でやってみます。




