关于 show-hn-writer
show-hn-writer 是用于撰写 Hacker News 投稿标题及必要时正文的技能。它依据对 250 篇高排名帖子的模式总结,并按扩大触达或促进讨论等目标调整草稿。
主要功能
- 01拟定三个标题版本
- 02提供普通、Show HN、Ask HN 或 Tell HN 格式
- 03依据观察到的帖子提供标题长度和风格建议
- 04仅在技术细节值得说明时撰写正文
- 05可抓取近期 HN 热帖作为参考
适用场景
- 01为产品发布或项目准备 Hacker News 投稿
- 02按触达或讨论目标选择标题角度
- 03检查近期 HN 帖子是否有相似投稿
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ varnan-tech/ opendirectory --skill show-hn-writer安装后在 Claude Code 中输入/show-hn-writer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.exampleREADME.mdevals/evals.jsonreferences/hn-rules.mdtitle-formulas.md详细介绍
Show HN 写作指南 — 数据支持版
这项技能会根据从 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)。 如果开发者的视角是故事的一部分,就把它放在开头。
疑问句带来的评论多于点赞。 疑问句标题的评论数与得分之比平均超过 1.0×。这类标题适合引发讨论, 而非单纯追求得分。撰写前,先问用户希望优化哪一项。
表现持续突出的主题:
- 安全 / 后门 / 泄露事件:平均 308 分
- 隐私 / 监控 / 数据相关:平均 282 分
- AI / LLM 发布:平均 266 分(42 篇,是数量最多的类别)
- 开源发布:平均 485 分(样本量较小,但信号明显)
得分最高的标题有一个共同点:它们讲的是故事,而不是主题。 “有人买下 30 个 WordPress 插件,并在每个插件里植入了后门”——1192 分。 “Google 对我食言了——现在 ICE 拿到了我的数据”——1688 分。 主题是“WordPress 插件安全”。故事则包含一个行动者、一项行动和利害关系。
第 1 步:先问用户一个问题
开始起草前,先问:
“两个简短的问题:
- 你希望优化的是得分(触达范围)还是评论(讨论)?
- 这个项目是做什么的——用一句话说明,讲技术,不加形容词。”
在得到两个答案之前,不要继续。
第 2 步:确定合适的帖子类型
根据项目和目标,决定使用哪种格式:
普通标题(推荐默认选项) 不加前缀。直接说明它是什么或发生了什么。平均得分最高。 适用于:分享新版本、文章、工具或活动。
Show HN:前缀(谨慎使用) 仅适用于:项目是可运行的演示,开发者在场回答问题,且技术实现本身就是有趣之处。 平均得分较低(94),但项目确实新颖时,这个前缀能体现真诚。 同时务必起草一个不带前缀的标题备选,以便比较。
Ask HN:前缀 适用于:目标是讨论,而非推广。平均互动比率 > 1.0×。 最适合“谁在用 X?”或“我该不该做 Y?”这类帖子。
Tell HN:前缀 用于举报不当行为、追责或披露信息。只有一个数据点,得分为 819 分。 仅在帖子内容属实、可核实且开发者实名时使用。
步骤 3:拟定标题
标题就是整篇帖子。 正文可以省略。
从数据中得出的规则:
- 目标是少于 40 个字符。每超出 20 个字符,平均分大约会少 30 分。
- 写一个故事,而不是一个类别。人物 + 行动 + 利害关系,胜过名词短语。
- 当构建者视角很重要时,第一人称(“我……”)相比普通陈述,平均可增加约 100 分。
- 不要使用营销形容词。除非是字面意义上的规格(例如,“35B-A3B” 是规格,“强大”则不是),否则不要用“快速”“简单”“强大”“轻量”之类的词。
- 具体胜过笼统。“30 个 WordPress 插件”胜过“热门 CMS 插件”。
- 标题中括起年份表示内容经典、值得一读:(2008)、(1956)。链接到经得起时间考验的旧内容时使用。
- 副标题格式使用 en dash(–):“产品名称 – 功能介绍”。不要用连字符(-)。
拟定三个版本:
- 尽可能短(目标少于 35 个字符)——删去所有非必要内容
- 故事角度——人物 + 行动 + 利害关系
- 技术角度——以有趣的工程决策开头
然后进行长度测试:逐个统计字符数。超过 60 个字符的标出来。
步骤 4:决定是否撰写正文
问问自己:技术实现中是否有无法写进标题、但 HN 工程师会觉得真正有趣的细节?
如果有:撰写正文(见步骤 5)。 如果没有:标题写到这里就好。正文不写,胜过写一篇凑数的正文。
数据显示,正文不会提高分数。撰写正文的唯一理由,是实现足够有趣,能让工程师问“这是怎么实现的?”,而你想提前回答这个问题。
步骤 5:撰写正文(仅当步骤 4 的结论为是时)
结构——保持精炼:
第 1 行: 一句话。你构建了什么,以及原因。用第一人称。 不要写“隆重介绍 X。”也不要写“X 是一款……工具。”只写:“我构建 X 是因为 Y。”
第 2–4 行: 真正的原因。诚恳、具体。这是你自己遇到的问题吗? 工作中让人沮丧的事?一时好奇?“我很恼火……”胜过“开发者经常难以……”。重点是构建者自己的表达。
第 5–8 行: 它实际如何运作。这是 HN 读者关心的内容。 说出具体的技术选择。说明你做了哪些权衡,以及原因。 一个有趣的工程决策,胜过一串功能列表。
第 9 行: 用一句话说明当前状态。开源吗?免费吗?处于 Alpha 阶段吗?是独自开发吗? 你已经投入多长时间。
第 10 行: 用一句收尾,邀请反馈或提问。 “欢迎提问实现细节。”/“欢迎批评。” 绝不要请求投票、分享或注册。
硬性规则:
- 150–300 个单词。通常少于 200 个更好。
- 全文使用第一人称。
- 不要使用项目符号。不要添加标题。不要加粗。
- 正文中不要放链接。URL 放在提交字段中。
- 不要使用营销词:颠覆性、革命性、强大、稳健、无缝、创新、同类最佳、简化流程、利用、变革、尖端。
步骤 6:提交前自检
逐项检查此列表。输出前修正所有不符合项。
标题:
- 少于 60 个字符(统计字符数)
- 不含营销形容词
- 是一个故事还是一个主题?(故事更好)
- 如果构建者的视角能带来价值,则使用第一人称
- 不含感叹号
正文(如果撰写):
- 以“I built……”或“For the past N months……”开头
- 至少包含一个具体的技术名称或架构决策
- 少于 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 的真实帖子。请研究这些标题模式。
| 分数 | 标题 |
|---|---|
| 1941 | Claude Opus 4.7 |
| 1688 | Google 对我食言了——现在 ICE 掌握了我的数据 |
| 1244 | Qwen3.6-35B-A3B:Agentic 编码能力,如今人人可用 |
| 1192 | 有人买下了 30 个 WordPress 插件,并在所有插件中植入了后门 |
| 1141 | DaVinci Resolve – Photo |
| 990 | 几乎所有事情都能用 Codex |
| 982 | 停止使用 Flock |
| 909 | 针对“后退按钮劫持”的新垃圾信息政策 |
| 893 | GitHub 堆叠式 PR |
| 819 | 告诉 HN:Fiverr 将客户文件公开,且可供搜索 |
| 668 | 我写信给 Flock 的隐私联系人,要求退出其国内监控计划 |
| 619 | 测量 Claude 4.7 的 tokenizer 成本 |
| 561 | 上帝沉睡于矿物之中 |
| 503 | 想写编译器?读这两篇论文就行(2008) |
Show HN 中表现最好的标题(按分数排序): 341 | Show HN:Smol machines——冷启动不到 1 秒、可移植的虚拟机 199 | Show HN:PanicLock——合上 MacBook 上盖即可禁用 TouchID → 使用密码解锁 187 | Show HN:实时追踪美国上市公司的每次 CEO 和 CFO 变更,数据来自 SEC 177 | Show HN:我做了一个可处理不相交区间集合的计算器 152 | Show HN:MacMind——在 1989 年的 Macintosh 上运行的 HyperCard Transformer 神经网络
评论数与分数比最高的帖子(适合优化讨论度): 1.91× | IPv6 为什么这么复杂? 1.43× | Ask HN:一个人创业是不可能的吗? 1.20× | 俄亥俄州监狱的囚犯造了电脑,并把它们藏在天花板里 1.13× | Ask HN:有人在用 OpenClaw 吗? 1.05× | 一切事物的未来都是谎言,我猜:我们该何去何从?