Twitter ビューアは無数にある。AI エージェントから使えるものはほぼない

Twitter ビューアは無数にある。AI エージェントから使えるものはほぼない
Unif SEO team
Unif SEO team

更新日

人気の Twitter ビューアー 8 つを AI エージェントと同じく curl で検証。多くはスクリプトを遮断するか JavaScript の裏にデータを隠します。使えるのは何か。

要点: Twitter ビューア(ビューワー、ビュアー、ビュワーとも)とは、X のアカウントなしで公開プロフィールや投稿、トレンド一覧を表示するページのことです。数十のサイトがあり、ブラウザで眺める人にとってはその多くで事足ります。私たちは 2026 年 10 月 7 日、よく知られた 8 件を AI エージェントと同じやり方、つまり Cookie なしの curl で取得してみました。2 件は Cloudflare のチャレンジを返し、Nitter インスタンス 2 件は停止中か法的理由でブロックされ、3 件はデータの入っていない JavaScript の空ページを返しました。JSON を返したのは FxTwitter の 1 件だけで、それも単一の投稿とユーザーに限られます。ビューアのページそのものをスクリプトから読めたものは 1 件もありませんでした。エージェントから使える Twitter ビューアとは、リクエストを URL に含め、その同じ URL から JSON や Markdown を返し、レート制限をヘッダーに明記し、従量課金 API とフィールド名を共有するものです。UnifAPI の Twitterビューアシリーズはそう作られていて、どのページも無料で使え、ログインもアカウントも API キーも要りません。訪問者ごとのレート制限は 10 分あたり 20 回の照会です。

「Twitter ビューア」は X 周辺で最も検索されるフレーズのひとつで、綴りのゆれが非常に多いのが特徴です。「x viewer」、スペルを誤った「twitter viwer」、スペイン語・ポルトガル語の「visualizador de twitter」、韓国語の「x 뷰어」、日本語の「ツイッタービューア」や「X ビューア」。どれも意図は同じで、サインインせずにアカウントや投稿がどう見えるかを知りたい、ということです。

変わったのは、その検索をしているのが誰か、という点です。ルックアップのうち、人がキーボードを叩いていない割合が増えています。「このアカウントを確認して」と頼まれたエージェント、毎晩エンゲージメント数値を更新するスクリプト、50 件のハンドルへ一斉に展開するリサーチワークフロー。こうした呼び出し元は、きれいなバナーには興味がありません。気にするのは、そのページをプログラムが指し示し、読み取り、信頼できるかどうかです。この記事はそのギャップについて、そして自前のビューアを作る前に何を検証したかについて書いています。

Twitter ビューアとは何か、誰が使うのか

Twitter ビューアは、X の公開データを読み取り、アカウントなしで開けるページに表示します。プロフィールビューアなら自己紹介、フォロワー数、最近の投稿を、ツイートビューアなら 1 件の投稿をメディアと指標つきで、トレンドビューアなら地域ごとのトレンドを一覧にします。1 つの検索ボックスでこれらをまとめて扱うサイトもあります。

利用者は 2 種類に分かれ、求めるものも異なります。

呼び出し元ビューアに求めるもの
ブラウザで見る人速く開くページ、読みやすいレイアウト、X 上の元投稿へたどれるリンク。
エージェント、スクリプト、モデルリクエストを完全に表す URL、機械が読める本文、明示されたレート制限。

ほとんどのビューアは前者だけを想定して設計されています。2022 年ならそれで妥当でした。今では問題です。リピートのトラフィックを生むのは後者であり、ビューアをワークフロー全体のデータソースに変えるのも後者だからです。

8 件の Twitter ビューアを、エージェントと同じやり方で試した

方法はあえて単純にしました。エージェントが最初の試行で行うこと、そのものだからです。各ビューアに対して @NASA の公開プロフィールページ(またはそのサイトで最も近いもの)を、デフォルトのユーザーエージェント、Cookie なし、JavaScript なしの curl でリクエストしました。記録したのは、HTTP ステータス、最初のレスポンスにプロフィールデータが含まれていたか、JSON・Markdown・RSS のいずれかの代替表現があるか、そしてエージェント向けの経路がドキュメント化されているかです。デフォルトのユーザーエージェントがブロックされたサイトでは、Chrome のユーザーエージェント文字列で再試行しました。

ビューアcurl が受け取ったもの最初のレスポンスにデータJSON / Markdown / RSSエージェント向けのドキュメント化された経路
Nitter (nitter.net)応答なしなしRSS、インスタンスが稼働していればなし
xcancel.com (Nitter インスタンス)HTTP 451、法的理由により利用不可、RSS も含むなしなしなし
SotweHTTP 403、Cloudflare の「Just a moment」チャレンジなしなしなし
TwstalkerHTTP 403、Cloudflare の「Just a moment」チャレンジなしなしなし
twitterviewer.netHTTP 200、5 KB の JavaScript シェルなしなし。llms.txt にページはフィードではないと明記OAuth 2.1 登録の背後にある MCP サーバー
TwitterShots viewerHTTP 200、フォーム駆動のページ。/twitter-viewer/NASA は 404なしなしllms.txt はあるが、機械向けエンドポイントはなし
SnaplyticsHTTP 200 のランディングページ。ビューアはフォームへリダイレクトなしなしなし
FxTwitter (api.fxtwitter.com)HTTP 200、JSONあり投稿 1 件またはユーザー 1 件の JSONURL そのもの。レート制限ヘッダーなし、検索・トレンドなし
x.com 本体HTTP 200、147 KB の JavaScript アプリケーションなしなし公式 API(キーとプランが必要)

目を引く点が 3 つあります。

第一に、自動化の文脈では Nitter の時代は終わりました。Nitter は 2024 年 1 月、X がゲストアカウントを廃止したことで動かなくなり、2025 年に実アカウントで動く形で復活し、2026 年 8 月にはプロジェクトと主要な公開インスタンスが X Corp. から差止請求の書簡を受け取りました。私たちが検証した日、最大のインスタンスは RSS を含むすべてのパスで HTTP 451 を返しました。Nitter の RSS の上に組んだワークフローには、もう行き先がありません。

第二に、人向けの検索で上位に出る 2 つのビューア、Sotwe と Twstalker は、ブラウザ以外のクライアントに対して Cloudflare のボットチャレンジを出します。利用者が人だけのサイトとしては妥当な選択ですが、エージェントには 403 と「Just a moment」と書かれた HTML ページが返るだけです。

第三に、エージェントを意識しているサイトでも、その対応は脇に置かれています。twitterviewer.net の llms.txt は、プロフィールページやツイートページはブラウザ用のインターフェースであってクロール可能なフィードではないとはっきり書き、エージェントには OAuth 登録が必要な MCP サーバーを案内しています。リンクプレビューの修正のために存在する FxTwitter は、素の URL に JSON で答える唯一の存在ですが、対象は単一の投稿とユーザーのレコードだけで、検索、返信、メディア一覧、トレンド、フォロワーは含みません。

正直にまとめるなら、「エージェントに対応したビューアはない」ではありません。「人が使うのと同じ URL でエージェントに対応するビューアはなく、対応しているものも X のごく一部しかカバーしていない」です。

Twitter ビューアがエージェントを裏切る 7 つのパターン

上の表はある朝の記録にすぎません。しかし、その背後にあるパターンはカテゴリ全体で一貫しています。それぞれに違う対処法があるので、ひとつずつ名前を付けておく価値があります。

#失敗パターンどう見えるかなぜ自動化が壊れるか
1ディープリンク URL がないハンドルはフォームに入力し、結果の URL は空ページと同じ。エージェントがリクエストを組み立てられない。ブラウザを操作してフォームを埋めるしかない。
2HTML のみJSON も Markdown もプレーンテキストの代替表現もない。モデルは、プログラムに読まれることを想定していないレイアウトをスクレイプするはめになる。
3JavaScript で描画最初のバイト列は空のシェルで、データはクライアント側のフェッチで届く。curl には何も返らない。ヘッドレスブラウザは遅く壊れやすい。
4ボットウォールブラウザ以外のクライアントには CAPTCHA や JavaScript チャレンジが出る。スクリプトは門前払いされ、エージェントはチャレンジを突破できない。
5無言のレート制限何回まで許されるのか、ウィンドウがいつリセットされるのか、レスポンスのどこにも書かれていない。エージェントは BAN されて初めて上限を知り、いつ再試行すべきかも分からない。
6不安定なフィールド名数値は <span> タグの中にあり、そのクラス名はリニューアルのたびに変わる。今日動くパーサーが来月は黙って壊れる。
7スケールすると行き止まり同じフィールドを持つ、ドキュメント化された従量課金 API への経路がない。チームは結局、人向けに作られたページの上にスクレイパーを組むことになる。

1 から 3 の失敗は、「twitter viewer API」や「twitter viewer json」がそれ自体で検索語になっている理由を説明しています。目で見るには十分なビューアを見つけたあとで、それを呼び出す方法がないと気づく人が多いのです。

エージェントから使える Twitter ビューアの条件

7 つの失敗を裏返せば、短い仕様書になります。エージェントから使えるビューアは、次を満たすべきです。

  1. リクエストを URL に含める。 プロフィールビューアなら ?q=<handle>、ツイートビューアなら ?q=<post URL or ID>。URL だけで表示を再現できるので、ログ、キャッシュ、共有、再試行のすべてが可能になります。
  2. 同じ URL から機械向けフォーマットを返す。 プログラムには ?format=json、結果をテキストとして読むモデルには ?format=md または Accept: text/markdown。別製品でも、登録フローでもありません。
  3. 最初のリクエストでデータを返す。 空のシェルも、探し当てるべき 2 回目のフェッチもなし。
  4. ブラウザ以外のクライアントを普通に扱う。 スクリプトにもブラウザにも同じ答えを返します。不正利用対策はネットワークエッジで行い、クライアントの種類ではなく量に応じて調整します。
  5. 制限を明記する。 すべてのレスポンスに X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset を付けます。429 には Retry-After を付け、上限をどこで引き上げられるかを示します。
  6. フィールド名を安定させ、ドキュメント化する。 profile.followers はずっと profile.followers のままです。
  7. 先につながっている。 1 回のルックアップが 500 回になったとき、同じフィールド名をキー付きの従量課金 API から取得でき、コードを変えずに済むこと。

UnifAPI の無料 X ビューアシリーズは、このとおりに作られています。各ビューアページは /tools/x/ 配下の無料エンドポイントの薄いレイヤーなので、ブラウザとエージェントはまったく同じレコードを読み、そのレコードは有料の X / Twitter API と同じ形をしています。

そもそもエージェントはどうやって Twitter ビューアを見つけるのか

エージェント向けの発見可能性はそれ自体が独立した問題で、「twitter viewer」で上位表示されることとは別物です。

人がアシスタントに「@NASA の最近の投稿を見て」と頼むと、アシスタントはたいてい https://x.com/NASA を最初に試し、データの入っていない JavaScript アプリケーションを受け取ります。次の一手は Web 検索ですが、そこで書くクエリは人が入力するものとは違います。問題の記述そのものです。公開データを扱うエージェントを作り、テストしてきた私たちの経験では、クエリはこんな形になります。

  • view x profile without login json
  • get tweet by url as json no api key
  • x.com returns empty page curl how to read profile
  • twitter trends api free no key
  • nitter alternative api 2026
  • fetch twitter replies for a tweet id

こうしたクエリで選ばれるページには、いくつかの共通点があります。URL パターンをボタンの裏ではなく本文にそのまま書いている。curl の例とサンプルレスポンスを載せている。エージェントが探している言葉、JSON、Markdown、API キー不要、レート制限、Retry-After を使っている。llms.txt を公開し、できれば全ページの Markdown 版も用意して、モデルが 1 回のリクエストで全文を読めるようにしている。そして、ツールにできないことも書いている。境界を知っているエージェントは、保護されたアカウントに無駄な呼び出しを繰り返さないからです。

私たちはこれをビューアページ自体に適用しました。UnifAPI のすべての X ビューアは、最初の段落でエンドポイント、パラメータ、制限を述べ、Markdown 版を持ち、サイトの llms.txt に掲載されています。狙いは何かを出し抜くことではありません。エージェントの問いに、エージェントの語彙で、たどり着いたそのページで答えることです。

コマンドラインから Twitter ビューアを呼ぶ

シリーズのすべてのビューアには、URL 形式とエンドポイント形式があります。どちらも無料で、どちらも訪問者ごとにレート制限があり、どちらも同じ本文を返します。

公開プロフィールを JSON で取得する例です。

curl -s "https://unifapi.com/tools/x/profile?handle=nasa" | jq '.profile.followers, .engagementRate'

同じプロフィールを Markdown で取得します。結果をそのままモデルのコンテキストに入れるなら、こちらが向いています。

curl -s -H "Accept: text/markdown" "https://unifapi.com/tools/x-profile-viewer?q=nasa"

URL で投稿を 1 件取得します。

curl -s "https://unifapi.com/tools/x/post?url=https://x.com/NASA/status/1234567890123456789"

その投稿への返信をいいね順で取得し、続けて次のページを取得します。

curl -s "https://unifapi.com/tools/x/replies?id=1234567890123456789&sort=top"
curl -s "https://unifapi.com/tools/x/replies?id=1234567890123456789&sort=top&cursor=<nextCursor>"

地域ごとのライブトレンドを Markdown で取得します。

curl -s "https://unifapi.com/tools/x/trends?location=japan&format=md"

すべてのレスポンスにレート制限ヘッダーが付くので、行儀のよいエージェントは推測ではなく X-RateLimit-Remaining を読んでペースを調整できます。

HTTP/2 200
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 17
X-RateLimit-Reset: 1791356400
Content-Type: application/json

ウィンドウを使い切ったときの 429 の本文も JSON です。呼び出し元に探させるのではなく、アップグレード先を本文の中で示します。

{
  "error": {
    "type": "rate_limited",
    "message": "Free limit of 20 requests per 10 minutes reached. Retry after 412s, or use a UnifAPI workspace key (pay as you go) for uncapped access.",
    "retryAfterSeconds": 412,
    "upgrade": "https://unifapi.com/apis/twitter"
  }
}

エンドポイントリファレンス

9 つのビューアは 1 つのエンベロープを共有しています。リストは { items, hasMore, nextCursor } の形で返り、cursor=<nextCursor> を渡すと次のページを取得できます。エラーはすべて { error: { type, message } } で、type は validation_error、not_found、rate_limited、upstream_error、upstream_unavailable のいずれかです。

エンドポイント必須任意返すもの
/tools/x/profilehandle(または q、username)posts(1–10)、cursorprofile、engagementRate、posts のページ
/tools/x/postid(または url、q)author、media、quoted、metrics を含む post
/tools/x/mediahandlecursorprofile、メディア投稿の posts ページ
/tools/x/repliesid(または url)sort=top|recent、cursorpost、replies のページ
/tools/x/searchqcursorquery、posts のページ。X の検索演算子が使える
/tools/x/trendslocation(スラッグまたは WOEID)、woeidwoeid、locationSlug、generatedAt、trends[]
/tools/x/communitiesqcursorquery、communities のページ
/tools/x/followershandlekind=followers|following、cursorprofile、kind、users のページ

どのエンドポイントにも format=md を付けるか、Accept: text/markdown を送れば、同じ内容を Markdown で受け取れます。各ビューアページは ?q= と format= に加えて同じパラメータを受け付けるので、/tools/x-profile-viewer?q=nasa&format=json と /tools/x/profile?handle=nasa は同じリクエストです。

シリーズの全ページ

ビューアが 1 つで済むことはめったにありません。クリエイターの審査にはプロフィール、メディアタブ、いくつかの返信スレッドが要ります。話題を追うには検索とトレンドが要ります。このシリーズは、X の公開されている範囲を 9 ページでカバーします。

ビューア無料エンドポイント読めるもの
Twitterビューア他のページへ振り分け何でも貼り付ければ、ハブが適切なページを開く。
Twitter プロフィールビューア/tools/x/profileヘッダー画像、自己紹介、各種カウント、最近の投稿、エンゲージメント率。
Twitter 投稿ビューア/tools/x/postメディア、引用元の投稿、すべての指標つきの投稿 1 件。
Twitter メディアビューア/tools/x/mediaアカウントの写真と動画をグリッドで。
Twitter 返信ビューア/tools/x/replies投稿の下の会話を、人気順または新着順で。
Twitter 高度な検索/tools/x/searchX の検索演算子を使った、クエリに一致する投稿。
今の X (Twitter) トレンド/tools/x/trends今日 X でトレンドになっているもの、10 地域分。
X コミュニティ検索/tools/x/communitiesトピック別の公開コミュニティ、メンバー数つき。
Twitter フォロワービューア/tools/x/followersアカウントをフォローしている人と、フォローしている相手。

ハブページはハンドル、投稿リンク、ハッシュタグ、自由入力のクエリを受け取り、答えられるビューアへ転送します。エージェントにとっては、入口が 1 つで済むということです。入力を /tools/twitter-viewer?q=…&format=json に送り、結果を読むだけです。

ビューアにできないこと

エージェントから使えることは、無制限という意味でも、非公開を見られるという意味でもありません。

  • 読むのは公開データだけです。保護されたアカウントは公開ヘッダーのみを表示し、それ以外は表示しません。
  • 訪問者ごとにレート制限があります。10 分あたり 20 回で、エッジで適用され、ヘッダーに表示されます。
  • X にサインインすることはありません。あなたのアカウントは一切関わらず、投稿、いいね、フォロー、送信のいずれも行いません。
  • 動画は X 自身の CDN から再生されます。再ホストもダウンロード提供もしません。
  • X の利用規約の代わりにはなりません。レコードは、他の公開ページと同じように扱ってください。

この境界があるからこそ、出力を安心して引用できます。エージェントは公開レコードを指し示し、その先に何をするかはオペレーターの判断に委ねられます。

ビューアだけでは足りなくなったら

無料のビューアは「見る」ためのものです。ワークフローに量や保証が必要になった瞬間から、同じレコードを UnifAPI の X / Twitter API からワークスペースキーで取得できます。料金は従量課金で、使い切ってしまう無料枠も、サイズを選ぶサブスクリプションもありません。フィールド名はビューアと一致するので、/tools/x/profile に対して動いたプロンプトは、書き直さずにそのまま API に対しても動きます。

典型的な流れはこうです。

  1. 人が Twitter プロフィールビューアで 3 つのハンドルを試す。
  2. エージェントに同じ URL を ?format=json 付きで渡し、一晩で 50 件のハンドルをスコアリングさせる。訪問者ごとの上限に当たり、429 を読む。
  3. チームがワークスペースキーを追加し、ループを API へ移す。スコアリングのコードは変わらない。

この連続性こそ、ビューアと API を同じデータレイヤーの上に作っている理由です。

FAQ

Twitter ビューアとは何ですか? X にサインインしなくても、公開されている X のプロフィール、投稿、トレンド一覧を表示する Web サイトです。読むのはアカウントが公開している情報だけです。「X ビューア」「Twitter ビジュアライザー」「Twitter ビューワー」「ツイッタービューア」などは、同じものの別名です。

アカウントなしで使える最良の Twitter ビューアは? 人が見るだけなら、上に挙げたサイトのうち開けるものならどれでも構いません。違いは主に広告と速度です。スクリプトや AI エージェントなら話は別で、素の URL に JSON で答え、レート制限を表示するビューアを選んでください。私たちが検証した日、FxTwitter は単一の投稿とユーザーについてそれを満たしていました。UnifAPI のビューアは、プロフィール、投稿、返信、メディア、検索、トレンド、コミュニティ、フォロワーのすべてで満たしています。

スクリプトで今も使える Nitter の代替はありますか? そのまま差し替えられるものはありません。Nitter の公開インスタンスは停止しているかブロックされており、同じルートを使うフォークもありません。読み取りには、URL から Markdown か JSON を返すビューアを使ってください。フィードには、同じ投稿を JSON で返し、カーソルでページングできる API を使ってください。

AI エージェントはなぜ多くの Twitter ビューアでつまずくのですか? ほとんどのビューアは、リクエストを URL ではなくフォームに入れ、HTML しか返さず、結果を JavaScript で描画し、ブラウザ以外のクライアントをブロックし、レート制限を一切示しません。エージェントが必要とするのは、そのすべての逆です。

Twitter ビューアの結果を JSON で取得できますか? UnifAPI のビューアなら可能です。任意のビューア URL に format=json を付けるか、対応する /tools/x/ エンドポイントを直接呼び出してください。Markdown が欲しい場合は format=md を付けるか、Accept: text/markdown を送ります。

無料の X ビューアは本当に無料ですか? 上限は? はい。すべての表示が実際のルックアップで、費用はかかりません。無料表示は訪問者ごとに 10 分あたり 20 回までで、残り回数とウィンドウのリセット時刻はヘッダーで分かります。上限なしのアクセスは、UnifAPI のワークスペースキーによる従量課金です。

Twitter ビューアで非公開(保護された)アカウントは見られますか? いいえ。保護されたアカウントは公開ヘッダーだけを表示します。ビューアは公開データを読むだけで、X のログインは使いません。

次に読むべきもの

Twitterビューア - ハブページ。ハンドル、リンク、ハッシュタグ、クエリを貼り付けるだけです。

Twitter プロフィールビューアのワークフロー - アプローチ前にアカウントを精査する 5 分間のチェック。

公開データ向けのエージェントファーストなスキル - 監視なしでエージェントが使えるように、公開データのルックアップをどう包むか。

X / Twitter API - 1 回のルックアップが多数になったときの、従量課金のサーフェス。