【保存版】維持費0円!Gemini 2.5 × GASで構築する「ブログ全自動執筆システム」の作り方(コピペOK)

サイドFIREの戦略と武器

⚠️ 当設定が可能なのは、Conoha WING + WordPressで  ブログを書かれている方向けです。

こんにちは、あなぶです。

最近、私のブログ更新頻度が上がっていることに気づいた方もいるかもしれません。 「激務の部長が、いつ書いてるの?」 そう不思議に思うでしょう。

実は、裏で「あるシステム」を動かしています。 GoogleのAI「Gemini」とプログラミング言語「GAS」を組み合わせた、ブログ全自動執筆システムです。
(IT音痴ですが、一応、IT企業で働いているので・・・四苦八苦して頑張りました。)

しかし、誤解しないでください。 私は「AIにブログを書かせている」わけではありません。

「毎日ブログを更新したい。でも、本業が忙しくて時間がない…」 これは、副業ブロガー全員の悩みではないでしょうか。

今回は、私が自作した「ランニングコスト完全0円」で動き続けるブログ執筆支援システムの作り方を、コード付きで無料公開します。

使うのは、Googleが提供する最強の無料ツール(GASとGemini)だけ。 有料ツールは一切使いません。


なぜ「全自動」なのに「手直し」するのか?

世の中には「AIで記事を量産して稼ごう!」という情報が溢れています。 しかし、そんな「魂のない記事」を誰が読みたいでしょうか?

私が構築したシステムは、楽をするためではありません。 「最も重要な『魂の注入』に時間を使うため」にあります。

⚠️ 【重要】着手する前に必ず読んでください

X(旧Twitter)などのSNS界隈では、現在このような情報が溢れています。

「生成AIに大量の記事を書かせたブログが、GoogleからBAN(検索圏外飛ばし)された」

はっきり言います。これは事実です。 AIが出力した文章を、人間が読みもせずそのままコピペして公開した記事は、「価値のないコンテンツ」としてペナルティを受けます。

今回紹介するシステムは、あくまで「優秀な部下(AI)に『下書き』を作らせるツール」です。

  • 間違い: AIが書いたものをそのまま公開して楽をする。
  • ⭕️ 正解: AIが作った骨組みに、人間が「魂(体験談・感情)」を入れて完成させる。

このシステムは、ゼロから文章を考える苦痛をなくし、あなたが「魂を入れる時間」を確保するためのものです。 この「ITマネージャーとしての流儀」を守れる方のみ、以下の手順に進んでください。


全体の仕組み:これが「0円システム」の全貌だ

  1. 指令室: Googleスプレッドシート(キーワードを指示)
  2. エンジン: Google Apps Script (GAS)
  3. 脳みそ: Gemini 2.5 Flash (Googleの最新・爆速無料モデル)
  4. 出力先: WordPress (下書きとして保存)

あなたがやることは、スプレッドシートに「キーワード」を入れておくだけ。

システムが自動で記事構成を考え、執筆し、WordPressに「下書き」として保存してくれます。
その下書きに最終的にあなたの「魂」を込めてください!


手順1:必要な「3つの鍵」を揃える

まずは外部ツールと連携するための認証情報を準備します。

1. Gemini APIキーの取得

Googleの高性能AIを無料で使うための鍵です。

  1. Google AI Studio にアクセスします。
  2. **「Create API key」**をクリックします。
  3. 発行されたキー(AIza...から始まる文字列)をコピーしてメモ帳に保存します。
    (一部だけ、青字のキーが出ていると思いますのでそれをクリックしてください)

2. WordPress アプリケーションパスワード

普段のログインパスワードとは別に、「システム連携専用のパスワード」を発行します。

(※これを使うことで、メインのパスワードを守りながら安全に投稿できます)

  1. WordPress管理画面の 「ユーザー」→「プロフィール」 へ移動します。
  2. 一番下までスクロールし、「アプリケーションパスワード」 欄を探します。
  3. 名前に「GAS用」などと入力し、「新しいアプリケーションパスワードを追加」 を押します。
  4. 表示されたパスワード(xxxx xxxx xxxx xxxx)をコピーして保存します。
    • ※この画面を閉じると二度と見れないので注意!

3. あなたのブログURL

自分のブログのトップページのURL(例: https://example.com)をメモしておきます。
※WordPressのトップページではありません。


手順2:指令室(スプレッドシート)の作成

Googleスプレッドシートを新規作成し、システムが読み込むための「台帳」を作ります。

1行目に以下の見出しを正確に入力してください。


手順3:プログラムの実装(コピペでOK)

いよいよシステムの中身を作ります。プログラミングの知識は不要です。

  1. スプレッドシートのメニューから 「拡張機能」→「Apps Script」 をクリックします。
  2. 開いた画面のコード(function myFunction...)をすべて消します。
                  ↓
  3. 以下のコードをまるごとコピーして貼り付け、保存ボタンを押してください。
// ==========================================
// 【標準版】ブログ執筆支援システム
// Powered by Gemini 2.5 Flash & GAS
// ==========================================

// --- 設定値の読み込み(手順4で設定します) ---
const GEMINI_API_KEY = PropertiesService.getScriptProperties().getProperty('GEMINI_KEY');
const WP_USERNAME = PropertiesService.getScriptProperties().getProperty('WP_USER');
const WP_APP_PASSWORD = PropertiesService.getScriptProperties().getProperty('WP_PASS');
// あなたのブログURL(https://... 末尾のスラッシュなし)
const WP_SITE_URL = 'https://あなたのブログURL.com'; 


// --- メイン処理(ここを実行します) ---
function main() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();
  
  // 2行目から順にチェック
  for (let i = 2; i <= lastRow; i++) {
    const keyword = sheet.getRange(i, 1).getValue(); // A列:キーワード
    const status = sheet.getRange(i, 4).getValue();  // D列:ステータス
    
    // キーワードがあり、かつステータスが空欄なら実行
    if (keyword && status === '') {
      try {
        console.log(`執筆開始: ${keyword}`);
        sheet.getRange(i, 4).setValue('下書き作成中...');
        
        // 1. Geminiに記事構成を作らせる
        const articleData = callGemini(keyword);
        
        // 2. スプレッドシートにバックアップ
        sheet.getRange(i, 2).setValue(articleData.title);
        sheet.getRange(i, 3).setValue(articleData.content);
        
        // 3. WordPressに「下書き」として送信
        postToWordPress(articleData.title, articleData.content);
        
        sheet.getRange(i, 4).setValue('完了');
        console.log(`✅ 下書き保存完了: ${keyword}`);
        
      } catch (e) {
        console.error(e);
        sheet.getRange(i, 4).setValue('エラー: ' + e.message);
      }
    }
  }
}

// --- Gemini API呼び出し ---
function callGemini(keyword) {
  const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${GEMINI_API_KEY}`;
  
  // AIへの指示書(プロンプト)
  const prompt = `
    あなたはプロのWebライターです。以下のキーワードでブログ記事の「構成案と下書き」を作成してください。
    
    キーワード: 「${keyword}」
    
    【重要ルール】
    1. 読者は40代のサラリーマンです。共感できる悩みを提示してください。
    2. 見出し(H2, H3)を適切に使い、読みやすいHTML形式にしてください。
    3. あとで人間が体験談を追記するため、適度な余白や「(ここに体験談を入れる)」といったプレースホルダーを含めてください。
    
    【出力形式】
    JSON形式 {"title": "記事タイトル", "content": "<h1>記事タイトル</h1>...本文HTML..."} のみを出力してください。
  `;

  const payload = {
    "contents": [{ "parts": [{ "text": prompt }] }],
    "generationConfig": { "response_mime_type": "application/json" }
  };

  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload),
    'muteHttpExceptions': true
  };

  const response = UrlFetchApp.fetch(url, options);
  const json = JSON.parse(response.getContentText());
  return JSON.parse(json.candidates[0].content.parts[0].text);
}

// --- WordPress投稿機能(WAF対策済み) ---
function postToWordPress(title, content) {
  const endPoint = `${WP_SITE_URL}/wp-json/wp/v2/posts`;
  const auth = Utilities.base64Encode(`${WP_USERNAME}:${WP_APP_PASSWORD}`);
  
  const payload = {
    'title': title,
    'content': content,
    'status': 'draft' // 必ず「下書き」で保存
  };

  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'headers': {
      'Authorization': `Basic ${auth}`,
      'User-Agent': 'Mozilla/5.0 (compatible; Google-Apps-Script)' // サーバーのブロック回避用
    },
    'payload': JSON.stringify(payload),
    'muteHttpExceptions': true
  };

  const response = UrlFetchApp.fetch(endPoint, options);
  const json = JSON.parse(response.getContentText());
  
  if (!json.id) throw new Error('投稿エラー: ' + JSON.stringify(json));
}

手順4-1:【重要】セキュリティ設定(鍵をかける)

コードの中にパスワードを直書きするのは危険です。セキュリティは万全にしておきましょう。

  1. GAS画面の左側にある 「歯車アイコン(プロジェクトの設定)」 をクリックします。
  2. 一番下までスクロールし、「スクリプトプロパティ」「スクリプトプロパティを追加」 をクリックします。
  3. 以下の3つを登録します。(名前は正確に!)
プロパティ名(左側)値(右側)
GEMINI_KEY手順1で取得したAPIキー
WP_USERWordPressのログインユーザー名
WP_PASS手順1で取得したアプリケーションパスワード

  1. 最後に、コード内の const WP_SITE_URL = 'https://あなたのブログURL.com'; の部分だけ、ご自身のURLに書き換えてください。

手順4-2:ConoHa WING(サーバー)側の対策

ここが一番のつまずきポイントです。 ConoHa WINGなどの高機能サーバーには、外部からのプログラム操作を「攻撃」とみなしてブロックする強力なセキュリティ(WAF)が備わっています。

これを何もせずに実行すると、「403 Forbidden」 というエラーが出ます。 かといって、セキュリティを全OFFにするのは危険です。 「ガードマン(WAF)に『このロボットだけは通して』と伝える」 設定を行います。

対策REST API制限の解除

ConoHaの「WordPressセキュリティ」機能には、海外サーバー(Googleなど)からのAPI接続を一律で拒否する設定があります。

  1. サイト管理 > サイトセキュリティ > WordPressセキュリティ を開く。
  2. 「REST API」 利用設定のみ、エラーが出る場合は 「OFF」 にする

手順5:動かしてみよう

準備完了です!実際に動かしてみましょう。

  1. スプレッドシートのA2セルに、テスト用キーワード(例:「NISA」など)を入力します。
  2. GASの画面に戻り、上部のプルダウンが 「main」 になっていることを確認して 「実行」 ボタンを押します。
    • ※初回のみ「権限の承認」画面が出ます。「権限を確認」→「詳細」→「(安全ではないページ)に移動」→「Google許可画面でOK」で許可してください。
  3. 画面下のログに ✅ 下書き保存完了 と出れば成功です!
    ※今回は「NISA」と入力しました。

作成したスプレッドシートには以下のような状態になっていて、ステータスに「完了」が入っていればOK。

最後に、WordPressの管理画面を見てみてください。「投稿一覧」に、AIが書いた記事の下書きが入っているはずです。

実際のブログ


最後の仕上げ:「魂」を入れるのはあなたです

システムが動いたら、あなたの仕事はここからです。

生成された下書きを読み、以下の「魂の注入作業」を行ってください。

  1. リード文を自分の言葉に変える。
  2. 「AIが書いた一般論」の合間に、「私の失敗談」や「具体的なエピソード」を追記する。
  3. 記事のトーンを自分らしく調整する。

面倒な構成作りは部下(AI)に任せて、私たちは「読者を楽しませる」ことに集中しましょう。


🚀 さらに「上」を目指す方へ(完全版のご案内)

今回公開したのは、キーワードを手動で入力する「標準版」です。

これだけでも執筆時間は半分以下になりますが、私はさらに「ネタ探し」すら部下に任せています。

  • Googleニュースから「トレンド」を自動収集
  • トレンドから「自分のブログに合うネタ」を自動選定
  • 寝ている間に勝手に記事作成(完全放置)

この機能を搭載した「準完全版システム(Pro)」のコードと構築マニュアルは、私のNoteで公開しています。

「時間を金で買いたい」という多忙な方は、ぜひチェックしてみてください。

[👉 Note:【コピペOK】寝ている間にブログが完成。
 トレンド収集×全自動執筆システム構築マニュアル(https://note.com/good_gnu197/n/n6f214f2882f9)]

コメント

タイトルとURLをコピーしました