完成後は、GitHub Actionsが記事のMarkdownを読み取り、X/LinkedIn向けの短い投稿文を下書きとして生成します。結果はPull RequestのコメントとArtifactsに保存され、人が最終チェックして投稿できます。
この記事では、準備・安全なAPIキーの扱い・Codexへの依頼・動作確認・直し方まで、半年後も迷わない手順で案内します。
この回のゴール
- できること:ブログ更新からSNS下書きを自動生成し、PRで確認して公開準備できる。
- 用意するもの:GitHubアカウント、VS Code、OpenAI APIキー、Python3.x。
- 大切な約束:APIキーはSecretsと.envで保護し、投稿は人の手で最終確認する。
最初に知っておきたい用語
- GitHub Actions:GitHub上で自動で動く作業の流れ(ワークフロー)。決まった条件でボタンを押したように仕事を進めます。
- ワークフロー(workflow):いつ、何を、どう動かすかを書いた設計図。料理レシピのような指示書です。
- Secrets:APIキーなど秘密情報を金庫のように隠して保存する仕組み。中身は他人から見えません。
- Artifacts:実行結果のファイルを持ち帰る引き出し。後でダウンロードして中身を確認できます。
- Pull Request(PR):変更の提案書。意見や確認をしやすくする掲示板のような場所です。
- OpenAI API:文章を作るAIに仕事を頼むための入り口。鍵(APIキー)で本人確認します。
- OpenAI Codex:VS Codeでコード作りを手伝うAIコーディングエージェント。指示すると必要なファイルを作ってくれます。
- Markdown:ブログ記事の本文によく使う書き方。見出しやリンクを簡単に表せます。
1. この記事でできること
ブログの更新から、XやLinkedIn向けのSNS投稿下書きを自動で作ります。
イメージは「ベルトコンベアで並ぶ商品」。記事の要点が乗り、SNS用の短文に加工され、PRで人が検品してから外へ出ます。
最初は下書きまでに限定するので、誤投稿の心配がありません。
2. 完成イメージ

- GitHub Actionsが記事Markdownを読み取り、要点を抽出。
- OpenAI APIを使って、X/LinkedIn向けの文案と推奨ハッシュタグを作成。
- 生成結果はArtifactsに保存し、PRコメントにも貼り付け。
- 人がPR画面で確認・修正し、OKならSNSへ手動投稿。
3. 最初に知っておきたいこと
自動は下書きまで。最後の「投稿ボタン」は人が押します。
これは、自動販売機にお金を入れる前に商品を手に取って確認するような安全策です。
パイプラインはベルトコンベアのたとえが分かりやすいです。原料(記事)を置くと、機械(GitHub Actions)が必要な形(SNS下書き)にして出口(Artifacts/PRコメント)へ並べます。
料金やAPIの仕様は変わることがあります。最新の条件は、GitHub Actionsの公式ドキュメントとOpenAI APIのクイックスタートを必ず確認してください。リンクは記事末の出典にあります。
4. 対象読者

ブログ運営者、広報担当、個人ニュースレター発行者。
PythonやGitHubを少し触ったことがある人なら、中学生でも大丈夫です。前回の要約パイプラインを済ませている人はスムーズです。未実施なら、シリーズ第1回を先に読むと理解が速くなります。
AIを読む人から使う人へ:中学生にも分かるAIニュース自動収集・要約パイプラインを作る #1
5. 必要なものと入れ方
ここでは、使う道具を一つずつ「これは何?」「用意するもの」「入れ方・開き方」「最初の設定」「できたか確認」で説明します。道具は台所の調理器具のように、役割が分かると安心して使えます。
VS Code
- これは何?:ノートにきれいに書ける下じきのような編集アプリ。ファイルを見やすく整理できます。
- 用意するもの:パソコン、インターネット、Microsoftアカウント(任意)。
- 入れ方・開き方:公式サイトからダウンロードしてインストール。アプリを起動する。
- 最初の設定:日本語表示にする、作業用のフォルダを用意して開く。
- できたか確認:「Welcome」画面や左側のアイコン(エクスプローラーなど)が見える。
OpenAI Codex(VS Code拡張)
- これは何?:頼れる家庭教師。やりたいことを伝えると、必要なファイルや設定を一式作ってくれます。
- 用意するもの:OpenAIのアカウント、ChatGPTアカウントまたはOpenAI APIキー。
- 入れ方・開き方:VS Code左の四角アイコン「拡張機能」を開き、検索欄に「Codex」と入力。OpenAIのCodex拡張を選び「インストール」を押す。インストール後、左のサイドバーにCodexのアイコンが出たらクリックし、チャット欄を開く。
- 最初の設定:拡張の案内に従ってサインイン。APIキー使用時は拡張の「Sign in with API Key」などの案内に従って登録。
- できたか確認:Codexのチャット欄に入力ボックスが見え、「New Chat」などのボタンが表示される。
GitHub アカウント
- これは何?:作品を置く本棚。複数人で編集やレビューができます。
- 用意するもの:メールアドレス、パスワード。
- 入れ方・開き方:公式サイトでサインアップ後、ブラウザで自分のリポジトリページを開く。
- 最初の設定:新しいリポジトリ(公開/非公開は任意)を作る。
- できたか確認:リポジトリ名と「Actions」タブが見える。
Python 3.x
- これは何?:家電を動かすリモコン。文章を読み書きし、APIと会話する役目です。
- 用意するもの:パソコン、インターネット。
- 入れ方・開き方:公式サイトからPython3系をインストール。
- 最初の設定:VS Codeの右下に「Python interpreter」が選べることを確認。
- できたか確認:VS Codeで.pyファイルを開くと右上に「Run Python File」ボタンが見える。
(任意)GitHub CLI
- これは何?:郵便局の窓口のショートカット。PRの作成などを素早く呼び出せます。
- 用意するもの:GitHubアカウント。
- 入れ方・開き方:公式の案内に従ってインストール。
- 最初の設定:gh auth login でGitHubに接続(コマンド入力はCodexに任せます)。
- できたか確認:GitHubと連携でき、リポジトリ情報が取得できる。
6. エージェントと作るものの全体像

入力は記事のMarkdownファイルまたは要約テキスト。
処理はPythonスクリプトがOpenAI APIに要点抽出と文案生成を依頼し、GitHub Actionsのワークフローがそれを呼び出して成果を保存します。
出力はArtifactsのテキストファイルと、PRコメントに貼られた下書き。
例えるなら、原稿(入力)→編集者AI(処理)→校了ゲラ(出力)という流れです。
7. 手順1: ツールを準備する
目的と全体の流れ
VS CodeにCodex拡張を入れ、GitHubで作業用リポジトリを用意します。ここまでで、エージェントに仕事を頼める状態になります。
読者が行う画面操作
- VS Codeを開き、左の拡張機能アイコンを押す。
- 検索欄に「Codex」と入れて、OpenAIのCodex拡張をインストール。
- Codexのチャット欄を開き、サインインを完了。
- ブラウザでGitHubを開き、新しいリポジトリを作る。
- VS Codeでそのリポジトリのフォルダを開く。
成功の見分け方
- Codexのチャットに文字が入力できる。
- VS Codeの左上に、開いているリポジトリ名が見える。
8. 手順2: APIキーを安全に用意する

目的と考え方
APIキーは家の鍵。見える場所に置かないことが最重要です。ローカルでは.envに入れ、クラウドではGitHub Secretsに保存します。
読者が行う画面操作
- OpenAIの管理画面でAPIキーを発行。
- GitHubの対象リポジトリで「Settings」→「Secrets and variables」→「Actions」→「New repository secret」。
- 名前に「OPENAI_API_KEY」、値に発行したキーを貼り「Add secret」。
成功の見分け方
- Secrets一覧に「OPENAI_API_KEY」が表示される(値は二度と見えません)。
9. 手順3: エージェントにアプリを作ってもらう
目的
PythonスクリプトとGitHub ActionsのYAML、PRコメント投稿の仕組み、Artifacts保存をCodexに作ってもらいます。
このボックスをコピーして、VS Code内のCodexチャットに送ります
Codexに送るプロンプト
目的:ブログ記事(Markdown)の要点を抽出し、X/LinkedIn向けのSNS下書きを自動生成してArtifactsとPRコメントに出す最小構成を作ってください。読者はコードを直接入力しません。
要件:
- 言語はPython。OpenAI APIを使う。公式のQuickstartのやり方に沿って認証し、将来の変更に備えてモデル名や温度などは設定ファイル化してください。
- APIキーはローカルでは.env、GitHub Actionsではsecrets.OPENAI_API_KEYを使用。キーの実値をREADMEやログに出さないガードを入れてください。
- 入力は ./content/post.md(例のMarkdown)とし、見出し・本文から要点(3〜5点)を抽出してから、X(最大280字、短縮URL想定)、LinkedIn(300〜400字、丁寧口調)向けの文案を日本語で生成。推奨ハッシュタグ3〜5個も含める。トーンは「明るく具体的、誇張しない」。
- 生成結果を ./outputs 以下に text と json の2形式で保存。jsonは {summary_points:[], x_draft:"", linkedin_draft:"", hashtags:[]} を基本形に。
- GitHub Actionsのworkflowを .github/workflows/sns_draft.yml に作成。トリガーは workflow_dispatch と pull_request(post.md 変更時)。
- 実行ステップ:checkout → Pythonセットアップ → 依存関係インストール → スクリプト実行 → outputsをArtifactsとしてアップロード。
- PRがある場合は、PRコメントに整形して下書きを投稿。X/LinkedInそれぞれ見出しを付け、コードブロックでドラフト本文を表示。
- ログにはキーや個人情報が出ないようマスキング。エラー時は失敗理由を簡潔に表示。
- README.mdに「使い方」「Secretsの設定」「注意(下書きのみで自動投稿しない)」を明記。
動作確認:
- post.md にダミー記事を置いてワークフローを手動実行(workflow_dispatch)。
- 実行後、Artifactsにファイルがあること、PRコメントに下書きが付くことを確認する手順を書いてください。
不明点があれば、作業前に質問してください。部分ごとにコミットし、重要ファイルを一覧で示してください。
Codexが作るものと確認ポイント
- Pythonスクリプト(OpenAI API呼び出し、要点抽出、文案生成)。
- sns_draft.yml(手動実行とPRトリガー、ArtifactsとPRコメント)。
- outputs配下の成果物とREADMEの使い方。
10. 手順4: 動かして確認する

目的
ワークフローを動かし、ArtifactsとPRコメントで結果を見ること。
読者が行う画面操作
- GitHubの「Actions」タブを開く。
- sns_draft を選び「Run workflow」を押す(workflow_dispatch)。
- 完了後、実行画面の右側に出るArtifactsリンクから成果物をダウンロード。
- PRがある場合は「Pull requests」タブで対象PRを開き、コメントに下書きがあるか確認。
成功の見分け方
- Artifactsにtext/jsonの2ファイルがあり、内容が読める。
- PRコメントにX/LinkedInの下書きが整形表示されている。
11. 手順5: エージェントと直す
目的
トーン、文字数、ハッシュタグなどを微調整します。料理の味見に似ています。
読者が行う画面操作とCodexへの依頼
- VS CodeのCodexチャットで、生成のトーンや長さの希望を具体的に伝えて修正依頼。
- 例:「LinkedInは300字前後で、専門用語に短い説明を添えて」「Xは冒頭に要点、末尾に2つだけハッシュタグ」。
- Codexが変更したスクリプトとYAMLをプルリクに反映してもらう。
成功の見分け方
- 新しいArtifactsに希望通りの文体・長さで出力される。
- ログにエラーがなく、Secretsは漏れていない。
12. よくあるエラー

Secrets未設定で失敗
- 画面で見えること:「OPENAI_API_KEY not found」や認証エラー。
- よくある原因:リポジトリのSecretsを未登録。
- 最初に確認する場所:Settings → Secrets and variables → Actions の一覧。
- エージェントに送る質問:「OPENAI_API_KEYが見つからず失敗。Secretsの参照名とYAML内の記述を確認して直して。」
YAMLのインデント不正
- 画面で見えること:「YAML parse error」やジョブが開始されない。
- よくある原因:スペース数のズレ。
- 最初に確認する場所:.github/workflows/sns_draft.yml の該当行。
- エージェントに送る質問:「YAMLのインデントエラー。該当行を直して、構文チェックを通して。」
APIレート・モデル指定エラー
- 画面で見えること:「rate limit」や「model not found」。
- よくある原因:短時間に呼び過ぎ、または利用可能でないモデル名。
- 最初に確認する場所:スクリプトのモデル名とリトライ設定、OpenAIダッシュボード。
- エージェントに送る質問:「利用可能なモデルに変更し、指数バックオフで再試行を実装して。」
ファイルパス不一致
- 画面で見えること:「No such file or directory: content/post.md」。
- よくある原因:ファイル配置ミスやワークフローパスの監視設定違い。
- 最初に確認する場所:content/post.md の存在、YAMLのon.pull_request.paths。
- エージェントに送る質問:「監視パスと実際のファイル名がずれている。正しく動くよう修正して。」
13. 次に試すこと
- カレンダー実行(cron)で定時に下書き作成。
- 複数SNS向けのテンプレート分岐(Threads、note、Facebookなど)。
- 承認ステップの厳格化(レビュー必須・2名承認など)。
APIキーの安全な扱いをさらに学びたい人は、関連記事も参考に。
AIを読む人から使う人へ:はじめてのAIアプリ作り #1:APIキーを安全に扱う基本
14. まとめ

「下書きだけ自動」は、安全で効果的な一歩目です。
小さく始め、PRで人がチェックし、Artifactsで履歴を残す。これなら安心して続けられます。
次は、同じシリーズの第1回で作った要約パイプラインとつなぎ、ニュース更新からSNS下書きまでを一本化していきましょう。
出典・参考
- GitHub Actions documentation:概念・実行環境・Secrets・ワークフロー管理。
- GitHub Actions workflow syntax:workflow_dispatch、cron、jobs/steps、secretsの参照など。
- OpenAI API Quickstart:セットアップ、認証、基本的なリクエスト方法。