保存
共有
VERIFIED DATA NOTE

Show HN 4.1万件をPythonで検証:「AI」明記群の10点到達率は5.7%だった

Show HN 41,831件を上限検知付きで取得し、タイトル長・8種類の表現・リンク種別を分析。AI/LLM群とbrowser/WASM群の差を、月・曜日・時間帯で層別して検証します。

この記事の目次

INTERACTIVE EVIDENCE

Show HN 41,831件を条件別に比較する

タイトル表現・文字数・リンク先ごとに、10点到達率、50点到達率、投稿時期を層別した差を切り替えて確認できます。

表示指標
対象 41,831件
条件件数10点以上50点以上時間層別差

時間層別差は月・PT曜日・PT 3時間帯の層内リスク差を加重した値です。因果効果ではありません。集計結果JSON

4万件を集めるまでに、最初の取得を捨てた

「Show HNではAIプロダクトが伸びやすい」。2026年の空気感だけで考えると、そう思いたくなる。一方で、Hacker Newsを眺めていると、AIを名乗る投稿が票を集めないまま流れていく場面も珍しくない。

そこで、2025年7月1日から2026年6月30日までの show_hn 投稿を、公開されているAlgolia HN Search APIから取得した。対象は41,831件である。

最初は14日ずつ取得したが、ほぼ毎回ちょうど1,000件になった。APIの検索上限による欠落だったため、そのスナップショットは破棄した。7日窓でも1,000件に達する期間があったので、最終的には3日窓、全122リクエストで取り直した。各窓が上限未満であることをコードで検査し、objectIDで重複を除いた。

何を検証したか

取得前に、次の問いと分類を分析コードへ固定した。

  1. タイトルの長さと「10点到達率」に関係はあるか
  2. open sourceAI / LLMbrowser / WASMI built、数字など、8種類の表現で到達率は違うか
  3. GitHub等のコードホスト、独自ドメイン、URLなしで違いはあるか

主要アウトカムは、取得時点のAlgolia points が10以上かどうか。10点に特別な意味があるわけではないが、「作者本人と数人だけの反応」から一段抜けた状態を、全投稿へ同じ基準で適用できる。

表現8種類の比較には二標本比率検定を使い、Benjamini-Hochberg法でFDRを補正した。さらに、投稿時期の偏りを少し抑えるため、暦月 × PT曜日 × PT 3時間帯の層内でリスク差を計算し、サンプル数に応じて加重した。

PYTHON
def stratified_risk_difference(rows, predicate):
    strata = defaultdict(list)
    for row in rows:
        key = (row["month"], row["ptWeekday"], row["ptHour"] // 3)
        strata[key].append(row)

    numerator = denominator = 0.0
    for values in strata.values():
        exposed = [r for r in values if predicate(r)]
        control = [r for r in values if not predicate(r)]
        if not exposed or not control:
            continue
        weight = len(exposed) * len(control) / len(values)
        difference = mean_success(exposed) - mean_success(control)
        numerator += weight * difference
        denominator += weight
    return numerator / denominator

完全な取得・分析コードと固定データは、記事上部の「検証済み分析」からダウンロードできる。外部パッケージは使わず、Python 3.11以降の標準ライブラリだけで再実行できるようにした。

発見1:短いタイトルほど到達率は高かった

タイトル長別の10点到達率と95%信頼区間
Show HNのタイトル長別10点到達率

Show HN: を除いたタイトルを文字数で4群に分けた。29文字以下は2,750件で、10点到達率は 10.04%。 30〜49文字は9.15%、50〜69文字は8.02%、70文字以上は7.66%だった。

タイトル長件数10点到達率95%信頼区間時間層別後の差
29文字以下2,75010.04%8.97〜11.22%+1.36 pt
30〜49文字10,3109.15%8.61〜9.72%+0.82 pt
50〜69文字24,4768.02%7.69〜8.37%-0.68 pt
70文字以上4,2957.66%6.90〜8.49%-0.76 pt

ここで「30文字未満に削れば票が増える」と結論づけるのは早い。短いタイトルで説明できるプロダクトは、そもそも理解しやすい可能性がある。強いブランド名を持つ投稿、説明不要の開発者ツール、既に外部で知られたプロジェクトも短くなりやすい。見えているのは、短さそのものではなく、短く表現できる明瞭さかもしれない。

発見2:「AI」は多いが、10点到達率は低い

タイトル表現ごとの時間層別調整差
Show HNのタイトル表現と10点到達率の調整差

表現ごとの結果は、2026年らしいが単純ではなかった。

タイトル表現件数10点到達率時間層別後の差FDR補正p値
browser / WASM系1,38511.84%+3.51 pt0.000007
Open sourceを明記2,23410.74%+2.56 pt0.000077
数字を含む6,5749.89%+1.97 pt0.000007
I built / madeで開始2,5088.81%+0.14 pt0.497872
local / privacy系2,4138.08%-0.28 pt0.569009
freeを明記1,4476.29%-2.06 pt0.005282
AI / LLMを明記10,0165.65%-3.43 pt< 0.000001

「Open source」を明記した群は、時間層別後でも +2.56ポイントだった。 AI / LLM群は全投稿の約24%を占める一方、10点到達率は非AI群の9.26%に対して5.65%である。

考えられる説明は少なくとも4つある。

  • AIという語が増え、目新しさとして機能しにくくなった
  • AI群には試作品や薄いラッパーも多く、分布の中身が違う
  • AIであることより、何ができるかを前に出した強い投稿がAI群へ分類されない
  • HN読者の選好が、ブラウザ実行・低レイヤー・公開コードなど特定の技術へ偏っている

今回のデータだけでは、この4つを分離できない。言えるのは、AIというラベルが高反応の代理変数にはなっていないことまでだ。

発見3:GitHub等への直リンク群は9.78%

リンク種別にも差があった。GitHub、GitLab、Codebergへの直リンク14,489件は10点到達率 9.78%だった。 独自・外部ドメイン24,692件は7.82%、URLなし2,650件は6.19%である。

リンク種別件数10点到達率時間層別後の差
GitHub等コードホスト14,4899.78%+2.28 pt
独自・外部ドメイン24,6927.82%-1.60 pt
URLなし2,6506.19%-2.19 pt

これも「独自サイトをやめてGitHubへ貼ればよい」という話ではない。公開コードに直結するプロジェクトと、サインアップが必要なSaaSでは対象が違う。むしろ、HNでは中身をすぐ検証できることが歓迎される、という仮説を次に検証する材料になる。

投稿者が使える実務的な読み方

この分析からタイトルの必勝法を作ることはできない。それでも、投稿前レビューの問いは改善できる。

  1. AI を外しても、何が新しいか一文で伝わるか
  2. 50文字以上を使っているのは、価値ではなく機能を列挙しているからではないか
  3. open source と書くなら、クリック直後にコードと再現手順を確認できるか
  4. browser / WASM のような技術語は、本当の差別化要因として使っているか
  5. 独自サイトでも、ログイン前にデモ・コード・結果を検証できるか

数字はテンプレートではなく、曖昧な説明を発見する診断材料として使うのがよい。

再現方法

データ取得と分析は分離した。再取得するとポイントが変動する可能性があるため、記事の数値はSHA-256で固定したスナップショットに対応している。

BASH
cd ops/articles/show-hn-trend-2026
python3 evidence/fetch.py --window-days 3
python3 evidence/analyze.py
shasum -a 256 evidence/data/*.jsonl.gz evidence/results.json

fetch.py は各取得窓が1,000件へ到達すると失敗する。API上限で一部が欠けたまま成功扱いにしないためである。analyze.pyresults.json、3つのCSV、2つのSVGを生成する。記事内の主要数値は evidence/manifest.json のclaim IDと results.json のパスで対応づけ、ビルド時に一致を検査している。

限界

  • 観察研究: 表現をランダムに割り付けた実験ではなく、因果関係は示せない
  • ポイントのスナップショット: Algoliaのポイントは取得後に変わり得る。この記事は2026年7月15日取得分に固定している
  • 分類の粗さ: 正規表現による複数ラベルで、意味理解はしていない。例えば private beta もprivacy系に入る可能性がある
  • 未調整の交絡: 投稿者、本文、初期コメント、デモ品質、過去の知名度などは含めていない
  • 10点という閾値: 実務上わかりやすい基準として選んだが、50点到達や連続スコアでは順位が変わる可能性がある
  • APIの収録仕様: Hacker News本体の完全な履歴監査ではなく、Algolia HN Search APIが show_hn として返したレコードの分析である

まとめ

  • 1年間のShow HN 41,831件を、上限検知付きで取得し直した
  • 全体の10点到達率は8.39%、AI / LLM明記群は5.65%
  • browser / WASM系は11.84%で、時間層別後も+3.51ポイント
  • 29文字以下のタイトルは10.04%だったが、短さの因果効果とは言えない
  • GitHub等コードホスト直リンク群は9.78%。検証しやすさが一つの仮説になる
  • すべての主要数値、固定データ、Python、CSV、SVGを記事と同時に公開する

次に必要なのは「AIという語を消す」小手先の最適化ではない。本文、デモ有無、リポジトリのREADME品質まで含め、どこで反応差が生まれているかを段階的に分解することだ。

参考・データ出典

次の分析も検証可能な形で

新しい記事は、データ取得・Python・結果・限界の確認が終わったものだけ公開します。

Trendiumo Research
公開データを実行可能なPythonと証拠マニフェスト付きで検証する、Trendiumoのリサーチ編集部。