X(Twitter)URLパーサー

SNS ネットワーク
解析されたURL
種類
ユーザー名
コンテンツID
バリアント
削除されたパラメータ

はじめに

X(Twitter)のリンクは本質的に混沌としています。同じツイートが twitter.com リンク、x.com リンク、5つのトラッキングパラメータ付きアプリ共有リンク、トレンドクリックの検索リンク、/photo/1 バリアントリンク、あるいはどの言語のハッシュタグリンクとしても届き得ます。コンテンツは同一 – 変わるのはURLの形だけです。X(Twitter)URLパーサーは、20種類以上のXリンク形式を認識し、ツイートIDを抽出し、トラッキングのノイズを除去して、リンクをクリーンな正規URL・公式の埋め込みURL・シェア用インテントURLとして再構築する無料オンラインツールです。

このパーサーは、Xリンクを日常的に扱うすべての人のためのものです:リンクを公開するソーシャルメディア管理者、アーカイブするコミュニティ管理者、キャンペーンを追跡するマーケター、大規模に収集する研究者、データベースに保存する開発者。リンクを手作業でクリーニングしたり、動作を隠す短縮サービスに頼ったりする代わりに、リンクを貼り付ければ、パーサーが何を見つけたかを正確に確認できます – リンクの種類、ユーザー名、コンテンツID、表示バリアント、削除されたパラメータ。

このツールには2つの特徴があります。キー入力のたびに結果を更新しながら即座に解析し、ネットワークリクエストはゼロ – リンクがブラウザから出ることはありません。サーバーもAPIクォータも、貼り付けた内容のログもありません。

ユースケース

公開とキャンペーン。 ニュースレター、ブログ記事、広告コメントにXリンクを載せる前に、正規形式でクリーニングしましょう。sttwclid などのトラッキングパラメータは共有セッションに紐づいてすぐに無価値になり、分析レポートを汚します。正規URLを公開すれば、コンテンツリンクは安定し、メトリクスは正直なままです。

アーカイブと重複排除。 スプレッドシート、CMS、研究データセットにXリンクを保存する場合、同じツイートが何十ものURL形式 – 異なるドメイン、バリアント、パラメータ列 – で現れます。パーサーはすべてを1つの正規形に正規化するため、twitter.com/jack/status/20x.com/jack/status/20?s=20&t=… 付きの同じリンクが、重複排除の対象となる1つの安定した識別子に収束します。

トレンド監視。 トレンドクリックのリンクはXの中でも最も乱雑なURLです:x.com/search?q=%23Gewitter&src=trend_click&vertical=trends。監視テーブルの各ツイートはこの形式で届きます。パーサーはパターンを認識し、ハッシュタグ1つのクエリを正規のハッシュタグページに正規化して、起点パラメータを削除します – 貼り付けるだけでトレンドリンクがクリーンで共有可能なURLになります。

ウェブサイトへの埋め込み。 自分のサイトでツイートを公開する場合、埋め込み形式がX公式のウィジェットURL(platform.twitter.com/embed/Tweet.html?id=…)を生成します。iframeに設定すれば、Xが公式デザインでツイートをレンダリングします – サードパーティの埋め込みサービスもスクレイピングも不要です。

データ衛生。 開発者や研究者にとって、このパーサーは仕様リファレンスでもあります – 削除されたパラメータのリストはXが今日追加しているトラッキングキーを正確に示し、対応形式の表はツールが認識するすべてのルートを文書化します。

Xリンクの構造

Xリンクには、理解に値する3つの部分があります:ホスト、パス、クエリ文字列です。

モバイルアプリが共有する実際のツイートリンクを見てみましょう:

https://twitter.com/markito0171/status/2089759704335482961/video/1?s=20&t=FakeNonce&ref_src=twsrc%5Etfw

ホスト twitter.com(または x.commobile.twitter.com)は、リンクがどのファミリーに属するかをパーサーに伝えます。パス /markito0171/status/2089759704335482961/video/1 はルートを表します – ここではビデオ表示バリアント付きのツイートです。クエリ文字列は、パーサーがまったく異なる扱いをする2種類のパラメータを混在させています:

パラメータ 種類 パーサーの動作
2089759704335482961(パス) 識別子 保持 – これがツイートのSnowflake ID
/video/1(パス) 表示バリアント ツイートを保持し、バリアントを記録 – 同じツイートをビデオとしてレンダリング
s=20 トラッキング 削除 – 共有シートのタイムスタンプ
t=FakeNonce トラッキング 削除 – 共有ノンストークン
ref_src=twsrc^tfw トラッキング 削除 – 参照元(ここではTwitterフォーウェブ埋め込み)

識別パラメータは、リンクがどのツイート、プロフィール、リスト、Space、イベント、ハッシュタグを指しているかを示します。それ以外はすべてコンテキスト – どうやって来たか、どのアプリからか、どのビューが開いていたか。パーサーは識別子を保持してコンテキストを捨て、その後、削除したキーを報告するため、クリーニングは検証可能です。

2つのドメイン。 Xは2023年にTwitterからXへブランド名を変更し、x.com は2024年にメインドメインになりました。両ドメインは同じコンテンツを配信して相互にリダイレクトし、どちらからコピーしたリンクも同一に動作します。パーサーは両方に加えて旧 mobile.twitter.com サブドメインも受け付け、正規形は常に x.com で出力します – X自身が現在リダイレクトする先のドメインです。

内部の /i/ ルート。 もう1つのリンクファミリーが /i/ 配下にあります:x.com/i/web/status/{id}(ユーザー名なしでツイートURLを開いたときのウェブアプリのツイートルート)、x.com/i/spaces/{id}(ライブ音声Spaces)、x.com/i/lists/{id}(ID指定のリスト)、x.com/i/events/{id}(タイムラインとMoments)。パーサーはそれぞれを認識し、正規形に戻します。

仕組み

解析はブラウザ内で完全に行われ、ネットワークリクエストもサーバー往復もありません。キー入力のたびに、リンクは3つの段階を通過します:

  1. ホスト照合。 リンクをXドメインと照合します:twitter.comx.commobile.www. など任意のサブドメイン。evilx.com のような紛らわしいドメインは拒否されます。
  2. ルート照合。 パスをセグメントに分割し、既知のルート表と照合します – {ユーザー}/status/{id}i/web/statusi/spacesi/listsi/eventshashtagsearch、プロフィールルート、プロフィールタブのパス。
  3. クエリ解析。 検索リンクの q パラメータをデコードして分類し、トラッキングパラメータは3つのルールで認識して削除リストに追加します。

抽出された各値は、受け入れる前に厳密なパターンで検証されます:ツイートIDは15〜19桁、ユーザー名は1〜15文字の英数字またはアンダースコア、ハッシュタグは任意のUnicode文字体系で最大30文字。検証に失敗したものは、推測する代わりに無効リンクとして報告されます。

ネットワークアクセスがないため、パーサーはローディング状態を必要とせず、レート制限に遭遇せず、貼り付けた瞬間に結果を返します。

対応リンク形式

パーサーは7つの結果タイプにわたって20種類以上の形式を認識します。

形式 結果タイプ
ユーザー名付きツイート x.com/elonmusk/status/1234567890123456789 tweet
旧ドメインのツイート twitter.com/jack/status/20 tweet
モバイルサブドメインのツイート mobile.twitter.com/elonmusk/status/1234567890123456789 tweet
ウェブアプリのルート(ユーザー名なし) x.com/i/web/status/1234567890123456789 tweet
ツイートの写真ビュー x.com/elonmusk/status/1234567890123456789/photo/1 tweet(バリアント photo)
ツイートのビデオビュー x.com/elonmusk/status/1234567890123456789/video/1 tweet(バリアント video)
ツイートの言語ビュー x.com/elonmusk/status/1234567890123456789/lang/zh tweet(バリアント lang: zh)
ツイートのアナリティクスビュー x.com/elonmusk/status/1234567890123456789/analytics tweet(バリアント analytics)
シンプルなプロフィール x.com/elonmusk profile
プロフィールタブ x.com/elonmusk/with_replies profile
スラッグ指定のリスト x.com/elonmusk/lists/tech-leaders list
ID指定のリスト x.com/i/lists/1234567890123456789 list
ライブSpace x.com/i/spaces/1zqKVZlLKvPJB space
イベントまたはMoment x.com/i/events/1234567890123456789 event
ハッシュタグページ x.com/hashtag/tech hashtag
Unicodeハッシュタグページ x.com/hashtag/日本 hashtag
ハッシュタグ検索(正規化) x.com/search?q=%23Gewitter&src=trend_click hashtag
キーワード検索 x.com/search?q=hello+world search

プロフィールタブは汎用的に受け付けます:パスの2番目のセグメントにある任意の小文字の単語 – with_repliesmedialikesfollowingfollowerslistsmoments、および将来の任意のタブ – はプロフィール自体に解決されます。タブはプロフィールのビューであり、独自のリソースではないからです。

パーサーは、共有可能なXコンテンツではないルートも拒否します。homeexploreloginsettingsmessagesnotifications などのプラットフォーム機能は無効メッセージになり、純粋に数字だけのユーザー名(x.com/1234567890)、15〜19桁でないツイートID(x.com/user/status/1234)、識別子のない空のルート(x.com/hashtag/)などの壊れた形式も同様です。完全なブロックリストは「技術仕様」の章にあります。

Snowflake IDを理解する

各ツイートには数値のIDがあり、その数字はランダムではありません。XはツイートIDをSnowflake形式で構築します:64ビット整数で3つの部分からなります – 2010年11月4日 からのミリ秒単位の41ビットタイムスタンプ、10ビットのマシン識別子、マシンごとの12ビットシーケンスカウンタ。

これが実際に意味すること:

  • IDは投稿の正確なミリ秒をエンコードします。たとえば ID 2089759704335482961 は2026年8月の投稿時刻にデコードされます – APIなしで、どのSnowflakeデコーダーでも自分で確認できます。
  • IDは2010年の15桁から今日は19桁に成長しました。タイムスタンプのビットが増え続けるからです。パーサーは15〜19桁を受け付け、プラットフォームの全歴史をカバーします。
  • IDはツイートの安定したキーです。ユーザー名(変更され得る)やURL形式(変動する)と違い、Snowflakeは決して変わりません – データベースでのリンクの重複排除、ツイートの検索、CMSでの参照に使いましょう。

パーサーはIDの形式を検証しますが、デコードはしません – タイムスタンプのデコードは専用のSnowflakeデコーダーの仕事です。リンクのクリーニングにとって重要なのは、パーサーがランダムな数字をツイートIDと誤認せず、形式が不正なときに推測しないことです。

検索リンクとハッシュタグの正規化

Xでトレンドやハッシュタグをクリックすると、プラットフォームはクリーンなURLに送ってくれません。エンコードされたクエリ付きの検索ページに送られます:

https://x.com/search?q=%23Gewitter&src=trend_click&vertical=trends

q パラメータが実際の検索クエリです – ここではパーセントエンコードされた単一のハッシュタグ #Gewitter。残りは到着コンテキストです:src=trend_click はトレンドから来たことを記録し、vertical=trends はトレンドビューを選択します。

パーサーはこれらのリンクを2つの方法で扱います:

クエリの形式 結果
ちょうど1つのハッシュタグ q=%23Gewitter 正規のハッシュタグページ x.com/hashtag/Gewitter に正規化
ちょうど1つのハッシュタグ、任意の文字体系 q=%23%E6%97%A5%E6%9C%AC(日本) x.com/hashtag/日本 に正規化
プレーンテキストまたは複数語 q=hello+worldq=%23foo+%23bar 検索リンク x.com/search?q=hello%20world のまま

なぜ正規化するのでしょうか?ハッシュタグ検索とハッシュタグページは同じコンテンツを表示しますが、ハッシュタグページのURLは安定していて短く、共有しやすい – そしてX自身がプロフィールや自己紹介で使う形式です。正規化により、テーブル内のトレンドリンクを1つずつ手で直す手間が省けます。

純粋なキーワード検索は正規化されません(任意のクエリに対する正規ページは存在しないため)。パーサーは検索リンクとして保持しつつ、到着コンテキスト(srcverticalf)は削除します。q が空または欠落している検索は無効として拒否されます。

削除するトラッキングパラメータ

Xはリンクに長いパラメータリストを追加し、パーサーは3つの認識ルールで削除します:

  1. キャンペーンパラメータutm_ プレフィックス付きのすべてのキー(Google Analyticsの規約):utm_sourceutm_mediumutm_campaignutm_termutm_content
  2. 内部トークン – アンダースコア2つのプレフィックス付きのすべてのキー。
  3. 正確なリスト – 既知のトラッキング・セッション・ナビゲーションパラメータ19個。

正確なリストの中で最も多いパラメータ:

パラメータ 記録される内容
s モバイルアプリの共有シートの共有タイムスタンプ
t 共有ノンストークン、s と対
twclid XクリックID – どの広告または検索結果からクリックが来たか
ref_src 参照元、例:Twitterフォーウェブ埋め込みの twsrc^tfw
ref_url リンクがクリックされたページ
ref リファラーの短縮形
src 到着コンテキスト:trend_clickhashtag_clicktren(トレンド)など
cn メール共有のトラッキングトークン(base64風が多い)
iid 広告のキャンペーンインスタンスID
ntref 通知コンテキスト
ft ウェブクライアントの内部トークン
lang 表示の言語オーバーライド
vertical 検索ビュー選択:trendsnewsusers
f 検索フィルタ:liveuserimagevideo
prdrndcxtbp 古いアプリコンテキストトークン、1つのルールにまとめられている

識別パラメータは決して削除されません:パスのツイートID、リストID、Space ID、検索リンクの q はコンテンツそのものです。削除するとリンクが壊れます。

なぜ削除が常に安全なのでしょうか?トラッキングパラメータは、どうやって来たかを説明するもので、リンクがどこを指すかではありません。twclidsrcutm_* は帰属レポートを変えるだけで、レンダリングされるコンテンツは削除後も同一です。「削除されたパラメータ」の行が何を削除したかを正確に表示するため、クリーニングは一目で検証できます。

出力形式ガイド

解析された各リンクは3つの形式で出力できます。

形式 出力 使用する場面
正規URL x.com のクリーンで安定したリンク 公開、アーカイブ、重複排除、リンクを長期保存するあらゆる用途
埋め込みURL 公式ウィジェットページ platform.twitter.com/embed/Tweet.html?id=… 自サイトでツイートをレンダリングするため <iframe> に設定
シェアURL 公式インテントURL(intent/retweetintent/userintent/tweet シェアボタンとキャンペーンリンク

正規形式は、貼り付けたドメインに関係なく常に x.com ドメイン – 現在のブランド – を出力します。ハッシュタグ検索はハッシュタグページに正規化され、プロフィールタブはプロフィールルートにフォールバックします。

埋め込み形式はツイートのみに存在します。Xの埋め込みウィジェットがツイートをレンダリングするためです。X自身のembedスクリプトがiframeに読み込むのと同じウィジェットURLを生成します – ブラウザで開けば、公式デザインでレンダリングされたツイートが見えます。ラジオオプションは、ウィジェットが存在しないプロフィール、リスト、Spaces、ハッシュタグでは自動的に非表示になります。

シェア形式はコンテンツに応じて適切なインテントを選びます:ツイートは intent/retweet?tweet_id=…(そのツイートのリツイートダイアログを開く)、プロフィールは intent/user?screen_name=…、ハッシュタグは intent/tweet?hashtags=…(ハッシュタグを事前入力したツイートを作成)。インテントは twitter.com – 歴史的なインテントホスト – にあり、Xが両ドメインで解決します。

使い方

  1. リンクを貼り付けます。 入力フィールドをクリックしてXのURLを貼り付けます(Ctrl+V または Cmd+V)。パーサーは入力中に読み取ります – 押すボタンはありません。
  2. 結果パネルを読みます。 5つの行が解析を要約します:
表示される内容
種類 結果タイプ:tweetprofilelistspaceeventhashtagsearch
ユーザー名 URLのハンドル、プロフィールへのクリック可能なリンク
コンテンツID 抽出されたID – ツイートSnowflake、リストID、Space ID、ハッシュタグタグ
バリアント ツイートの表示バリアント(photovideolang: zhanalytics)– 通常のツイートでは空
削除されたパラメータ 削除されたトラッキングパラメータ、カンマ区切り
  1. 出力形式を選びます。 正規URLがデフォルトです。必要に応じて埋め込みURL(ツイートのみ)またはシェアURLに切り替えます。現在のリンクタイプに該当しない形式は自動的に非表示になります。
  2. 結果をコピーします。 出力フィールドは即座に更新されます。[コピー] を押してクリップボードに取り込みます。

チュートリアル

トレンドクリックのリンクから公開されたクリーンなURLまでの完全な例を追ってみましょう。

ステップ1 – トレンドクリックのリンクを貼り付けます。 Xアプリでトレンドをクリックしたときに届くままのこのリンクをコピーします:

https://x.com/search?q=%23Gewitter&src=trend_click&vertical=trends&twclid=abc123xyz

入力を貼り付けます。結果パネルが即座に埋まります:種類 hashtag、コンテンツID Gewitter、削除されたパラメータ srcverticaltwclid

ステップ2 – 正規URLをコピーします。 出力はクリーンなハッシュタグページを表示します:

https://x.com/hashtag/Gewitter

単一ハッシュタグのクエリが正規のハッシュタグルートに正規化されました – X自身がプロフィールと自己紹介で使うURLです。

ステップ3 – 共有されたツイートをクリーニングします。 完全なパラメータ列付きのアプリ共有リンクを貼り付けます:

https://twitter.com/markito0171/status/2089759704335482961/video/1?s=20&t=FakeNonce&ref_src=twsrc%5Etfw

種類は tweet、ユーザー名がプロフィールにリンク、IDは 2089759704335482961、バリアントは video、削除リストは stref_src を表示します。正規出力はすべてを https://x.com/markito0171/status/2089759704335482961 に収束させます – /video/1 ビューは同じツイートなので、クリーンなリンクはツイート自体を指します。

ステップ4 – ツイートを埋め込みます。 埋め込みURLに切り替えます。出力は https://platform.twitter.com/embed/Tweet.html?id=2089759704335482961 になります。自分のサイトのiframeに設定します:

<iframe src="https://platform.twitter.com/embed/Tweet.html?id=2089759704335482961"
  width="550" height="600" style="border:none;overflow:hidden" frameborder="0"
  allowfullscreen="true"></iframe>

ステップ5 – Unicodeハッシュタグを処理します。 https://x.com/hashtag/%E6%97%A5%E6%9C%AC?src=hashtag_click を貼り付けます。種類は hashtag、IDは 日本(パーセントエンコードされたパスからデコード)、正規出力はエンコードされたクリーンな形式 https://x.com/hashtag/%E6%97%A5%E6%9C%AC です。

ステップ6 – プロフィールを共有します。 https://x.com/elonmusk を貼り付けてシェアURLに切り替えます。出力は https://twitter.com/intent/user?screen_name=elonmusk – 公式のフォローインテント、シェアボタンにそのまま使えます。

プロのヒント

  • コンテンツIDでアーカイブを重複排除。 テーブルをバッチでクリーニングするとき、コンテンツIDの行が安定したキーです:同じツイートは、どのドメイン・バリアント・パラメータ列から来ても常に同じSnowflakeになります。URLではなくこの列でソートして重複排除しましょう。
  • 保存前にトレンドリンクを正規化。 トレンドクリックはXで最も乱雑なリンクですが、貼り付けるだけで全部がクリーンなハッシュタグページに収束します。監視ワークフローは正規のハッシュタグ形式を中心に構築しましょう。
  • 公式iframeで埋め込みURLを使用。 Xの埋め込みウィジェットURLはページに追加のJavaScriptを必要としません – チュートリアルのiframeだけで動きます。ウィジェットがレスポンシブ幅を処理し、公式のツイートデザインをレンダリングします。
  • キャンペーンでシェアインテントを使用。 シェアURL形式は、リツイート・フォロー・ハッシュタグ投稿アクションの公式インテントリンクを生成します。APIキーなしで動作し、X自身のダイアログを開きます。
  • 削除リストを監視シグナルに。 Xは時々トラッキングの語彙を変更します。見たことのないパラメータが削除リストに現れたら一見の価値があります – パーサーがプラットフォームの現在の付加内容を正確に示します。
  • プロフィールタブは自動で収束。 テーブル内で x.com/elonmusk/with_replies を手で x.com/elonmusk に直さないでください – パーサーが自動で行い、ユーザー名の行はそのまま保たれます。
  • どこからでもリンクを貼り付け。 パーサーは両ドメインとすべてのサブドメインを受け付けるため、アプリ、ウェブ、ニュースレター、メールからのリンクが正規化なしで機能します。

代替手段

選択肢 強み 弱み
このパーサー リクエストゼロ、即時、Snowflake対応、20種類以上の形式、埋め込み・シェア生成、検証可能な削除リスト、Unicodeハッシュタグ ツイート本文やエンゲージメント数などのメタデータへのAPIアクセスはなし
アドレスバーでの手動修正 ツール不要 長いパラメータ列でミスしやすく、ツイートIDを誤って消しやすい、埋め込み・シェア形式なし
汎用URLクリーナー 使いやすい 短縮リンクや一般リンク向けでXルート向けではない。Snowflake ID、表示バリアント、検索正規化にほぼ対応しない
リンククリーニングのブラウザ拡張機能 選択したページで自動 拡張機能は閲覧中のすべてのリンクを見て、インストールと権限が必要、X固有の形式はほぼカバーされない
X API(公式) 完全なメタデータ、検索、投稿 2026年2月からペイパーユースで無料ティアなし – 次章参照。キーなしではブラウザから使えない

単発のクリーニングには、このパーサーの正規形式が最速の道です。メタデータ付きのバッチ調査にはX APIアカウントが適切かもしれません – ただしそれは開発者ツールであり、リンククリーナーではありません。

公式APIとの比較

X APIにはかつて無料ティアがありました。それは2023年と2026年の2度変わりました:Xは2026年2月にペイパーユースへ移行し、無料ティアを廃止し、新規登録向けに旧Basic・Proプランを閉鎖しました。単一のポストの読み取りは約$0.005(1,000ツイートあたり約$5)、プロフィール読み取りはその倍です。プロトタイピング用の無料クォータはありません。

このパーサーは意図的にAPIを呼び出しません。ローカルのパーサーは、有料APIができないことをカバーします:

状況 ローカルパーサー X API
任意のアーカイブのリンククリーニング 即時、無制限、オフライン 読み取りリクエストごとに課金
トレンドリンクの正規化 ローカルで解析 リンクごとに検索エンドポイント呼び出しが必要
プライバシー リンクがブラウザから出ない Xのサーバーに送られ、課金される
コスト 無料、クォータなし ポスト読み取りあたり$0.005から、無料ティアなし

パーサーはこのリンクは何で、そのクリーンな形は何かという問いに答えます – APIもキーもクォータも必要ない問いです。クリーニングに加えてツイートのメタデータが必要なら、APIアカウントは別の判断です。このツールが生成するクリーンな正規URLは、そうしたAPIに渡すべきそのままの形です。

このツールがしないこと

t.co の短縮リンクは解決できません。 Xに投稿されたすべてのリンクは自動的に t.co URLに短縮され、行き先はリダイレクトを追跡しないと分かりません。ブラウザはCORSが許可しないためリダイレクトの行き先を読めず、ゼロリクエストのパーサーは決して推測しません。短縮リンクを一度開いてアドレスバーから長いURLをコピーすれば、パーサーが即座に処理します。

サードパーティのミラーを拒否します。 Nitterインスタンス(nitter.net/…)や fxtwitter.comvxtwitter.com などのプレビューサービスはXドメインではなく拒否されます。twitter.comx.com(任意のサブドメイン)のみ受け付けます。

非コンテンツルートを拒否します。 homeexploreloginsettingsmessagesnotificationscomposeintentshare などのプラットフォーム機能は共有可能なコンテンツではなく、識別子のない空のルート(x.com/hashtag/x.com/i/spaces/)と同様に無効として拒否されます。

メタデータを取得しません。 Xへのリクエストはないため、ツイート本文、著者名、エンゲージメント数、投稿日時を表示することはありません。このリンクは何で、そのクリーンな形は何かに答えるだけです。(Snowflake ID自体が投稿時刻をエンコードしていますが、デコードは専用のデコーダーの仕事です。)

何も変更しません。 このツールはリンクを短縮せず、リダイレクトせず、保存せず、転送しません。出力はあなたが持ち帰るURLです。

トラブルシューティング

問題 原因 解決策
t.co の短縮リンクが無効と表示される 短縮リンクはCORSのためブラウザで解決できない 短縮リンクを一度開き、アドレスバーから長いURLを貼り付ける
「有効なX(Twitter)URLを入力してください」と表示される リンクが homelogin などのブロックルート、壊れた形式、またはX以外のドメインを使用 リンクが本当にXからコピーされたか確認。ブロックルートはコンテンツではないため意図的に拒否される
検索リンクがハッシュタグではなくsearchと表示される クエリがプレーンテキストまたは複数語 正しい動作 – ハッシュタグ1つのクエリのみハッシュタグページに正規化される
トレンドリンクが削除されたパラメータ srcvertical を表示する 到着コンテキストのパラメータであり、コンテンツではない 期待どおりの動作 – 正規出力がクリーンなハッシュタグ・検索リンク
埋め込みラジオオプションがない 埋め込みウィジェットはツイートのみ 正しい動作 – プロフィール、リスト、Spaces、ハッシュタグにはウィジェットページがない
Unicodeハッシュタグが文字化けして表示される タグがURLでパーセントエンコードされている パーサーがデコード – コンテンツIDの行にデコード済みタグ(例:日本)が表示され、正規出力が安全に再エンコード
ツイートIDが拒否される IDが15〜19桁ではない リンクが末尾の桁まで完全にコピーされたか確認
出力が /photo/1 ビューを省略する 表示バリアントは同じツイート 正しい動作 – 正規URLはツイート自体を指す。バリアントの行が元のビューを記録

プライバシーとデータの取り扱い

このツールはネットワークリクエストをゼロで実行します。貼り付けたURLはブラウザ内で完全に処理されます:サーバーは受け取らず、アナリティクススクリプトは見ず、サードパーティのログは記録しません。アカウントも保存もなく、ページを閉じた後にツールが何を貼り付けたかを知る方法もありません。

これはAPIベースのツールとの具体的な違いです:リンク、そのツイートID、ユーザー名は、あなたが管理しないサーバーを決して通過しません。公開前のリンク、社内キャンペーンリンク、非公開で転送されたリンクを、サードパーティのログに残さずにクリーニングできます。

パーサーはサードパーティのスクリプトも読み込みません。生成される埋め込みURLはX自身のウィジェットページを指し、XがそのURLを見るのはあなた自身が開いたり埋め込んだりしたときだけです – パーサーが読み込むことはありません。

技術仕様

プロパティ
処理 100%クライアントサイド、ネットワークリクエストゼロ
更新モデル キー入力ごとにリアルタイム
受け付けるホスト twitter.comx.com(任意のサブドメイン)、mobile.twitter.com
結果タイプ tweetprofilelistspaceeventhashtagsearch
ツイートIDパターン(Snowflake) 15〜19桁(\d{15,19}
ユーザー名パターン 1〜15文字の英数字またはアンダースコア、純粋な数字のみ不可
ハッシュタグタグパターン Unicodeの文字・数字・アンダースコア1〜30文字([\p{L}\p{N}_]{1,30})、パーセントエンコードからデコード
Space IDパターン 10〜15文字の英数字
リストスラッグパターン 1〜40文字の英数字、アンダースコア、ハイフン
プロフィールタブのルール パスの2番目のセグメントの任意の小文字単語スラッグ、数字のみ不可
検索ルール q 必須。#hashtag ちょうど1つでハッシュタグページに正規化
トラッキングパラメータのルール utm_* プレフィックス、__ プレフィックス、正確な19キーのリスト
保持される識別データ ツイートID、ユーザー名、リストID、Space ID、イベントID、ハッシュタグタグ、検索 q
出力形式 正規URL(x.com)、埋め込みURL(ツイートウィジェットページ)、シェアURL(リツイート・フォロー・ハッシュタグインテント)
依存関係 なし – 純粋なJavaScript、フレームワークなし
ブラウザ対応 モダンなエバーグリーンブラウザ(Chrome、Edge、Firefox、Safari)、URLSearchParams とUnicodeプロパティエスケープに対応

ブロックリストは:homeexploresearchintentsharecomposemessagesnotificationssettingsloginsignuphelptosprivacyaboutdownloadjobsdevelopersanalyticssupportfeedbackblogmediastatussbookmarksihashtaglists

機能

  • X(Twitter)の20種類以上のリンク形式を解析 – ツイート、プロフィール、リスト、Spaces、イベント、ハッシュタグ、検索リンク、twitter.comとx.comの両方に対応
  • twclid、ref_src、src、utm_* などのトラッキングパラメータを自動削除し、何を削除したかを正確に表示
  • ツイートIDを抽出し、ハッシュタグの検索リンクを正規のハッシュタグページに正規化
  • 正規のx.com URL、公式の埋め込みウィジェットURL、シェア用インテントURLをワンクリックで作成
  • 日本などのUnicodeハッシュタグ、/photo/1 のようなURLバリアント、内部の /i/ ルートを理解
  • ブラウザ内でリクエストゼロの即時解析 – リンクはデバイスから決して出ていきません

よくある質問

Xリンクに s=20、t=…、twclid が付くのはなぜ?
モバイルアプリからリンクが共有されたとき、トレンドからクリックされたとき、またはサードパーティ製アプリ経由で開かれたときに、Xはトラッキングパラメータを追加します。最も多いのは s(共有タイムスタンプ)、t(共有ノンストークン)、twclid(X広告のクリック帰属)です。これらのパラメータはリンクの行き先を変えず、クリックの帰属方法だけを変えるため、削除は常に安全です。パーサーは自動的に削除し、何を削除したかをリスト表示するので、クリーニングを検証できます。
twitter.com と x.com のリンクの違いは?
内容に違いはありません – 両ドメインは同じページを配信し、相互にリダイレクトします。twitter.com は2023年以前の旧ドメインで、x.com が現在のブランドです。パーサーは両方(mobile.twitter.com などのモバイルサブドメインも)を受け付け、常に x.com の正規形を出力します。X自身が現在そこへリダイレクトするからです。
ツイートIDとは何か、なぜ15〜19桁なのか?
各ツイートには 2089759704335482961 のような数値のSnowflake IDがあります。この数字はランダムではなく、投稿の正確なミリ秒にマシンとシーケンスのビットを加えたものをエンコードしています(「Snowflake IDを理解する」の章を参照)。パーサーはIDの長さと形式を検証し、他の数字をツイートIDと誤認しません。
t.co の短縮リンクが無効と表示されるのはなぜ?
t.co リンクはX公式の短縮リンクで、行き先はリダイレクトを追跡しないと分かりません。ブラウザはCORS制限のため t.co リダイレクトの行き先を読めず、純粋なクライアントサイドのパーサーは設計上ネットワークリクエストを行いません。ブラウザで短縮リンクを一度開き、アドレスバーから長いURLをコピーすれば、パーサーが即座に処理します。
x.com/search?q=%23Gewitter のような検索リンクがハッシュタグページになるのはなぜ?
Xでトレンドやハッシュタグをクリックすると、きれいなハッシュタグURLではなく q=%23Gewitter のようなエンコードされたクエリ付き検索リンクが生成されます。クエリがハッシュタグちょうど1つの場合、パーサーは https://x.com/hashtag/Gewitter という正規のハッシュタグページに正規化し、src や vertical などの起点パラメータを削除します。純粋なキーワード検索は検索リンクのままです。
このツールはリンクをXやサーバーに送信しますか?
いいえ。解析はすべてブラウザ内でローカルに行われ、ネットワークリクエストはありません。貼り付けたURLはデバイス上でのみ処理されるため、機密リンクや公開前のリンクをサードパーティのログに残さずに処理できます。
ESC