Xの自動化
Page content
X(旧Twitter)の投稿を「AIエージェント」として自動化するには、単に決まった時間に投稿するだけでなく、「情報収集 → 内容の決定 → 文面作成 → 投稿」という自律的なサイクルを構築する必要があります。
以下に、実装に必要な準備、アーキテクチャ、そして具体的なコード例(Python)を解説します。
1. 必要なもの・準備
まず、Xの自動化には以下のハードル(主にAPI有料化)があります。
- X API Key (有料)
- Freeプラン: 書き込みのみ(月1,500件)。テスト用には使えますが、本格運用には制限がきついです。
- Basicプラン ($100/月): 一般的なBot開発にはこれが必要になることが多いです。
- 注意: APIを使わずブラウザ操作(Selenium等)で自動化するのは、Xの規約違反でアカウント凍結リスクが高いため推奨しません。
- OpenAI API Key (またはAnthropicなど)
- AIに投稿内容を考えさせるために必要です。
- 検索ツール (任意だが推奨)
- 最新ニュースを元に投稿させたい場合、AIはリアルタイム情報を知らないため、Tavily API や Google Search API などを持たせます。
2. AIエージェントの仕組み(ワークフロー)
単なるBotではなく「エージェント」にするためには、以下のフローをプログラムします。
- トリガー: 定期実行 (cron) や 特定のニュース速報など。
- 情報収集 (Observe): 特定のキーワードでWebニュースやトレンドを検索。
- 思考 (Think): 集めた情報を元に、「今のフォロワーにとって何が有益か?」をAIが考える。
- 生成 (Act): Xの140文字(日本語)制限に合わせて、ハッシュタグ付きで文章を作成。
- 実行: 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) を使うのが主流です。
- Trigger: RSSリーダー (TechCrunchなどを監視)
- Action: OpenAI (ChatGPT) に記事を要約させる
- Action: X (Twitter) に投稿する これならAPIキーの設定だけで、サーバー構築なしに自動化できます。
5. 運用上の重要注意点
XでのBot運用は規制が厳しくなっています。
- 自動化ラベルの表示: Xの規約により、Botアカウントはプロフィール設定で「自動化アカウント(Automated)」のラベルを表示する義務があります。これを怠るとBANされる可能性があります。
- API制限: Freeプランの場合、書き込み制限(24時間で50件など)が厳しいです。エラーハンドリング(投稿失敗時にリトライを待機する処理)を必ず入れてください。
- 同じ内容の連投禁止: AIが偶然似たような文章を生成してしまうと、スパム判定されることがあります。「前回の投稿内容と被らないようにして」という指示をプロンプトに含めるのがコツです。
まずは、Pythonスクリプトで**「1日1回、特定のテーマでつぶやく」**ところから始めてみることをお勧めします。