🧭 あなたに最適なVPSを30秒で無料診断 診断する →

【2026年版】X (Twitter) の自動リプライ&投稿AI BotをVPSで運用してフォロワーを増やす方法

読む前に30秒だけ。用途・予算を選ぶだけで、あなたに最適なVPSがわかります(無料・登録不要) 無料診断 →

【2026年版】X (Twitter) の自動リプライ&投稿AI BotをVPSで運用してフォロワーを増やす方法


筆者の結論(先に読んでください)

VPSは月880円〜の2GBプランで十分です。GPUは不要。

API経由でOpenAIを叩くだけなら、VPSに必要なのはCPUとメモリのみ。Ollama(ローカルLLM)を使いたいなら8GBに上げればいい。それだけの話です。

「X自動化にGPU付きVPSが必要」と書いてある記事を見たことがあるかもしれないけど、はっきり言うとあれはアフィリエイト報酬が高いプランを売りたいだけの可能性が高い。このボットの処理はAPI呼び出しとcron実行だけで、GPU演算は一切発生しません。

あと、「ローカルPCで動かせばいいのでは」という意見もあると思うけど、自分はVPS派です。PCを立ち上げっぱなしにするのが精神的に気になるし、何かあったときにリモートデスクトップで入らないといけないから、全然手放しにならない。月880円で24時間VPSに任せた方がメンタルコストが圧倒的に低い。

VPS選びの結論だけ先に書くと:

  • OpenAI API使用 → ConoHa VPS 2GBプラン(月880円)で十分
  • Ollama(ローカルLLM)使用 → 8GBプランが必要(月2,000円台)
  • 「とにかく試してから決めたい」 → KAGOYA CLOUD VPSの14日無料トライアルがおすすめ(週末2回入るので確認には十分)

では本編に入ります。


X (Twitter) 自動化で差をつける時代

フォロワーを増やすにはコンスタントな投稿と反応速度が重要ですが、毎日手動でツイートし続けるのは現実的ではありません。2026年現在、X API v2 + AI(LLM)を組み合わせた自動投稿・自動リプライシステムを持つアカウントが急増しています。

この記事では、VPS上にPythonボットを構築し、AIが文脈を読んだ自然なリプライを自動生成・投稿する仕組みを解説します。スパム的な運用ではなく、フォロワーにとって価値ある応答を自動化することが目的です。

自分が実際に試行錯誤した経験をもとに、「これはいる・これはいらない」を正直に書いていきます。

システム構成

[X APIからメンション/キーワードを取得]
        ↓
[tweepy: 投稿・リプライの送受信]
        ↓
[Ollama(Llama 3 / Mistral)で文章生成]
        ↓
[レートリミット管理(X API制限を守る)]
        ↓
[VPS上のcronで定期実行]
        ↓
[Slack通知(投稿ログ確認用)]

シンプルです。重い処理は何もない。だからVPSは安いプランで十分と言っています。

X API v2 のレートリミット(2026年時点)

プラン月額投稿上限/月読み取り
Free$0500ツイート制限あり
Basic$1003,000ツイート10,000/月
Pro$5,000300,000ツイート1,000,000/月

自動化はBasicプラン以上が推奨です。Freeプランは投稿数が少なく本格運用には向きません。

ぶっちゃけ、X APIの月$100(約15,000円)が最大のコストです。VPS代なんて誤差レベル。「VPS代をケチる」より「X APIプランをどう使い倒すか」の方がはるかに重要な判断になります。

Basicプランで月3,000ツイート = 1日あたり約100ツイート。毎日3回投稿 + 30分ごとにリプライチェックで運用するなら、月の投稿数は90〜200件程度に収まるはず。Basicで十分です。

VPS の要件

X APIボットはAPIコールとLLM推論のみを行うため、スペックは低くて済みます。

項目推奨
CPU2コア
メモリ4GB(OpenAI API使用)/ 8GB(Ollama使用)
ストレージ30GB
OSUbuntu 22.04 LTS

繰り返しになりますが、GPU不要です。 このボットはOpenAIのAPIを叩くか、OllamaをCPUで動かすかの2択。どちらもGPUは関係ない。もし他の記事でGPU付きVPSを勧めていたら、そのVPSのアフィリエイト単価が高いからだと思った方がいい。

広告 ConoHa VPS →

ConoHa VPS の2GBプランは月880円〜。APIボットならこれで十分。月額固定なので「今月いくらかかったっけ」と計算しなくていいのが精神的にラク。

環境構築:ステップバイステップ

Step 1: X Developer Portal でAPIキーを取得

  1. developer.x.com にアクセス
  2. 「Projects & Apps」→「Add App」でアプリを作成
  3. 「Keys and Tokens」から以下を取得・保存:
    • API Key(Consumer Key)
    • API Key Secret
    • Access Token
    • Access Token Secret
    • Bearer Token

ここが一番面倒なステップです。Xのデベロッパーポータルは UIが変わりやすいので、詰まったら「X API v2 キー取得 2026」で検索するのが早い。

Step 2: Python 環境とtweepyのインストール

sudo apt update && sudo apt install -y python3.11 python3.11-venv

mkdir ~/x-ai-bot && cd ~/x-ai-bot
python3.11 -m venv venv
source venv/bin/activate

pip install tweepy openai python-dotenv schedule requests

Step 3: 環境変数を設定する

nano .env
X_API_KEY=your-api-key
X_API_SECRET=your-api-secret
X_ACCESS_TOKEN=your-access-token
X_ACCESS_SECRET=your-access-token-secret
X_BEARER_TOKEN=your-bearer-token

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx

.env ファイルは絶対にGitHubにpushしないこと。.gitignore に追加するのを忘れずに。やらかすと即APIキーを無効化する羽目になります。

Step 4: 自動投稿スクリプトを作成する

# poster.py — コンテンツの定期投稿
import tweepy
import os
from openai import OpenAI
from dotenv import load_dotenv
import random

load_dotenv()

# X API クライアント
client_x = tweepy.Client(
    consumer_key=os.getenv("X_API_KEY"),
    consumer_secret=os.getenv("X_API_SECRET"),
    access_token=os.getenv("X_ACCESS_TOKEN"),
    access_token_secret=os.getenv("X_ACCESS_SECRET"),
)

# OpenAI クライアント
client_ai = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 投稿テーマのリスト(アカウントのジャンルに合わせて変更)
TOPICS = [
    "AIツールの使い方",
    "生産性向上のヒント",
    "Python プログラミング",
    "VPS活用術",
    "クラウド自動化",
]

def generate_tweet(topic: str) -> str:
    """AIがツイート文を生成する"""
    prompt = f"""
以下のテーマについて、Xで反応を得やすい日本語ツイートを1つ書いてください。

テーマ: {topic}

条件:
- 140文字以内
- 具体的なTipsや気づきを含む
- ハッシュタグを1〜2個付ける
- 絵文字を適度に使う
- 宣伝・スパム感NG
"""
    response = client_ai.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=200,
    )
    return response.choices[0].message.content.strip()

def post_tweet():
    """ツイートを投稿する"""
    topic = random.choice(TOPICS)
    tweet_text = generate_tweet(topic)

    # 140文字制限チェック
    if len(tweet_text) > 140:
        tweet_text = tweet_text[:137] + "..."

    try:
        response = client_x.create_tweet(text=tweet_text)
        tweet_id = response.data["id"]
        print(f"投稿成功: ID={tweet_id}\n{tweet_text}")
        return True
    except tweepy.TweepyException as e:
        print(f"投稿失敗: {e}")
        return False

if __name__ == "__main__":
    post_tweet()

TOPICS のリストはアカウントのジャンルに合わせて書き換えてください。ここが雑だと生成される投稿も雑になる。AIへの指示は具体的にした方が絶対にいい。

Step 5: 自動リプライスクリプトを作成する

# replier.py — メンションへの自動リプライ
import tweepy
import os
import json
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

client_x = tweepy.Client(
    bearer_token=os.getenv("X_BEARER_TOKEN"),
    consumer_key=os.getenv("X_API_KEY"),
    consumer_secret=os.getenv("X_API_SECRET"),
    access_token=os.getenv("X_ACCESS_TOKEN"),
    access_token_secret=os.getenv("X_ACCESS_SECRET"),
)
client_ai = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 最後に処理したツイートIDを保存(重複防止)
STATE_FILE = "last_seen_id.json"

def load_last_seen_id() -> str | None:
    if os.path.exists(STATE_FILE):
        with open(STATE_FILE) as f:
            return json.load(f).get("id")
    return None

def save_last_seen_id(tweet_id: str):
    with open(STATE_FILE, "w") as f:
        json.dump({"id": tweet_id}, f)

def generate_reply(mention_text: str) -> str:
    """メンション内容に対するリプライを生成"""
    prompt = f"""
以下のツイートへの自然な日本語リプライを書いてください。
丁寧で役に立つ内容にしてください。140文字以内で。

ツイート: {mention_text}
"""
    response = client_ai.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=150,
    )
    return response.choices[0].message.content.strip()

def process_mentions():
    """未返信のメンションを取得してリプライする"""
    last_id = load_last_seen_id()

    # 自分のユーザーIDを取得
    me = client_x.get_me()
    my_id = me.data.id

    # メンションを取得
    kwargs = {"since_id": last_id} if last_id else {}
    mentions = client_x.get_users_mentions(
        id=my_id,
        max_results=10,
        tweet_fields=["text", "author_id"],
        **kwargs,
    )

    if not mentions.data:
        print("新しいメンションなし")
        return

    for mention in reversed(mentions.data):
        text = mention.text.strip()
        # 自分自身へのリプライは除外
        if str(mention.author_id) == str(my_id):
            continue

        reply_text = generate_reply(text)
        try:
            client_x.create_tweet(
                text=reply_text,
                in_reply_to_tweet_id=mention.id,
            )
            print(f"リプライ送信: {mention.id}\n{reply_text}")
        except tweepy.TweepyException as e:
            print(f"リプライ失敗: {e}")

    # 最新のIDを保存
    save_last_seen_id(str(mentions.data[0].id))

if __name__ == "__main__":
    process_mentions()

last_seen_id.json の管理は地味に重要です。これがないと同じメンションに何度もリプライを飛ばしてスパム扱いされます。最初に手動で1回実行して動作確認してから、cronに登録するのをおすすめします。

Step 6: cron でスケジューリング

crontab -e
# 毎日3回投稿(8時・12時・20時)
0 8,12,20 * * * /home/ubuntu/x-ai-bot/venv/bin/python /home/ubuntu/x-ai-bot/poster.py >> /home/ubuntu/x-ai-bot/post.log 2>&1

# 30分ごとにメンションをチェック(レートリミットに注意)
*/30 * * * * /home/ubuntu/x-ai-bot/venv/bin/python /home/ubuntu/x-ai-bot/replier.py >> /home/ubuntu/x-ai-bot/reply.log 2>&1

これがVPSで動かす理由のすべてです。一度cronに登録したら、VPSが勝手に動き続ける。ローカルPCだと寝てる間にPCが落ちてたとか、スリープしてたとか、そういうことが必ず起きる。VPSに任せると本当に気にしなくていい。

レートリミット管理の重要ポイント

X APIは厳しいレートリミットを持っています。違反するとアカウント停止リスクがあるため、以下を必ず守ってください。

注意事項推奨対応
投稿頻度1日あたり50件以下(Basicプラン)
リプライ間隔最低5分以上あける
同一内容の禁止生成ごとに内容を変える
スパム判定回避自然な文体・多様なテーマ

はっきり書いておきます。レートリミット違反でBANされるケースの大半は「急ぎすぎ」です。 最初は投稿頻度を控えめに設定して、1〜2週間問題なく動いてから少しずつ増やす。焦って最初から全力で回すと、Xのシステムに不審なアカウントとして認識されやすい。

倫理的な運用ガイドライン

自動化は使い方次第でフォロワーの信頼を失うリスクがあります。以下の原則を守ることを強く推奨します。

  1. 価値ある情報のみを投稿する — フォロワーにとって役立つTipsや情報に限定する
  2. スパム的なリプライをしない — 無差別リプライや同じ文言の繰り返しはNG
  3. 人間のレビューを挟む — 重要な投稿は必ず確認してから公開する(draft保存機能の活用)
  4. Xの利用規約を遵守する — 自動化に関するXのポリシーを定期的に確認する
  5. AIで生成した旨を開示する — 必要に応じてプロフィールに明示する

自分の考えを体感として、「自動化=悪」ではないけど「自動化=楽して増やせる」でもない。AIが生成した内容が本当に価値あるものかどうかは、定期的にログを見て確認する必要があります。完全放置は最初からやめとけと思います。週1回ログを見て、変なツイートが出てないか確認するくらいの管理は必要。

よくある質問

A. X APIの公式エンドポイントを使用し、レートリミットを守れば通常はBANされません。スパム的な内容・大量リプライ・他ユーザーへの嫌がらせ的な行動がBANの原因となります。ルールを守った運用であれば問題ありません。
A. はい。OllamaはOpenAI互換のAPIエンドポイントを提供しているため、`base_url="http://localhost:11434/v1"` に変更するだけで切り替えられます。8GBメモリのVPSが必要ですが、API費用がゼロになります。OpenAI APIをガンガン叩く運用だとAPI費用がじわじわ積み上がるので、長期運用ならOllama移行も十分あり。ただし生成品質はOpenAIに劣る点は正直に認識しておいた方がいい。
A. tweepyの `search_recent_tweets` を使うことで、特定キーワードを含むツイートを検索してリプライする機能も実装できます。ただしBasicプランの検索APIの制限内で行う必要があります。
A. 技術的には可能です。アカウントごとに別の.envファイルと別のcronジョブを設定することで、1台のVPSで複数アカウントを管理できます。ただし各アカウントのAPIキーは独立して取得が必要です。

まとめ:あなたの使い方で選ぶ

X API v2 + tweepy + AI(OpenAI/Ollama)を組み合わせることで、自然な文章を自動生成して投稿・リプライするボットをVPS上に構築できます。ここまで読んだ人向けに、判断テーブルにまとめます。

あなたの状況推奨VPS月額コスト感一言
とにかく安く始めたい・OpenAI API使用ConoHa VPS 2GBプラン880円/月1日あたり約29円。試すならここから
費用を抑えてOllamaも使いたいKAGOYA CLOUD VPS 4〜8GB時間課金で使った分だけ常時稼働なら固定料金のConoHaと比較して計算を
まず試してから決めたいKAGOYA CLOUD VPS(14日無料)0円〜週末2回入るので動作確認には十分。迷ったらここで試す
Ollamaをフル活用・API費用ゼロにしたい8GBプラン(ConoHa/KAGOYA)2,000円台/月API費用と天秤にかけて判断
GPU付きVPSを勧められたこのボットにGPUは不要です。やめとけ

コスト感の整理(OpenAI API使用の場合):

  • VPS: 880円/月(ConoHa 2GB)
  • X API Basicプラン: 約15,000円/月($100)
  • OpenAI API(gpt-4o-mini、1日3投稿+リプライ50件想定): 数百円/月

実質的なランニングコストはX APIの月$100が支配的です。VPSをケチっても誤差。むしろVPSの安定性を優先した方が長期的には正解。


まずはKAGOYAの14日無料で動かしてみて、「ちゃんと動く・自分の運用に合う」を確認してからVPS選びを決めればいい。最終回答じゃないんだから、試してみてください。

関連記事