Xの自動化

Page content

X(旧Twitter)の投稿を「AIエージェント」として自動化するには、単に決まった時間に投稿するだけでなく、「情報収集 → 内容の決定 → 文面作成 → 投稿」という自律的なサイクルを構築する必要があります。

以下に、実装に必要な準備、アーキテクチャ、そして具体的なコード例(Python)を解説します。


1. 必要なもの・準備

まず、Xの自動化には以下のハードル(主にAPI有料化)があります。

  1. X API Key (有料)
    • Freeプラン: 書き込みのみ(月1,500件)。テスト用には使えますが、本格運用には制限がきついです。
    • Basicプラン ($100/月): 一般的なBot開発にはこれが必要になることが多いです。
    • 注意: APIを使わずブラウザ操作(Selenium等)で自動化するのは、Xの規約違反でアカウント凍結リスクが高いため推奨しません。
  2. OpenAI API Key (またはAnthropicなど)
    • AIに投稿内容を考えさせるために必要です。
  3. 検索ツール (任意だが推奨)
    • 最新ニュースを元に投稿させたい場合、AIはリアルタイム情報を知らないため、Tavily APIGoogle Search API などを持たせます。

2. AIエージェントの仕組み(ワークフロー)

単なるBotではなく「エージェント」にするためには、以下のフローをプログラムします。

  1. トリガー: 定期実行 (cron) や 特定のニュース速報など。
  2. 情報収集 (Observe): 特定のキーワードでWebニュースやトレンドを検索。
  3. 思考 (Think): 集めた情報を元に、「今のフォロワーにとって何が有益か?」をAIが考える。
  4. 生成 (Act): Xの140文字(日本語)制限に合わせて、ハッシュタグ付きで文章を作成。
  5. 実行: X API経由で投稿。

3. 実装例 (Python)

ここでは、**「最新のAIニュースを検索し、要約して感想付きでポストするエージェント」**の最小構成を紹介します。

必要なライブラリ:

pip install tweepy openai tavily-python python-dotenv

コード (agent.py):

import os
import tweepy
from openai import OpenAI
from tavily import TavilyClient
from dotenv import load_dotenv

# .envファイルからキーを読み込む
load_dotenv()

# 1. 各クライアントの初期化
# X (Twitter) API v2 Client
x_client = tweepy.Client(
    consumer_key=os.getenv("X_CONSUMER_KEY"),
    consumer_secret=os.getenv("X_CONSUMER_SECRET"),
    access_token=os.getenv("X_ACCESS_TOKEN"),
    access_token_secret=os.getenv("X_ACCESS_TOKEN_SECRET")
)

# OpenAI & Tavily (検索用)
openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
tavily_client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY"))

def run_agent_post(topic="生成AI 最新トレンド"):
    print(f"🕵️ '{topic}' について調査中...")
    
    # 2. Web検索 (Tavilyを使って最新情報を取得)
    search_result = tavily_client.search(query=topic, search_depth="basic", max_results=3)
    context_text = "\n".join([f"- {res['content']}" for res in search_result['results']])

    print("🧠 投稿内容を生成中...")
    
    # 3. AIによる投稿文生成
    # プロンプトエンジニアリング:文字数制限とペルソナを設定
    prompt = f"""
    以下のニュース情報を元に、X(Twitter)の投稿を作成してください。
    
    【ニュース情報】
    {context_text}
    
    【制約条件】
    - 日本語で130文字以内(厳守)。
    - 専門家のような少し辛口だが有益な視点を入れること。
    - 最後に適切なハッシュタグを2つだけつけること。
    - URLは含めないでください。
    """

    response = openai_client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "あなたはSNSマーケティングとAI技術の専門家です。"},
            {"role": "user", "content": prompt}
        ]
    )
    
    tweet_text = response.choices[0].message.content.strip()
    print(f"📝 生成されたツイート:\n{tweet_text}")

    # 4. Xへ投稿
    try:
        x_client.create_tweet(text=tweet_text)
        print("✅ 投稿成功!")
    except Exception as e:
        print(f"❌ 投稿エラー: {e}")

if __name__ == "__main__":
    run_agent_post()

4. さらに高度化するアイデア

実装のレベルを上げると、より人間らしい運用が可能です。

A. 自動リプライ(LangChainなどの利用)

自分の投稿についたリプライを取得し、それに対してAIが返信する機能です。「アンチコメントは無視する」「質問には丁寧に返す」といった条件分岐をAIに指示します。

B. データベースで記憶を持たせる

過去に自分がどんな投稿をしたか(Vector DBなど)、どの投稿が「いいね」を多くもらえたか(Analytics API)をAIに教えることで、「この前はこれについて話したから、今日は違う視点で話そう」という文脈を持った運用が可能になります。

C. No-Codeツールを使う (Make / Zapier)

コードを書くのが大変な場合、Make (旧Integromat) を使うのが主流です。

  1. Trigger: RSSリーダー (TechCrunchなどを監視)
  2. Action: OpenAI (ChatGPT) に記事を要約させる
  3. Action: X (Twitter) に投稿する これならAPIキーの設定だけで、サーバー構築なしに自動化できます。

5. 運用上の重要注意点

XでのBot運用は規制が厳しくなっています。

  1. 自動化ラベルの表示: Xの規約により、Botアカウントはプロフィール設定で「自動化アカウント(Automated)」のラベルを表示する義務があります。これを怠るとBANされる可能性があります。
  2. API制限: Freeプランの場合、書き込み制限(24時間で50件など)が厳しいです。エラーハンドリング(投稿失敗時にリトライを待機する処理)を必ず入れてください。
  3. 同じ内容の連投禁止: AIが偶然似たような文章を生成してしまうと、スパム判定されることがあります。「前回の投稿内容と被らないようにして」という指示をプロンプトに含めるのがコツです。

まずは、Pythonスクリプトで**「1日1回、特定のテーマでつぶやく」**ところから始めてみることをお勧めします。