writing-social-posts

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Writing social posts

撰写社交帖子

Posting about work. The steps below run for any post; By kind says what changes between a launch and a progress note. Render mechanics and layout live in
IMAGES.md
.
Start where the work is. Drafting from scratch runs 1→5. Ordering an existing thread starts at 2. Refining finished copy runs 3→5. Checking copy that is ready to go out is step 5 alone.
发布工作相关内容。以下步骤适用于所有帖子;【按类型区分](#按类型区分)部分说明了发布帖与进度更新帖之间的差异。排版机制与布局详情见
IMAGES.md
从工作本身出发。从零开始起草遵循步骤1→5;已有线程帖的编排从步骤2开始;优化已完成的文案遵循步骤3→5;检查待发布的文案仅需执行步骤5。

1. Find the exemplar post first

1. 先找到范例帖

Name a real post that already worked for something comparable, recent, from someone this audience respects. Copy its shape — post order, sentence lengths, where the link sits — and write your own words into it.
Ask the user for the exemplar post; they know whose posts land with this audience. Given a status URL, read the post with
curl -s "https://cdn.syndication.twimg.com/tweet-result?id=<POST_ID>&token=a"
x.com
itself is behind a login wall, and one call returns one post, so a thread needs every link.
Drafting from a blank page reliably produces copy that reads as generated. Drafting against a shape does not.
Done when you can point at a specific post and state in one line what structure you are borrowing.
找到一篇真实且效果良好的同类近期帖子,发帖人需是目标受众尊敬的对象。借鉴其结构——帖子顺序、句子长度、链接位置——并用自己的语言填充内容。
向用户索要范例帖;他们清楚哪些人的帖子能打动目标受众。 若提供了状态URL,可通过
curl -s "https://cdn.syndication.twimg.com/tweet-result?id=<POST_ID>&token=a"
读取帖子——
x.com
本身需要登录才能访问,且一次调用仅能返回一篇帖子,因此线程帖需要逐个链接获取内容。
从零开始起草的文案很容易显得生硬机械。而借鉴已有结构起草则不会。
完成标志:能够指出具体的范例帖,并能用一句话说明你借鉴了其何种结构。

2. One post, one job

2. 一篇帖子,一个目标

Name the single thing this post does before drafting it. Everything that does not serve that job is load, however true it is.
For a thread, that means one job per post, and the order is an objection ladder — each post answers the next objection the reader raises, in the order they raise it. The git-hunk debut, as a worked example:
#assetobjection
1command tablewhat even is this?
2demo videolooks like work
3before/after stillwhat did that run actually do?
4eval tabledoes it help?
5(none)how do I adopt it?
Lead with whatever a practitioner can get without pressing play. For a developer tool that is usually the command surface: it is self-evidently the pitch, and it is the post people screenshot.
Done when every post has one job you can state in a few words, and each post answers the objection the one before it raises.
在起草前明确这篇帖子的唯一目标。任何不服务于该目标的内容都是冗余信息,无论其真实性如何。
对于线程帖,意味着每篇帖子都有一个独立目标,且帖子顺序遵循异议阶梯——每篇帖子依次回答读者会提出的下一个异议。以git-hunk首次发布为例:
#素材异议
1命令表格这到底是什么?
2演示视频看起来很麻烦
3前后对比截图这个操作实际做了什么?
4评估表格它有用吗?
5(无)我该如何使用它?
优先展示从业者无需点击播放就能理解的内容。对于开发者工具,通常是命令界面:它本身就是最直观的卖点,也是用户会截图保存的部分。
完成标志:每篇帖子都能用几句话明确其目标,且每篇帖子都能回答前一篇帖子引发的异议。

3. Draft flat

3. 平铺式起草

One claim per sentence. State facts and let the reader supply the enthusiasm. The numbers carry the post; a setup line before them is load.
Done when no sentence needs a second read to find its claim, and cutting any remaining sentence would lose a fact.
每句表达一个观点。陈述事实,让读者自行体会其中的价值。数据是帖子的核心;数据前的铺垫性语句都是冗余信息。
完成标志:所有句子无需重读就能找到核心观点,且删除任何剩余句子都会丢失关键事实。

4. Refine against the tells

4. 针对典型问题优化

Run
/humanizer
first — it catches em dashes, rule-of-three, negative parallelism. Then hunt these, which survived it on a real draft:
tellbefore → after
rhetorical question answering itself"Does it hold up? Same agent, 8 tasks…" → "Here are the evaluation results. Same agent, 8 tasks…"
setup-then-reversal beat"You don't type these commands. I don't either." → "This is how I use it."
symmetric pair restating the image"Left is what sat in the working tree. Right is what got committed." → "The debug print stayed in the working tree. Everything else got committed."
meta commentary on the reader"the same run as a diff, for anyone who didn't press play" → cut the clause
explanatory tail"version-matched, so the agent always reads the current one" → "version-matched."
instructing the reader to work"The harness is checked in, so rerun it" → "The harness is in the repo."
overclaim"AI agents can't hand you reviewable commits" → "won't" — nothing stops them, they just avoid it
Three structural checks beyond the line-level tells:
  • Copy that narrates its own image is load. The image is labelled already, so the sentence carries the fact the picture proves but does not state.
  • A claim belongs in exactly one post. "You don't type any of it" landed in two replies before one got cut, then showed up twice again in the LinkedIn draft.
  • A fix propagates across platforms.
    can't
    won't
    was right on X and left the LinkedIn copy overclaiming the same fact for an hour.
Detector scores are noise on 60-word posts. Your own ear, read aloud, is the instrument.
Done when each post has been checked against every tell row and all three structural checks, one at a time.
先运行
/humanizer
工具——它能检测破折号、三重规则、否定平行结构等问题。然后排查以下在真实文案中逃过检测的典型问题:
典型问题修改前 → 修改后
自问自答的反问句"Does it hold up? Same agent, 8 tasks…" → "以下是评估结果。同一Agent,8项任务…"
先铺垫再反转的句式"You don't type these commands. I don't either." → "我是这样使用它的。"
重复图片内容的对称句"Left is what sat in the working tree. Right is what got committed." → "调试信息保留在工作区,其余内容均已提交。"
针对读者的元评论"the same run as a diff, for anyone who didn't press play" → 删除该从句
解释性补充语"version-matched, so the agent always reads the current one" → "版本匹配。"
要求读者操作的语句"The harness is checked in, so rerun it" → "测试框架已存入仓库。"
过度断言"AI agents can't hand you reviewable commits" → "won't" ——没有什么能阻止它们,只是它们不会这么做
除了逐句检查的典型问题,还有三项结构性检查:
  • 描述图片内容的文案是冗余信息。图片已有标注,因此文案应传达图片所证明但未明确说明的事实。
  • 一个观点应仅出现在一篇帖子中。"You don't type any of it"曾出现在两条回复中,后来删除了一条,但在LinkedIn的草稿中又重复出现了两次。
  • 修改需同步到所有平台。将
    can't
    改为
    won't
    在X平台是正确的,但LinkedIn的文案却因过度断言同一事实而持续了一小时。
检测分数对于60词左右的帖子毫无意义。你自己的耳朵——大声朗读——才是最好的检测工具。
完成标志:每篇帖子都逐一检查了所有典型问题和三项结构性检查。

5. Preflight

5. 发布前预检

Mechanical, and worth running every time. Some of it is one
curl
away.
  • Every link returns 200.
  • Char count per post. Premium raises the ceiling; the fold is still ~280, so know which posts get a "show more".
  • Alt text on every image.
  • Anything the reader is meant to copy exists as selectable text, not only inside an image.
  • Images measured, not eyeballed — see
    IMAGES.md
    .
  • Every claim traceable to something you can link.
  • Shipping something installable: the install command resolves to the version being announced. Check the registry you publish to, not the tag — for PyPI,
    curl -s https://pypi.org/pypi/<pkg>/json
    .
Done when every bullet is checked against the real post, not assumed.
这是机械性步骤,但每次发布前都值得执行。其中部分步骤只需一次
curl
调用即可完成。
  • 所有链接返回200状态码。
  • 单帖字符数。高级账号可提升上限;但折叠线仍约为280字符,因此需明确哪些帖子会被折叠显示“查看更多”。
  • 所有图片添加替代文本(Alt text)。
  • 任何需要读者复制的内容都以可选中文本形式存在,而非仅在图片内。
  • 图片尺寸需精确测量,而非目测——详见
    IMAGES.md
  • 所有观点都能链接到可溯源的内容。
  • 发布可安装的内容时:安装命令需指向当前发布的版本。检查你发布的注册表,而非标签——对于PyPI,使用
    curl -s https://pypi.org/pypi/<pkg>/json
完成标志:所有检查项均针对真实帖子进行了验证,而非主观假设。

By kind

按类型区分

kindshapeopens withmedia
launchthread on the objection ladderwhat a practitioner gets, per step 2every asset you have
progress / build-in-publicsingle postwhat changed since last timeone clip or screenshot
technical notesingle post, or a short thread if it needs a diagramthe finding, setup aftercode still, diagram, or none
opinionsingle postthe claim itself, first linenone — media dilutes a take
amplifying someone elsesingle postwhat you took from ittheirs, credited
A launch is the kind that usually earns a full thread, and the ladder sets its length. The rest default to one post, and a thread has to argue its way in.
类型结构开头内容媒体
发布帖遵循异议阶梯的线程帖从业者能获得的价值,详见步骤2所有可用素材
进度/公开构建帖单帖自上次发布以来的变化一段剪辑或一张截图
技术笔记帖单帖,若需图表则为短线程帖核心发现,背景铺垫后置代码截图、图表或无媒体
观点帖单帖核心观点,首句即点明无媒体——媒体会削弱观点的力度
推广他人帖单帖你从该内容中获得的收获他人的素材,并注明来源
发布帖通常适合完整的线程帖,异议阶梯决定了帖子的长度。其他类型默认使用单帖,若要使用线程帖则需有充分理由。

Voice

语气

Period rhythm. Sentence case in replies. Contextual lead phrases on links ("Code:", "Eval harness:"). The post ends on its last claim — nothing tacked on after it, no hashtag, thread emoji, or call to action.
使用句号式节奏。回复中使用句子大小写。链接前添加上下文引导语(如"代码:"、"评估框架:")。帖子以最后一个观点收尾——末尾不添加任何额外内容,无话题标签、线程表情符号或行动号召。

Platform mechanics

平台机制

  • X — a link with no media attached unfurls into a card; media suppresses it. In a launch thread the main post carries no link and the first reply carries the repo. Post a thread in one sitting so latecomers meet it finished.
  • Show HN — the title must begin with
    Show HN:
    , which HN's guidelines require. Submit the URL alone, then post the prepared first comment immediately. Include the limitations section; it reads as confidence.
  • LinkedIn — standalone, never a thread. Links go in the first comment. Narrative register is fine here and wrong on X. The "see more" cut falls around 140 chars on mobile, so the first two sentences have to carry the whole hook; check what survives the cut, not just the total length.
  • X —— 未附带媒体的链接会展开为卡片;添加媒体则会抑制卡片显示。在发布线程帖时,主帖不附带链接,第一条回复附带仓库链接。一次性发布完整的线程帖,以便晚到的读者看到完整内容。
  • Show HN —— 标题必须以
    Show HN:
    开头,这是HN的规则要求。仅提交URL,然后立即发布准备好的第一条评论。需包含局限性部分;这会显得更有自信。
  • LinkedIn —— 使用单帖,切勿使用线程帖。链接放在第一条评论中。这里适合使用叙事性语气,但在X平台则不合适。移动端的“查看更多”折叠线约在140字符处,因此前两句必须完整传达核心卖点;需检查折叠后显示的内容,而非仅关注总长度。