Ubuntu 24.04 + Gemini APIでブログ自動投稿システムを構築する方法(AI生成)

本記事はGeminiとの議論などをもとに、内容をAIが書いています。

AIを活用して「記事生成 → WordPress下書き保存 → LINE通知」までを自動化し、効率的に収益化を目指すための構築ガイドです。

1. システム構成の概要

本システムは、以下のフローで動作します。

  1. 記事生成: Ubuntu上のプログラムがGemini APIを使用。
  2. 投稿管理: WordPress REST API経由で「下書き」として保存。
  3. 承認フロー: LINE Messaging APIで編集URLをスマホに通知。
  4. 最終公開: 人間が内容を確認・修正して公開(SEO・品質担保)。

2. サーバー環境のセットアップ (Ubuntu 24.04)

まずはSSHでサーバーにログインし、必要なパッケージと仮想環境を構築します。

Bash

# パッケージの更新
sudo apt update && sudo apt upgrade -y

# Python環境の構築
sudo apt install -y python3-pip python3-venv git

# プロジェクトディレクトリの作成と移動
cd ~
git clone https://github.com/openclaw/openclaw.git
cd openclaw

# 仮想環境の作成(わかりやすい名前で)
python3 -m venv openclaw-env
source openclaw-env/bin/activate

# 依存ライブラリのインストール
pip install requests python-dotenv google-generativeai

3. 環境設定 (.envファイル)

プロジェクトの直下に .env ファイルを作成し、各種APIキーと設定情報を集約します。

Plaintext

# Gemini API
GOOGLE_API_KEY=あなたのGemini_APIキー
MODEL_NAME=gemini-1.5-flash

# WordPress (ailab.yutofublog.com)
WP_URL=あなたのURL
WP_USER=あなたのユーザー名
WP_APP_PASS=24文字のアプリケーションパスワード

# LINE Messaging API
LINE_CHANNEL_ACCESS_TOKEN=あなたのアクセストークン
LINE_USER_ID=あなたのユーザーID (Uから始まるもの)

4. 自動連携スクリプト (bridge.py)

生成された記事をWordPressへ送り、LINEへ通知を飛ばす心臓部のコードです。

Python

import os
import requests
from requests.auth import HTTPBasicAuth
from dotenv import load_dotenv

load_dotenv()

def post_to_wp_and_notify(title, content):
    # 1. WordPressへ下書き投稿
    wp_payload = {
        "title": title,
        "content": content,
        "status": "draft"
    }
    res = requests.post(
        os.getenv("WP_URL"),
        auth=HTTPBasicAuth(os.getenv("WP_USER"), os.getenv("WP_APP_PASS")),
        json=wp_payload
    )

    # 2. 成功時にLINEへ編集URLを通知
    if res.status_code == 201:
        post_id = res.json()['id']
        edit_url = f"https://ailab.yutofublog.com/wp-admin/post.php?post={post_id}&action=edit"
        
        line_payload = {
            "to": os.getenv("LINE_USER_ID"),
            "messages": [{"type": "text", "text": f"📢 記事が作成されました!\n確認・公開してください:\n{edit_url}"}]
        }
        requests.post(
            "https://api.line.me/v2/bot/message/push",
            headers={"Authorization": f"Bearer {os.getenv('LINE_CHANNEL_ACCESS_TOKEN')}"},
            json=line_payload
        )
        print("Successfully posted to WP and notified via LINE.")

if __name__ == "__main__":
    # ここに生成ロジックからの出力を渡す
    post_to_wp_and_notify("テストタイトル", "テスト本文内容...")

5. 運用と自動化 (Cron)

毎日決まった時間に実行されるよう、cron に登録します。

Bash

crontab -e

以下の行を末尾に追加(毎日午前10時に実行する場合):

コード スニペット

0 10 * * * /home/yumikawa/openclaw/run_claw.sh

💡 アドバイザーからの「収益化」ポイント

  • Human-in-the-Loop: 完全に自動公開せず、一度LINEで自分の目に触れさせることで、低品質なAI記事が量産されるのを防ぎます。
  • スマホファースト: LINEに直接編集URLを送ることで、移動中などの隙間時間に「確認→公開」ができる機動力を確保しています。
  • コスト最適化: 有料のOpenAIではなく、無料枠の大きいGemini APIを採用することで、ランニングコストを抑えた運営が可能です。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です