PIPELINE SYSTEM REVIEW

AI自動コンテンツ生成パイプライン / 技術レビュー / 2026-05-07

01 / 今回の改善 達成状況
改善項目 内容 結果
トピックローテーション 固定値「AI_Monetization_Strategy」→ topics.txt(28種)から日付ベースで自動選択 ✅ 達成
リトライ機能 503エラー時に最大3回・30秒間隔で自動リトライ ✅ 達成
Python 3.14対応 sys.stdout.detach() → sys.stdout.reconfigure() に変更(サイレント失敗を解消) ✅ 達成
変更履歴管理 スクリプト変更の都度、変更ログを別途記録する運用を開始 ✅ 達成
02 / 今後の改善候補(プログラム観点)

推奨 プロンプトの外部ファイル化

現在 build_prompt() 関数内にプロンプト文が直書きされている。これを prompt_template.txt として分離すると、Pythonを触らずにプロンプトを改善できる。

_Shared_Scripts/ generate_ai_content.py ← ロジックのみ prompt_template.txt ← プロンプト文(外部ファイル) topics.txt ← トピック一覧(外部ファイル)

推奨 APIキーの環境変数化

現在 Auto-GenerateAndPush.ps1 内にAPIキーがフォールバック値として直書きされている。Windowsの「システム環境変数」に GEMINI_API_KEY を登録し、スクリプトから削除することでセキュリティが向上する。

任意 __pycache__ の .gitignore 追加

今回 __pycache__ フォルダが生成された。Gitに含める必要はないため .gitignore に追加推奨。

# .gitignore に追加 __pycache__/ *.pyc *.pyo

推奨 生成失敗時のSlack/メール通知

現在、3回リトライしても失敗した場合はログに記録されるのみ。タスクスケジューラ実行時は画面を見ていないため、失敗に気づけない。n8nやPowerShellのSend-MailMessageで通知を飛ばす仕組みがあると安心。

任意 ログの自動クリーンアップ

logsフォルダにRunLogが蓄積し続ける。30日以上前のファイルを自動削除するスクリプトをPS1に追加すると管理が楽になる。

03 / 今回発生した問題一覧

問題1 PowerShellスクリプトの構文エラー

症状:日本語トピック配列をPS1に直書きしたところ ParseException が発生

原因:PowerShell 5.1は日本語文字列を配列リテラルとして解釈する際にエンコーディング問題が発生しやすい

対処:トピック一覧を topics.txt として外部ファイル化し、Get-Content で読み込む構成に変更

再発防止:PS1スクリプトには日本語文字列を直書きしない。テキストデータは必ず外部ファイル参照とする

問題2 Pythonがサイレント失敗(Exit:0・ファイル未生成)

症状:python generate_ai_content.py を実行してもファイルが生成されず、ログも残らず、終了コードだけ0が返る

原因:Python 3.14で sys.stdout.detach() の挙動が変わり、モジュールレベルで stdout が無効化された。その後の logging.basicConfig がファイルへの書き込みに失敗し、すべての処理が静かに終了していた

対処:sys.stdout.detach() + codecs.getwriter() → sys.stdout.reconfigure(encoding='utf-8') に変更

再発防止:Pythonバージョンアップ時はstdout操作系の動作確認を必ず行う。2>&1 でstderrも捕捉したテストを自動化する

問題3 ログファイルのパーミッションエラー

症状:C:\test_log.txt への書き込みで Permission denied

原因:Cドライブ直下は管理者権限が必要。テスト用パスとして不適切だった

対処:ログファイルのパスを C:\Workspace\_Shared_Scripts\logs\ 配下に統一

再発防止:ログ・一時ファイルは必ず C:\Workspace\ 配下を使用する

問題4 Gemini API 503連続エラー

症状:深夜0時台にAPI呼び出しが 503 Service Unavailable で失敗

原因:Gemini APIの深夜時間帯の高負荷(一時的な混雑)

対処:リトライ機能(最大3回・30秒間隔)を実装。今回は2〜3回目で成功

再発防止:タスクスケジューラの実行時刻を08:00から変更する必要はないが、深夜の手動実行時は503が出やすいことを認識しておく

04 / システム構成と役割整理

このシステムが達成する目的:毎日ゼロ作業で「AIつまみぐい」ブランドのコンテンツを自動生成し、GitHubにバックアップし、Obsidianで管理できる状態にすること。生成されたコンテンツはX(集客)→ note(信頼形成)→ Coconala(販売)の導線として機能する。

TRIGGER 🕗 タスクスケジューラ 毎日 08:00 自動実行 ⌨ Shift+Alt+G 手動即時実行 CONTROLLER(PS1) Auto-GenerateAndPush.ps1 ・topics.txt から本日のトピック選択 ・Python呼び出し ・Git add / commit / push ・ログ管理 AI GENERATOR(Python) generate_ai_content.py ・Gemini API 呼び出し ・503時リトライ(最大3回) ・Markdown生成 → 00_Inbox保存 GEMINI API gemini-2.5-flash コンテンツ生成 LOCAL STORAGE(C:\Workspace\hancho-kb\) 00_Inbox/ Obsidian Vault 30_Resources/ GITHUB(fooueen/hancho-kb) Markdownバージョン管理・バックアップ topics.txt 28トピック 日付ベース選択 logs/ RunLog_*.txt 実行記録
コンポーネント 役割 ファイル場所
タスクスケジューラ 毎日08:00にPS1を自動起動するトリガー Windowsシステム設定
Auto-GenerateAndPush.ps1 全体の制御役。トピック選択→Python呼び出し→Git同期→ログ管理 C:\Workspace\_Shared_Scripts\
generate_ai_content.py Gemini APIを呼び出してMarkdownを生成し00_Inboxに保存する C:\Workspace\_Shared_Scripts\
topics.txt 28種のトピック一覧。日付ベースで毎日違うトピックが選ばれる C:\Workspace\_Shared_Scripts\
hancho-kb(ローカル) Obsidianで管理するナレッジベース。生成記事の保管・整理の場所 C:\Workspace\hancho-kb\
hancho-kb(GitHub) バージョン管理・バックアップ。コミット履歴で変更が追跡できる github.com/fooueen/hancho-kb
logs/ 毎回の実行結果を記録。エラー時のデバッグに使用 C:\Workspace\_Shared_Scripts\logs\
05 / 現状の構成でできること・できないこと

✅ できること

  • 毎日ゼロ作業でX用3行+note用解説記事を自動生成
  • 28トピックを日付ベースで自動ローテーション
  • 503エラー時に自動リトライ(最大3回)
  • 生成記事をObsidianで閲覧・整理
  • GitHubへの自動バックアップ・バージョン管理
  • 実行ログの自動保存(エラー追跡)
  • Shift+Alt+Gでの手動即時実行
  • トピックを topics.txt 編集だけで追加・変更

❌ できないこと(今後の課題)

  • 生成失敗時の自動通知(メール・Slack)
  • noteへの自動投稿(手動コピペが必要)
  • Bloggerへの自動投稿(未実装)
  • X(Twitter)への自動投稿(API要)
  • 複数リポジトリへの同時生成・投稿
  • 生成品質の自動評価・フィルタリング
  • プロンプトのA/Bテスト
06 / スクリプト変更履歴
日付 ファイル 変更内容
2026-05-03generate_ai_content.py初版作成(Gemini API・UTF-8設定)
2026-05-03generate_ai_content.pyプロンプトをX用3行+note用2セクション構成に変更
2026-05-03generate_ai_content.pyX用プロンプトを「現場感のある文体」に強化
2026-05-03generate_ai_content.pyYAMLフロントマターのコードブロック出力を修正
2026-05-07Auto-GenerateAndPush.ps1トピック固定→topics.txt日付ベースローテーションに変更
2026-05-07generate_ai_content.py503エラー対応:最大3回・30秒間隔のリトライ機能を追加
2026-05-07generate_ai_content.pyPython 3.14対応:sys.stdout.detach()→reconfigure()に変更(サイレント失敗を解消)
2026-05-07topics.txt新規作成:28種のトピック一覧(DX・副業・V-Consultant・自動化・マーケ系)
🏠 ホーム ◀ Vコンサル定義 QAトラブル ▶