mcpField
S
show-hn-writer

show-hn-writer

github.com/varnan-techマーケティング・グロース68744 回インストール2 週間前に更新
リポジトリ

show-hn-writer について

show-hn-writerは、Hacker News投稿のタイトルと、必要に応じて本文を作成するスキルです。上位250件の投稿から得た傾向を用い、リーチや議論などの目的に合わせて案を調整します。

主な機能

  1. 01タイトル案を3種類作成
  2. 02通常、Show HN、Ask HN、Tell HNの形式を提案
  3. 03観察された投稿に基づく長さと文体の指針
  4. 04技術的な説明に価値がある場合のみ本文を作成
  5. 05最近のHN投稿を取得して参考にできる

活用シーン

  1. 01リリースやプロジェクトのHacker News投稿の準備
  2. 02リーチや議論に合わせたタイトル表現の選択
  3. 03最近のHN投稿に類似投稿がないか確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/varnan-tech/opendirectory --skill show-hn-writer

インストール後、Claude Code で/show-hn-writerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.env.example
README.md
evals/
evals.json
references/
hn-rules.md
title-formulas.md

詳細

Show HN Writer — データに基づくエディション

このスキルは、実際に上位にランクインした250件の投稿から抽出したパターンを使って、HN投稿の下書きを作成します。 以下のルールはすべて、慣例ではなく観測データに基づいています。


データが示すこと(何かを書く前に理解してください)

以下は、2026年4月18日にスクレイピングした、HNで上位にランクインした250件の投稿から得られた知見です。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:」を使ってください。必ず、接頭辞のないタイトル案も提示してください。

一人称のタイトルは、匿名的な文言よりも高い成果を上げます。 一人称(「I…」「My…」「We…」):平均291ポイント(n=9)。 通常の文言:平均186ポイント(n=126)。 作り手の視点がストーリーの一部なら、それを先頭に持ってきてください。

疑問形は、賛成票よりコメントを集めます。 疑問形のタイトルは、平均コメント数対スコア比が1.0倍を超えます。スコアを最大化するより、議論を促すのに適しています。書き始める前に、ユーザーがどちらを重視するか尋ねてください。

一貫して高い成果を上げているテーマ:

  • セキュリティ/バックドア/情報漏えいのストーリー:平均308ポイント
  • プライバシー/監視/データに関するストーリー:平均282ポイント
  • AI/LLMのリリース:平均266ポイント(42件で、最多のカテゴリー)
  • オープンソースのリリース:平均485ポイント(サンプル数は少ないものの、強い傾向)

最も高いスコアを獲得したタイトルには、共通点が1つあります。トピックではなく、ストーリーになっていることです。 「誰かがWordPressプラグインを30個買い、そのすべてにバックドアを仕込んだ」— 1192ポイント。 「Googleは私との約束を破り、ICEが私のデータを持つことになった」— 1688ポイント。 トピックは「WordPressプラグインのセキュリティ」です。ストーリーには、行為者、行動、そして利害が含まれます。


ステップ1:何よりも先に、ユーザーに質問を1つする

下書きを作る前に、次のように尋ねてください。

「簡単な質問が2つあります。

  1. スコア(リーチ)とコメント(議論)のどちらを重視しますか?
  2. プロジェクトは何をするものですか?形容詞を使わず、技術的に一文で説明してください。」

両方の回答を得るまで、先に進まないでください。


ステップ2:適切な投稿形式を決める

プロジェクトと目標に基づいて、使用する形式を決めてください。

通常のタイトル(デフォルトとして推奨) 接頭辞は付けません。何なのか、何が起きたのかだけを書きます。平均スコアが最も高い形式です。 使用する場面:リリース、記事、ツール、イベントを共有するとき。

Show HN: の接頭辞(控えめに使用) 使用するのは、プロジェクトが動作するデモであり、作り手が質問に回答でき、技術的な実装が興味を引くポイントである場合に限ります。 平均スコアは低い(94)ものの、プロジェクトが本当に斬新なら、信頼性を示すことができます。 比較できるよう、接頭辞のないタイトル案も必ず作成してください。

Ask HN: の接頭辞 目的が宣伝ではなく議論である場合に使用します。平均エンゲージメント比は1.0倍超です。 「Xを使っている人はいますか?」や「Yをするべきでしょうか?」といった投稿に最適です。

Tell HN: の接頭辞 内部告発、説明責任、情報開示に使います。データポイントは1件で、819ポイントです。 投稿が事実に基づき、検証可能で、作り手の名前が明示されている場合に限り使用してください。


ステップ 3:タイトルを作成する

投稿のすべてはタイトルです。 本文は任意と考えてください。

データから導かれたルール:

  • 40 文字未満を目指します。20 文字超過するごとに、平均スコアが約 30 ポイント下がります。
  • カテゴリーではなく、ストーリーを書きます。名詞句よりも、行為者+行動+ stakes(何が懸かっているか)のほうが効果的です。
  • 一人称(「私は…」)は、作り手の視点が重要な場合、単なる説明と比べて平均約 100 ポイント加算されます。
  • マーケティング用の形容詞は使いません。「高速」「シンプル」「強力」「軽量」は、文字どおりの仕様(例:「35B-A3B」は仕様、「強力」は仕様ではありません)でない限り使いません。
  • 一般性より具体性を優先します。「人気の CMS プラグイン」より「30 個の WordPress プラグイン」のほうが効果的です。
  • 角括弧内の年は、今も読む価値のある定番記事であることを示します:(2008)、(1956)。古くても価値が保たれているコンテンツへのリンクに使います。
  • サブタイトル形式には en dash(–)を使います:「製品名 – その機能」。ハイフン(-)は使いません。

3 つの案を作成します:

  1. 可能な限り短く(35 文字未満を目標) — 不要なものをすべて削ります
  2. ストーリー重視 — 行為者+行動+何が懸かっているか
  3. 技術重視 — 興味深い技術的判断を先に示します

次に長さを確認します。それぞれの文字数を数え、60 文字を超えるものには印を付けます。


ステップ 4:本文を書くかどうかを決める

技術的な実装に、タイトルには収まらず、HN のエンジニアが本当に興味を持つような詳細があるか、自問してください。

ある場合は、本文を書きます(ステップ 5 を参照)。 ない場合は、タイトルだけで終わりにします。内容を水増しした本文より、本文がないほうがよいです。

データによると、本文を書いてもスコアは上がりません。本文を書く唯一の理由は、実装がエンジニアに「これはどう動くの?」と尋ねさせるほど興味深く、その答えをあらかじめ伝えておきたい場合です。


ステップ 5:本文を書く(ステップ 4 で書くと決めた場合のみ)

構成 — 簡潔にまとめます:

1 行目: 1 文で、何を作ったのか、そしてなぜ作ったのかを書きます。一人称で書きます。 「X をご紹介します。」ではありません。「X は、〜するツールです。」でもありません。ただ「Y のために X を作りました。」と書きます。

2〜4 行目: 本当の理由を書きます。正直に、具体的に。自分自身が直面した問題でしたか?仕事で困っていたことですか?好奇心からですか?「〜にうんざりしていました」は、「開発者はしばしば〜に苦労します」よりも適切です。作り手自身の声が大切です。

5〜8 行目: 実際の仕組みを書きます。HN の読者が知りたいのはここです。 具体的な技術の選択肢を挙げます。どのようなトレードオフを選び、その理由は何かを述べます。興味深い技術的判断を 1 つ示すほうが、機能の一覧を並べるより価値があります。

9 行目: 現在の状態を 1 文で示します。オープンソースですか?無料ですか?アルファ版ですか?個人開発ですか?どのくらいの期間取り組んでいますか?

10 行目: フィードバックや質問を歓迎する締めの文を 1 つ書きます。 「実装に関する質問には喜んでお答えします。」「批判も歓迎します。」 アップボート、シェア、登録を求めてはいけません。

厳守するルール:

  • 150〜300 語。通常は 200 語未満が望ましいです。
  • 全体を通して一人称で書きます。
  • 箇条書きにしません。見出しを付けません。太字を使いません。
  • 本文にリンクを入れません。URL は投稿欄に記入します。
  • 次のようなマーケティング用語は使いません:画期的、革命的、強力、堅牢、シームレス、革新的、業界最高、効率化する、活用する、変革する、最先端。

ステップ 6:提示する前にセルフチェックする

次のリストを確認します。出力前に、条件を満たしていない箇所を修正します。

タイトル:

  • 60 文字未満(数えて確認)
  • マーケティング用の形容詞がない
  • ストーリーになっているか、それとも話題の説明か?(ストーリーのほうが効果的)
  • 作り手の視点が加わる場合は一人称になっている
  • 感嘆符がない

本文(書いた場合):

  • 「私は…を作りました」または「過去 N か月間…」で始まっている
  • 具体的な技術名またはアーキテクチャ上の判断が少なくとも 1 つ含まれている
  • 300 語未満
  • リンクがない
  • 行動を促す呼びかけではなく、フィードバックを歓迎する言葉で締めくくっている
  • マーケティング用語が一切ない(ステップ 5 のリストを確認)

投稿の種類:

  • Show HN の接頭辞を使う場合、接頭辞なしのタイトル案も作成している
  • コメントが目的の場合、質問形式または意見が分かれるような切り口になっている
  • スコアが目的の場合、質問ではなく断定文になっている

ステップ 7:出力を提示する

次の形式を厳守します。前後に説明を付けません。

## HN Post

### Recommended title
[title — the shortest, strongest variant]

### Alternative titles
1. [variant 2]
2. [variant 3]

---

### Body
[body text, or "Not recommended — title is sufficient." if Step 4 said no body]

---

### Notes
- Goal: [score / comments] — based on user's answer in Step 1
- Post type used: [plain / Show HN / Ask HN / Tell HN]
- Title length: [N chars]
- Best time to post: Tuesday–Thursday, 8–10 AM US Eastern
- After posting: respond to every comment in the first two hours
- Do not share the link elsewhere for 24 hours — HN penalises vote rings

ステップ 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]

# Filter by keyword relevant to the user's project
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 に入った実際の投稿です。タイトルのパターンを参考にしてください。

スコアタイトル
1941Claude Opus 4.7
1688Google broke its promise to me – now ICE has my data
1244Qwen3.6-35B-A3B: Agentic coding power, now open to all
1192Someone bought 30 WordPress plugins and planted a backdoor in all of them
1141DaVinci Resolve – Photo
990Codex for almost everything
982Stop Flock
909A new spam policy for "back button hijacking"
893GitHub Stacked PRs
819Tell HN: Fiverr left customer files public and searchable
668I wrote to Flock's privacy contact to opt out of their domestic spying program
619Measuring Claude 4.7's tokenizer costs
561God sleeps in the minerals
503Want 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?

コメント