調べ方
この数字がどう作られているか
グラフは作り方を隠すと簡単に嘘をつきます。ここに定義をすべて書くので、納得できない集計があれば数字のほうを疑ってください。
対象と期間
集計対象は 2026-09-17 〜 2026-09-23(日本時間)に投稿された 1,627 件です。 時刻の処理はすべて JST(UTC+9)に変換してから行っています。日付の境界は 0:00 JST です。
「バズ」の定義
本サイトではこの集計の上位5%に入った投稿を「バズった」と定義し、 その割合をバズ率と呼んでいます。現在の集計ではインプレッション 4,400 以上がその線です。
以前は「10万インプレッション以上」という固定値にしていましたが、実データを集めたところ 中央値は約300、最大でも3.5万で、到達は0件でした。固定値のままでは 「バズ率 0%」が永久に続き、指標として死にます。そのため観測した分布そのものから線を引く方式に変えました。
この定義は相対的なものです。もっと大きなアカウントの投稿を集めれば 閾値は上がりますし、集める範囲を変えれば下がります。 「1万インプレッション=すごい」という絶対的な基準ではなく、 「このデータの中で上位だった」という意味だと理解してください。
エンゲージメント率
エンゲージメント率は次の式で計算しています。
(いいね + リポスト + 返信 + ブックマーク)÷ インプレッション × 100
リポストと返信に重みを付ける流儀もありますが、重み付けは結論を恣意的に動かせてしまうため、 ここでは単純な合計を使っています。反応の中身の違いは、重みではなく型ごとの内訳のほうで見てください。
平均ではなく中央値を使う理由
インプレッションの分布は極端に右に裾が長く、上位数%が全体の大半を占めます。 この形のデータで平均を取ると、1本の大バズが「その区分全体が伸びている」ように見せてしまいます。 そのため本サイトの代表値はすべて中央値です。 「半分の投稿はこれ以下だった」という読み方をしてください。
件数が少ない区分の扱い
1区分あたり12件未満のときは数値を表示しません。 ヒートマップでは灰色のマスになります。3件の平均で「最強の時間帯」を名乗るような 見せ方をしないための措置です。すべてのグラフはツールチップと表で件数を確認できます。
話題(トピック)の見つけ方
話題はあらかじめ決めた一覧ではなく、投稿本文から自動で切り出しています。 決め打ちの分類にすると、その週に急に出てきた話題が何件バズっても永久に表示されないためです。
切り出しているのは、ハッシュタグ、英数字の語、カタカナの連続、漢字の連続、 そして「生成AI」「次世代EV」のような日本語+英字の複合語です。形態素解析は使っていません (lib/classify.mjs)。 そのぶん粗い方法なので、全期間で 30 件以上出現した語だけをページにしています。
あわせて、よく使われる話題には表記ゆれを吸収する辞書を持たせています (「生成AI」と「ChatGPT」を同じ話題として数える、など)。辞書に載っている話題には 説明文とジャンルが付き、それ以外は「自動検出」として語そのものを見出しにしています。
この方法の弱点も書いておきます。表記ゆれが別の話題として数えられることがあり (「値上げ」と「電気代値上げ」など)、意味を持たない語が混ざることもあります。 1件ごとの正確さではなく、分布として読んでください。
話題のトピックで出している「急上昇」は、直近7日の投稿数 ÷ その前の7日の投稿数です。インプレッションではなく 投稿の件数を数えています。率は母数が小さいほど派手に動くため、 直近7日が 12 件未満の話題は順位から外し、どの表示にも実数を併記しています。
投稿の添削について
投稿を添削は、入力された文をこのサイトの集計と同じ分類規則にかけ、その区分の実測値を並べて返す機能です。 分類規則は集計スクリプトと同じファイルを読んでいるので、 「集計に使った定義」と「読者に見せる判定」がずれることはありません。
投稿のURLを貼った場合は、Xが公開している oEmbed(認証不要)から本文だけを取得します。 この問い合わせはブラウザからXへ直接行っていて、本サイトのサーバーは通りません。 受け取れるのは本文のみで、インプレッションなどの数値は含まれません。 本文欄での添削処理そのものも、すべてブラウザ内で完結します。
この機能は伸びの予測値を一切出しません。 インプレッションの大半はフォロワー数と時流で決まり、本文の形式が説明できる範囲は 限られています。当たらない予測を出すことはサイトの信用を損なうだけなので、 返すのは「あなたの投稿が入る区分の、実際の中央値」に限っています。 また処理はすべてブラウザ内で完結し、入力された本文はサーバーへ送信も保存もされません。
このデータで言えないこと
- 因果関係は分かりません。これは伸びた投稿を後から観察して特徴を数えたものです。 「その型にしたから伸びた」のか「伸びる内容を書ける人がその型を好む」のかを区別できません。
- 生存者バイアスがあります。観測できるのは既に表に出た投稿であり、同じ型・同じ時間で埋もれた大量の投稿は数に入りません。
- アカウントの規模差を分離していません。フォロワー数の影響は投稿の型より桁違いに大きく、区分間の差の多くはこの差に飲み込まれます。
- 推薦アルゴリズムの変更を追えません。Xの配信ロジックは頻繁に変わります。過去90日の傾向が来月も続く保証はありません。
以上を踏まえると、このサイトの使い方は「正解を探す」ではなく「自分で試す仮説の候補を絞る」が適切です。 最終的にあてになるのは、自分のアカウントのアナリティクスだけです。
データの出どころと、実データへの差し替え
現在のデータ源は x-api-v2 recent_search: (副業 OR フリーランス OR 個人開発 OR 生成AI OR ChatGPT OR プログラミング OR エンジニア OR マーケティング OR ライティング OR 転職 OR キャリア OR 働き方 OR 時短 OR 習慣化 OR 勉強法 OR 英語学習 OR 読書 OR 発信) lang:ja -is:retweet -is:reply -is:nullcast -プレゼント -応募 -抽選 -当選 -キャンペーン です。 実データに差し替える場合の選択肢は次の3つです。
- X API(従量課金):もっとも正確です。定額プランは廃止され、 現在は使った分だけ支払うクレジット制になっています(投稿の取得は1件あたり $0.005)。 インプレッション数は公開メトリクスなので、他人の投稿でも取得できます。 同梱の
scripts/collect.mjsがそのまま使えます。 - 自分のアカウントのアナリティクス:自分の投稿だけなら CSV で書き出せます。 サンプル数は限られますが、因果の検証(同じ内容を時間だけ変える等)は自分の アカウントでしかできません。
- 手動での記録:目についたバズ投稿を自分で分類・記録する方法です。 無料ですが、何を拾うかに自分の偏りが入るため、その偏りも併記する必要があります。
いずれの方法でも、出力を data/posts.json の形(lib/types.ts の Dataset 型)に揃えて meta.isSample を false にすれば、 ページ側のコードを変えずに切り替わります。サンプル表示の警告バナーも自動的に消えます。
再現性について
集計コードは公開しています。同じ入力データからは同じグラフが出ます。 数字に疑問があれば、各グラフの「表で見る」から元の値を確認してください。