Show HN 撰写助手 — 数据驱动版
本技能根据从250个真实高排名HN帖子中提取的模式来草拟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)。 如果构建者的视角是故事的一部分,就用它开头。
问题型标题更能引发评论而非点赞。 问题型标题的平均评论/分数比例高于1.0倍。最适合讨论,而非追求高分。写作前先询问用户他们优化的是哪个目标。
持续表现优异的主题:
- 安全/后门/入侵事件:平均308分
- 隐私/监控/数据故事:平均282分
- AI/LLM发布:平均266分(42个帖子——最大类别)
- 开源发布:平均485分(样本量小,但信号强)
得分最高的标题有一个共同特征:它们是故事,而非主题。 “有人购买了30个WordPress插件并在其中全部植入了后门”——1192分。 “Google违背了对我的承诺——现在ICE掌握着我的数据”——1688分。 主题是“WordPress插件安全”。故事则有行动者、行动和利害关系。
第一步:在草拟之前先问用户一个问题
在草拟之前,先提问:
“两个小问题:
- 您优化的是分数(影响力)还是评论(讨论)?
- 您的项目是做什么的——用一句话技术性地描述,不加形容词。”
在得到两个答案之前,不要继续。
第二步:确定正确的发帖类型
根据项目和目标,决定使用哪种格式:
纯标题(推荐默认) 无前缀。直接说明是什么或发生了什么。平均分最高。 适用场景:分享发布、文章、工具或事件。
Show HN: 前缀(谨慎使用) 仅在以下情况使用:项目是可工作的演示,构建者在线并愿意回答问题,且技术实现是亮点。 平均分较低(94分),但当项目确实新颖时,它能传达真实性。 务必同时草拟一个纯标题的备选方案以供比较。
Ask HN: 前缀 适用场景:目标是引发讨论而非推广。平均互动比例 > 1.0倍。 最适合“谁在用X?”或“我该做Y吗?”这类帖子。
Tell HN: 前缀 适用于揭发、问责或披露。有一个数据点为819分。 仅在帖子内容真实、可验证且列明构建者时使用。
第三步:草拟标题
标题就是整个帖子。 把正文视为可选项。
基于数据的规则:
- 目标:40字符以内。每超出20字符,平均分大约下降30分。
- 写故事,而非类别。行动者+行动+利害关系优于名词短语。
- 当构建者的视角很重要时,第一人称(“我…”)相比普通陈述平均增加约100分。
- 无营销形容词。除非是字面规格(例如“35B-A3B”是规格,“强大”则不是),否则不要用“快”、“简单”、“强大”、“轻量”等词。
- 具体优于泛化。“30个WordPress插件”优于“流行的CMS插件”。
- 方括号内的年份代表经典之作:(2008)、(1956)。用于链接经得起时间考验的旧内容时使用。
- 使用短破折号(–)表示副标题格式:“产品名称 – 功能”。不要用连字符(-)。
草拟三个变体:
- 尽量简短(目标35字符以内)——去掉所有非必要内容
- 故事角度——行动者+行动+利害关系
- 技术角度——从最有趣的工程决策入手
然后应用长度测试:计算每个变体的字符数。标记任何超过60字符的变体。
第四步:决定是否写正文
问自己:技术实现是否包含无法在标题中容纳、且HN工程师会真正觉得有趣的细节?
如果是:写正文(见第五步)。 如果否:就在标题处停止。没有正文比有填充内容的正文更好。
数据显示正文不会提高分数。写正文的唯一理由是,实现部分足够有趣,以至于工程师会问“这是怎么工作的?”并且你想预先回答这个问题。
第五步:写正文(仅当第四步答案为是)
结构——保持紧凑:
**第一行:**一句话。你做了什么以及为什么。使用第一人称。 不要用“介绍X。”不要用“X是一个工具,它…”。只需:“我构建了X,因为Y。”
**第2–4行:**真正的原因。诚实。具体。是你自己遇到的问题吗?工作中令人沮丧的事情?好奇心?“我因为…而烦恼”优于“开发者常常面临…”。构建者的声音是关键。
**第5–8行:**实际工作原理。这是HN用户会仔细阅读的部分。 指出具体的技术选择。说明你做出的权衡及其原因。一个有趣的工程决策胜过一长串功能列表。
**第9行:**用一句话描述当前状态。开源?免费?Alpha版?单人项目?你工作了多长时间。
**第10行:**一句结束语,邀请反馈或提问。 “乐意回答关于实现的任何问题。”/“欢迎批评。” 切勿要求点赞、分享或注册。
硬性规则:
- 150–300词。通常200词以内更好。
- 全篇使用第一人称。
- 无项目符号。无标题。无加粗。
- 正文中无链接。URL放在提交字段中。
- 无营销词汇:game-changing, revolutionary, powerful, robust, seamless, innovative, best-in-class, streamline, leverage, transform, cutting-edge。
第六步:呈现前自我检查
逐项检查列表。在输出前修复任何不合格项。
标题:
- 60字符以内(数一下)
- 无营销形容词
- 是故事还是主题?(故事 = 更好)
- 如果构建者的视角能增加价值,则使用第一人称
- 无感叹号
正文(如果写了):
- 以“我构建了…”或“在过去的N个月里…”开头
- 至少包含一个具体的技术名称或架构决策
- 300词以内
- 无链接
- 以反馈邀请结尾,而非行动号召
- 零个营销词汇(对照第五步中的列表检查)
发帖类型:
- 如果使用Show HN前缀:是否也草拟了纯标题的备选方案?
- 如果目标是评论:是问题型还是对立型框架?
- 如果目标是分数:是陈述句,而非疑问句?
第七步:呈现输出
严格按以下格式输出。前后无任何额外说明。
## HN 帖子
### 推荐标题
[标题 — 最短、最强的变体]
### 备选标题
1. [变体 2]
2. [变体 3]
---
### 正文
[正文文本,如果第四步答案为否,则写“不推荐 — 标题已足够。”]
---
### 说明
- 目标:[分数 / 评论] — 基于用户在第一步的回答
- 使用的发帖类型:[plain / Show HN / Ask HN / Tell HN]
- 标题长度:[N字符]
- 最佳发帖时间:周二至周四,美国东部时间上午8–10点
- 发帖后:在前两小时内回复每一条评论
- 24小时内不要在其他地方分享链接——HN会惩罚投票圈子
第八步:可选 — 抓取当前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}分] {title} — {by}")
print(f"\n匹配总数:{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?