Show HN Writer — データ駆動エディション
このスキルは、実際のトップランキング投稿250件から抽出されたパターンを使用してHN投稿をドラフトします。 以下のすべてのルールは、観測されたデータに基づいており、慣習に従うものではありません。
データが示すこと(何かを書く前にこれを内面化してください)
これらは、2026年4月18日にスクレイピングされた250件のトップHN投稿からの発見です。これらはHN執筆に関する受け継がれてきた知恵をすべて無効にします。
タイトルの長さは、スコアの単一最も強い予測因子です。
- 40文字未満:平均248点(n=82)
- 40~59文字:平均192点(n=68)
- 60~79文字:平均150点(n=91)
- 80文字以上:平均131点(n=9) デフォルトの目標:40文字未満。ハードリミット:60文字。
本文テキストはスコアに影響しません。 90%の投稿に本文はありませんでした。本文ありの平均:189。本文なしの平均:193。統計的に同一です。本文を書く価値があるのは、タイトルに収まらない、本当に興味深い技術的詳細がある場合のみです。信用を補うために本文を書こうとしないでください。
Show HNプレフィックスはスコアを抑制します。 Show HN投稿の平均は94点だったのに対し、プレーンなステートメントは186点以上でした。このラベルは「自分のものについてフィードバックが欲しい」というシグナルを送り、より懐疑的な読み方を誘発します。プロジェクトが真に斬新な場合にのみ「Show HN:」を使用してください。常にプレーンタイトルの代替案も用意してください。
一人称のタイトルは匿名の声明文より優れています。 一人称(「私は…」、「私の…」、「私たちは…」):平均291点(n=9)。 プレーンなステートメント:平均186点(n=126)。 ビルダーの視点がストーリーの一部である場合は、それを先頭に持ってきてください。
質問は、アップvoteよりもコメントを生成します。 質問タイトルのコメント対スコアの平均比率は1.0倍を超えています。議論に最適であり、生のスコアには適していません。ユーザーがどちらを最適化しているのかを、書く前に尋ねてください。
一貫してパフォーマンスの高いテーマ:
- セキュリティ/バックドア/侵害ストーリー:平均308点
- プライバシー/監視/データストーリー:平均282点
- AI/LLMリリース:平均266点(42投稿 - 最大カテゴリ)
- オープンソースリリース:平均485点(少数ながら強いシグナル)
最高得点のタイトルには共通点があります:それらは話題ではなく、ストーリーです。 「誰かが30のWordPressプラグインを購入し、それらすべてにバックドアを仕込んだ」— 1192点。 「Googleは私との約束を破りました – 今やICEが私のデータを持っています」— 1688点。 話題は「WordPressプラグインのセキュリティ」です。ストーリーには、行為者、行動、そして利害関係があります。
ステップ 1: 何よりも先にユーザーに1つの質問をする
ドラフトする前に、次のように尋ねてください。
「2つ質問があります:
- スコア(リーチ)とコメント(議論)のどちらを最適化していますか?
- プロジェクトは何をしますか? — 一言で、技術的に、形容詞なしで。」
両方の回答を得るまで先に進まないでください。
ステップ 2: 適切な投稿タイプを決定する
プロジェクトと目標に基づいて、どのフォーマットを使用するかを決定します。
プレーンタイトル(推奨デフォルト) プレフィックスなし。それが何であるか、または何が起こったかだけ。最高の平均スコア。 使用するタイミング:リリース、記事、ツール、またはイベントを共有する場合。
Show HN: プレフィックス(控えめに使用) 以下の場合のみ使用:プロジェクトが動作するデモであり、ビルダーが質問に答えるために存在し、技術的な実装が興味深い部分である場合。 平均スコアは低い(94)が、プロジェクトが真に斬新な場合に信頼性を示します。 比較のために、常にプレーンタイトルの代替案もドラフトしてください。
Ask HN: プレフィックス 使用するタイミング:目標がプロモーションではなく議論である場合。平均エンゲージメント率は1.0倍以上。 「Xを使っている人は?」や「Yをすべきですか?」といった投稿に最適。
Tell HN: プレフィックス 内部告発、説明責任、または情報開示。1つのデータポイントで819点。 投稿が事実に基づき、検証可能で、ビルダーが名前を明かしている場合にのみ使用。
ステップ 3: タイトルをドラフトする
タイトルが投稿のすべてです。 本文はオプションとして扱ってください。
データから導き出されたルール:
- 40文字未満を目標にしてください。それを超える20文字ごとに、平均で約30ポイントのコストがかかります。
- カテゴリーではなく、ストーリーを書いてください。行為者+行動+利害関係は名詞句に勝ります。
- 一人称(「私は…」)は、ビルダーの視点が重要な場合、プレーンなステートメントと比較して平均約100ポイント追加されます。
- マーケティング用の形容詞は使わないでください。それが文字通りの仕様でない限り(例:「35B-A3B」は仕様、「強力」はそうではありません)、「高速」、「シンプル」、「強力」、「軽量」は使用しないでください。
- 具体性は一般性に勝ります。「30のWordPressプラグイン」は「人気のCMSプラグイン」よりも優れています。
- 角括弧内の年は、読む価値のある古典を示します:(2008)、(1956)。経年劣化していない古いコンテンツにリンクする場合に使用します。
- サブタイトル形式にはenダッシュ(–)を使用します:「製品名 – その機能」。ハイフン(-)ではありません。
3つのバリエーションをドラフトします:
- 可能な限り短く(35文字未満を目指す)— 本質的でないものをすべて削除
- ストーリーの角度 — 行為者+行動+利害関係
- 技術的な角度 — 興味深いエンジニアリング上の決定から始める
次に、長さテストを適用します:それぞれの文字数を数えます。60を超えるものにフラグを付けます。
ステップ 4: 本文を書くかどうかを決定する
自問自答してください:技術的な実装に、タイトルに収まらず、HNのエンジニアが本当に興味を持つであろう詳細がありますか?
はいの場合:本文を書きます(ステップ5を参照)。 いいえの場合:タイトルで止めます。本文がない方が、水増しされた本文より優れています。
データは、本文がスコアを上げないことを示しています。本文を書く唯一の理由は、実装が十分に興味深く、エンジニアが「これはどのように動作するのですか?」と尋ねるであろう場合に、その質問に先回りして答えるためです。
ステップ 5: 本文を書く(ステップ4が「はい」の場合のみ)
構造 — 簡潔に保ちます。
1行目: 1文。何を構築したか、そしてなぜか。一人称。 「Xを紹介します」ではありません。「Xは~するツールです」でもありません。「YだからXを構築しました」だけです。
2~4行目: 本当の理由。正直に。具体的に。それはあなた自身が直面した問題でしたか? 仕事での何かイライラすること? 好奇心? 「私は~にうんざりしていました…」は「開発者はよく~に苦労します…」よりも優れています。ビルダーの声が重要です。
5~8行目: それが実際にどのように機能するか。これがHNが読むものです。 具体的な技術選択を挙げてください。行ったトレードオフとその理由を述べてください。1つの興味深いエンジニアリング上の決定は、機能リストよりも価値があります。
9行目: 現在の状態を1文で。オープンソース? 無料? アルファ版? 個人開発? どのくらいの期間取り組んでいますか。
10行目: フィードバックや質問を招待する締めくくりの1文。 「実装に関するご質問があればお答えします。」 / 「批判歓迎します。」 アップvote、共有、サインアップを決して求めないでください。
厳格なルール:
- 150~300語。200語未満が通常はより良いです。
- 全体を通して一人称。
- 箇条書きなし。見出しなし。太字なし。
- 本文内にリンクなし。URLは送信フィールドに入力します。
- マーケティング用語なし:革新的、革命的、強力、堅牢、シームレス、革新的(innovative)、ベストインクラス、合理化、活用、変革、最先端。
ステップ 6: 提示前のセルフチェック
このリストを実行します。出力する前に、不合格のものを修正します。
タイトル:
- 60文字未満(文字数を数える)
- マーケティング用の形容詞がない
- ストーリーか話題か?(ストーリー=より良い)
- ビルダーの視点が何かを追加する場合は一人称
- 感嘆符なし
本文(書いた場合):
- 「私は~を構築しました…」または「過去Nヶ月間…」で始まる
- 少なくとも1つの具体的な技術名またはアーキテクチャ上の決定を含む
- 300語未満
- リンクなし
- 行動喚起ではなく、フィードバックの招待で締めくくる
- マーケティング用語ゼロ(ステップ5のリストを確認)
投稿タイプ:
- Show HNプレフィックスを使用する場合:プレーンタイトルの代替案もドラフトされていますか?
- 目標がコメントの場合:質問または分断を生むフレーミングですか?
- 目標がスコアの場合:質問ではなく、声明文ですか?
ステップ 7: 出力を提示する
以下の形式に正確に従ってください。前後にコメントを付けないでください。
## HN Post
### 推奨タイトル
[タイトル — 最も短く、最も強いバリエーション]
### 代替タイトル
1. [バリエーション2]
2. [バリエーション3]
---
### 本文
[本文テキスト、またはステップ4で「いいえ」と言った場合は「推奨されません — タイトルで十分です。」]
---
### 注意事項
- 目標:[スコア / コメント] — ステップ1でのユーザーの回答に基づく
- 使用した投稿タイプ:[Plain / Show HN / Ask HN / Tell HN]
- タイトルの長さ:[N文字]
- 最適な投稿時間:火曜日~木曜日、米国東部時間午前8時~10時
- 投稿後:最初の2時間はすべてのコメントに返信すること
- 他の場所で24時間はリンクを共有しないでください — HNは投票リングをペナルティします
ステップ 8: オプション — 現在のトップHN投稿をスクレイピングしてコンテキストを得る
ユーザーが最近類似の投稿が送信されていないか確認したい場合、または自分のカテゴリで現在何がパフォーマンスを発揮しているかを確認したい場合は、スクレイパーを実行します:
import requests
from concurrent.futures import ThreadPoolExecutor
HN_API = "https://hacker-news.firebaseio.com/v0"
def fetch_item(id_):
try:
r = requests.get(f"{HN_API}/item/{id_}.json", timeout=10)
return r.json() if r.ok else None
except Exception:
return None
ids = requests.get(f"{HN_API}/topstories.json").json()[:250]
with ThreadPoolExecutor(max_workers=20) as ex:
items = [i for i in ex.map(fetch_item, ids) if i]
# ユーザーのプロジェクトに関連するキーワードでフィルタリング
keyword = "YOUR_KEYWORD_HERE"
matches = [i for i in items if keyword.lower() in i.get("title","").lower()]
for i, item in enumerate(matches, 1):
score = item.get("score", 0)
title = item.get("title", "")
by = item.get("by", "")
print(f"{i:>2}. [{score:>4}pts] {title} — {by}")
print(f"\nTotal matching: {len(matches)}")
結果を使用して:
- 過去48時間にほぼ同一の投稿が提出されていないか確認する(重複を避ける)
- このカテゴリで現在どのタイトルパターンが着地しているかを確認する
- このトピック領域のスコアの下限を特定する
完全なスクレイパーを使用した場合、結果は自動的にhn_log.csvに追加されます。
参考:データセットから観測されたトップパフォーマー
これらはトップ250からの実際の投稿です。タイトルのパターンを研究してください。
| スコア | タイトル |
|---|---|
| 1941 | Claude Opus 4.7 |
| 1688 | Google broke its promise to me – now ICE has my data |
| 1244 | Qwen3.6-35B-A3B: Agentic coding power, now open to all |
| 1192 | Someone bought 30 WordPress plugins and planted a backdoor in all of them |
| 1141 | DaVinci Resolve – Photo |
| 990 | Codex for almost everything |
| 982 | Stop Flock |
| 909 | A new spam policy for "back button hijacking" |
| 893 | GitHub Stacked PRs |
| 819 | Tell HN: Fiverr left customer files public and searchable |
| 668 | I wrote to Flock's privacy contact to opt out of their domestic spying program |
| 619 | Measuring Claude 4.7's tokenizer costs |
| 561 | God sleeps in the minerals |
| 503 | Want to write a compiler? Just read these two papers (2008) |
最高のShow HNタイトル(スコア順): 341 | Show HN: Smol machines – subsecond coldstart, portable virtual machines 199 | Show HN: PanicLock – Close your MacBook lid disable TouchID → password unlock 187 | Show HN: Every CEO and CFO change at US public companies, live from SEC 177 | Show HN: I made a calculator that works over disjoint sets of intervals 152 | Show HN: MacMind – A transformer neural network in HyperCard on a 1989 Macintosh
最高のコメント対スコア比率(議論最適化投稿向け): 1.91× | Why is IPv6 so complicated? 1.43× | Ask HN: Building a solo business is impossible? 1.20× | Ohio prison inmates built computers and hid them in ceiling 1.13× | Ask HN: Who is using OpenClaw? 1.05× | The future of everything is lies, I guess: Where do we go from here?