blog

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Blog Post Writer

博客文章撰写工具

Overview

概述

Transform technical content into a polished blog post for senior engineers. Accept input as a file or plain text, ask the user to confirm category, then write the post following the category template.
将技术内容转换为面向资深工程师的精炼博客文章。支持以文件或纯文本形式输入,先请用户确认文章类别,再按照对应类别的模板撰写博客。

Invocation

调用方式

Three ways to provide source content:
/blog @path/to/source.md          # markdown file
/blog @path/to/notes.txt          # text file
/blog <paste plain text here>     # plain text directly
$ARGUMENTS
may contain a file path or plain text. Determine which:
  • If it looks like a file path (contains
    /
    or
    .md
    or
    .txt
    ), read the file.
  • Otherwise, treat
    $ARGUMENTS
    itself as the source content.
提供源内容的三种方式:
/blog @path/to/source.md          # markdown文件
/blog @path/to/notes.txt          # 文本文件
/blog <paste plain text here>     # 直接粘贴纯文本
$ARGUMENTS
可以包含文件路径或纯文本,判断规则如下:
  • 如果内容看起来是文件路径(包含
    /
    .md
    .txt
    ),则读取该文件。
  • 否则,将
    $ARGUMENTS
    本身作为源内容。

Workflow

工作流程

dot
digraph blog_post {
    "Read source file" [shape=box];
    "Analyze content" [shape=box];
    "Ask category" [shape=box];
    "Gap analysis" [shape=box];
    "Gaps found?" [shape=diamond];
    "Ask user to fill gaps" [shape=box];
    "Sufficient?" [shape=diamond];
    "Write draft" [shape=box];
    "Self-review" [shape=box];
    "All rules pass?" [shape=diamond];
    "Fix violations" [shape=box];
    "Save .md file" [shape=box];

    "Read source file" -> "Analyze content";
    "Analyze content" -> "Ask category";
    "Ask category" -> "Gap analysis";
    "Gap analysis" -> "Gaps found?";
    "Gaps found?" -> "Write draft" [label="no"];
    "Gaps found?" -> "Ask user to fill gaps" [label="yes"];
    "Ask user to fill gaps" -> "Sufficient?";
    "Sufficient?" -> "Ask user to fill gaps" [label="no, ask again"];
    "Sufficient?" -> "Write draft" [label="yes"];
    "Write draft" -> "Self-review";
    "Self-review" -> "All rules pass?" ;
    "All rules pass?" -> "Fix violations" [label="no"];
    "Fix violations" -> "Self-review";
    "All rules pass?" -> "Save .md file" [label="yes"];
}
  1. Read the source content from
    $ARGUMENTS
    (file path → read file; plain text → use directly)
  2. Analyze content: identify language, key topics, available data
  3. Ask user to confirm category (case / study / guide) via AskUserQuestion — suggest your best guess as the first option
  4. Gap analysis — compare source content against the chosen category template. Identify which sections lack sufficient information to write a useful post.
  5. Fill gaps — if gaps exist, ask the user one question at a time via AskUserQuestion until every template section has enough material. Use multiple choice when possible. Do NOT proceed to writing until the content is sufficient.
  6. Write draft — write the post following all rules in the Iron Rules section, incorporating both the source file and the user's answers
  7. Self-review — review the draft against the Self-Review Checklist below. Do NOT show the draft to the user yet.
  8. Fix & repeat — if any checklist item fails, fix the violation and re-review. Repeat until every item passes.
  9. Save the final post to user-specified path, or default:
    blog/posts/YYYY-MM-DD-<slug>.md
dot
digraph blog_post {
    "Read source file" [shape=box];
    "Analyze content" [shape=box];
    "Ask category" [shape=box];
    "Gap analysis" [shape=box];
    "Gaps found?" [shape=diamond];
    "Ask user to fill gaps" [shape=box];
    "Sufficient?" [shape=diamond];
    "Write draft" [shape=box];
    "Self-review" [shape=box];
    "All rules pass?" [shape=diamond];
    "Fix violations" [shape=box];
    "Save .md file" [shape=box];

    "Read source file" -> "Analyze content";
    "Analyze content" -> "Ask category";
    "Ask category" -> "Gap analysis";
    "Gap analysis" -> "Gaps found?";
    "Gaps found?" -> "Write draft" [label="no"];
    "Gaps found?" -> "Ask user to fill gaps" [label="yes"];
    "Ask user to fill gaps" -> "Sufficient?";
    "Sufficient?" -> "Ask user to fill gaps" [label="no, ask again"];
    "Sufficient?" -> "Write draft" [label="yes"];
    "Write draft" -> "Self-review";
    "Self-review" -> "All rules pass?" ;
    "All rules pass?" -> "Fix violations" [label="no"];
    "Fix violations" -> "Self-review";
    "All rules pass?" -> "Save .md file" [label="yes"];
}
  1. 读取:从
    $ARGUMENTS
    中读取源内容(文件路径则读取文件;纯文本则直接使用)
  2. 分析内容:识别语言、核心主题、可用数据
  3. 确认:通过AskUserQuestion请用户确认文章类别(案例研究/深度解析/操作指南),并将你的最佳猜测作为第一个选项
  4. 差距分析:将源内容与所选类别的模板进行对比,找出哪些部分缺乏足够信息来撰写有用的博客
  5. 填补差距:如果存在信息差距,通过AskUserQuestion一次向用户提出一个问题,直到模板的每个部分都有足够的内容。尽可能使用选择题。在内容足够之前,不得进入撰写环节
  6. 撰写草稿:遵循《铁则》部分的所有规则,结合源文件和用户的回答撰写博客
  7. 自我审查:根据下方的自我审查清单检查草稿。此时不得将草稿展示给用户
  8. 修正并重审:如果任何清单项不通过,修正问题后重新审查。重复此过程直到所有项都通过
  9. 保存:将最终博客保存到用户指定的路径,默认路径为:
    blog/posts/YYYY-MM-DD-<slug>.md

Self-Review Checklist

自我审查清单

After writing the draft, check every item below. If any item fails, fix it and re-check the full list.
Content Integrity:
  • No fabricated content — every claim traces back to the source or user's answers
  • Code blocks are identical to the source (except redacted secrets)
  • No secrets in output — API keys, tokens, passwords, connection strings replaced with
    <REDACTED>
  • Post length is proportional to source length (no padding)
Writing Style (Strunk):
  • Active voice throughout — no "was implemented", "was observed"
  • Positive form — no "don't forget to", "it is not uncommon"
  • Specific and concrete — no "significantly improved", "much faster"
  • No needless words — every sentence earns its place
  • Emphatic word at end of each key sentence
  • One paragraph, one topic — no paragraph covers two subjects
  • Topic sentence leads each paragraph
  • Parallel structure in all lists — items share the same grammatical form
  • Related words kept together — modifiers next to what they modify
  • No loose sentence chains — no run-on compound sentences
  • Consistent tense within each section
Banned Patterns:
  • Zero AI puffery (groundbreaking, seamless, pivotal, vital, testament)
  • Zero overused AI words (delve, leverage, multifaceted, foster, realm, tapestry)
  • Zero empty -ing phrases (ensuring reliability, showcasing features)
  • No filler intros ("In recent years...", "As we all know...")
  • No restating conclusion
  • No puffery-as-emphasis (non-negotiable, crucial, indispensable)
  • No promotional adjectives (robust, powerful, state-of-the-art)
  • No formatting overuse (excessive bullets, bold on every line, emoji)
Structure:
  • Frontmatter matches the spec exactly (no extra fields)
  • Template sections are all present (or intentionally skipped by user)
  • Hook is specific and pulls the reader in
  • TL;DR is 3 bullets max
  • Section lengths vary (not all the same)
撰写草稿后,检查以下所有项。如果有任何一项不通过,修正后重新检查整个清单。
内容完整性:
  • 无虚构内容——所有主张均可追溯到源内容或用户的回答
  • 代码块与源内容完全一致(除了已脱敏的机密信息)
  • 输出中无机密信息——API密钥、令牌、密码、连接字符串均替换为
    <REDACTED>
  • 博客长度与源内容长度成正比(无凑字数内容)
写作风格(遵循Strunk原则):
  • 全程使用主动语态——避免“was implemented”“was observed”这类表达
  • 使用肯定句式——避免“don't forget to”“it is not uncommon”这类表达
  • 具体且明确——避免“significantly improved”“much faster”这类模糊表述
  • 无冗余词汇——每句话都有存在的价值
  • 每个关键句子的末尾使用强调性词汇
  • 一段一主题——不得在一个段落中涵盖两个主题
  • 每个段落以主题句开头
  • 所有列表使用平行结构——列表项采用相同的语法形式
  • 相关词汇放在一起——修饰语紧邻被修饰的内容
  • 无松散的句子链——避免冗长的复合句
  • 每个部分内时态一致
禁用模式:
  • 无AI浮夸表述(如groundbreaking、seamless、pivotal、vital、testament)
  • 无过度使用的AI词汇(如delve、leverage、multifaceted、foster、realm、tapestry)
  • 无空泛的-ing短语(如ensuring reliability、showcasing features)
  • 无凑数的引言(如“In recent years...”“As we all know...”)
  • 无重复结论的内容
  • 无伪装成强调的浮夸表述(如non-negotiable、crucial、indispensable)
  • 无宣传性形容词(如robust、powerful、state-of-the-art)
  • 不过度使用格式(如过多项目符号、每行都加粗、表情符号)
结构:
  • 前置元数据(Frontmatter)完全符合规范(无额外字段)
  • 模板的所有部分均已包含(或经用户确认故意跳过)
  • 引言部分具体且能吸引读者
  • TL;DR部分最多3个项目符号
  • 各部分长度有所变化(并非完全一致)

Gap Analysis Guide

差距分析指南

After choosing the category, map the source content to each template section. Flag sections where:
  • No data at all — template section has zero corresponding content in source
  • Too vague — source mentions something but lacks specifics (e.g., "performance improved" without numbers)
  • Missing context — reader would ask "why?" or "compared to what?" and the source doesn't answer
Ask the user to fill these gaps. One question at a time. Prefer multiple choice. Example:
"The Results section needs numbers. Do you have benchmark data?"
  • Yes (I'll provide it)
  • Not yet measured (skip Results section)
  • Only rough estimates
If the user says to skip a section, omit it from the final post rather than writing filler.
选择类别后,将源内容映射到模板的每个部分。标记以下情况的部分:
  • 完全无数据——模板部分在源内容中没有对应的内容
  • 过于模糊——源内容提到了相关内容但缺乏细节(例如,只说“性能提升”但没有具体数值)
  • 缺少上下文——读者会问“为什么?”或“与什么相比?”但源内容没有给出答案
请用户填补这些信息差距。一次只提一个问题,尽可能使用选择题。示例:
"结果部分需要具体数值。你有基准测试数据吗?"
  • 有(我会提供)
  • 尚未测量(跳过结果部分)
  • 只有粗略估计值
如果用户要求跳过某个部分,则在最终博客中省略该部分,不得撰写凑字数内容。

Iron Rules

铁则

These are non-negotiable. Violating any one of these means the post needs to be rewritten.
以下规则是不可协商的。违反任何一条都意味着需要重写博客。

Content Integrity

内容完整性

  • Never fabricate. Use only what exists in the source. If the source says "benchmark: p50 3ms", write about that result. Do not invent context, backstory, or details.
  • Preserve code blocks exactly. No renaming variables, no adding lines, no removing lines. Format/comment cleanup only.
  • Do not over-expand. A 30-line source does not become a 120-line post. Add structure and connective tissue, not padding.
  • 绝不虚构内容。仅使用源内容中存在的信息。如果源内容显示“benchmark: p50 3ms”,则如实撰写该结果。不得编造背景、故事或细节。
  • 完全保留代码块。不得重命名变量、添加或删除行。仅可调整格式或注释。
  • 不得过度扩展内容。30行的源内容不得变成120行的博客。仅可添加结构和衔接内容,不得凑字数。

Writing Style

写作风格

Follow Strunk's principles:
  • Active voice. "We reduced latency" not "Latency was reduced."
  • Omit needless words. Cut every sentence that repeats what was already said.
  • Specific over vague. "p99 dropped from 45ms to 8ms" not "performance improved significantly."
  • Positive form. "Use sync.Pool" not "Don't forget to consider sync.Pool."
  • Place emphasis at end of sentence. The important word goes last.
  • One paragraph, one topic. A paragraph that covers both "why we chose Go" and "how batching works" must be split.
  • Topic sentence first. Start each paragraph with its main point. Supporting details follow.
  • Parallel structure. List items must share the same grammatical form. All nouns, all verbs, or all imperative — pick one and hold it.
  • Keep related words together. Place modifiers next to what they modify. "A server written in Go that handles 4200 req/s" not "A server that handles 4200 req/s written in Go."
  • No loose sentence chains. Avoid run-on compound sentences. Break into shorter sentences with varied structure.
  • One tense per section. Pick past or present and stick with it within a section. Do not mix.
遵循Strunk原则:
  • 主动语态。使用“We reduced latency”而非“Latency was reduced.”
  • 省略冗余词汇。删除所有重复内容的句子。
  • 具体优先于模糊。使用“p99 dropped from 45ms to 8ms”而非“performance improved significantly.”
  • 肯定句式。使用“Use sync.Pool”而非“Don't forget to consider sync.Pool.”
  • 在句末强调。重要词汇放在句子末尾。
  • 一段一主题。如果一个段落同时涵盖“为什么选择Go”和“批处理如何工作”,必须拆分。
  • 主题句前置。每个段落以主旨句开头,支持细节放在后面。
  • 平行结构。列表项必须采用相同的语法形式。全部使用名词、动词或祈使句——选择一种并保持一致。
  • 相关词汇紧邻。修饰语紧邻被修饰的内容。使用“A server written in Go that handles 4200 req/s”而非“A server that handles 4200 req/s written in Go.”
  • 无松散句子链。避免冗长的复合句,拆分为结构多样的短句。
  • 单部分单时态。每个部分选择过去时或现在时并保持一致,不得混合使用。

Banned Patterns

禁用模式

PatternExampleWhy
AI pufferygroundbreaking, seamless, cutting-edge, pivotal, vital, testamentEmpty hype
Overused AI wordsdelve, leverage, multifaceted, foster, realm, tapestryStatistically generic
Empty -ing phrasesensuring reliability, showcasing features, highlighting capabilitiesSays nothing concrete
Filler intros"In recent years, AI has...", "As we all know..."Wastes reader's time
Conclusion that repeats"In conclusion, we showed that..."Reader already read it
Puffery disguised as emphasisnon-negotiable, vital, crucial, indispensableUse specifics instead
Promotional adjectivesrobust, powerful, state-of-the-artNot your job to sell
Formatting overuseExcessive bullets, bold on every line, emojiLet the content carry weight
模式示例原因
AI浮夸表述groundbreaking, seamless, cutting-edge, pivotal, vital, testament空洞的炒作
过度使用的AI词汇delve, leverage, multifaceted, foster, realm, tapestry统计意义上的通用表述
空泛的-ing短语ensuring reliability, showcasing features, highlighting capabilities无具体实质内容
凑数引言"In recent years, AI has...", "As we all know..."浪费读者时间
重复结论"In conclusion, we showed that..."读者已读过相关内容
伪装成强调的浮夸表述non-negotiable, vital, crucial, indispensable应使用具体内容替代
宣传性形容词robust, powerful, state-of-the-art你的职责不是推销
过度使用格式过多项目符号、每行都加粗、表情符号让内容本身传递价值

Credential Safety

凭据安全

  • Redact secrets before output. If the source content contains patterns that look like API keys, tokens, passwords, or connection strings, replace them with
    <REDACTED>
    in the output and warn the user.
  • Never reproduce
    .env
    variables, Bearer tokens, or private keys in the final blog post.
  • 输出前脱敏机密信息。如果源内容包含类似API密钥、令牌、密码或连接字符串的模式,在输出中替换为
    <REDACTED>
    并提醒用户。
  • 不得在最终博客中重现
    .env
    变量、Bearer令牌或私钥。

Tone

语气

Write as a senior engineer sharing with peers. Not a blog marketer, not a professor, not a salesperson. Assume the reader is smart and busy.
以资深工程师与同行分享的语气撰写。不要像博客营销人员、教授或销售人员。假设读者聪明且时间宝贵。

Frontmatter

前置元数据(Frontmatter)

Always generate this exact structure:
yaml
---
title: "<concise, descriptive title>"
date: YYYY-MM-DD
description: "<one sentence summary — what this post delivers to the reader>"
category: case | study | guide
tags:
  - tag1
  - tag2
  - tag3
draft: true
featured: false
---
  • If the source has frontmatter, preserve and fill gaps
  • If not, generate from content
  • Do not add fields not listed above (no
    author
    , no
    slug
    , no
    image
    )
  • Match the language of the source content
始终生成以下精确结构:
yaml
---
title: "<concise, descriptive title>"
date: YYYY-MM-DD
description: "<one sentence summary — what this post delivers to the reader>"
category: case | study | guide
tags:
  - tag1
  - tag2
  - tag3
draft: true
featured: false
---
  • 如果源内容已有前置元数据,保留并填补缺失的字段
  • 如果没有,则根据内容生成
  • 不得添加上述未列出的字段(无
    author
    slug
    image
    等字段)
  • 与源内容的语言保持一致

Category Templates

类别模板

case
— Experience / Case Study

case
— 经验/案例研究

"We did X, and here's what happened." Implementation stories, migrations, incident response, performance improvements.
undefined
“我们做了X,以下是结果。”包括实施故事、迁移、事件响应、性能优化等内容。
undefined

[Title]

[标题]

[Hook — 1-2 sentences. An unexpected result, a hard constraint, or a specific problem that pulls the reader in.]
[引言——1-2句话。一个意外结果、严格约束或能吸引读者的具体问题。]

TL;DR

TL;DR

  • 3 bullets max. Busy reader stops here if not relevant.
  • 最多3个项目符号。忙碌的读者如果觉得不相关可以只看这里。

Problem & Constraints

问题与约束

  • The specific problem being solved
  • Real constraints (latency budget, team size, existing system, etc.)
  • 要解决的具体问题
  • 实际约束(延迟预算、团队规模、现有系统等)

Approach & Trade-offs

方案与权衡

  • What approach was chosen and what alternatives were considered
  • Why this one won (concrete trade-off reasoning)
  • 选择的方案以及考虑过的替代方案
  • 选择该方案的原因(具体的权衡推理)

Implementation

实施细节

  • Key code with brief explanation
  • Design decisions that matter
  • 关键代码及简要说明
  • 重要的设计决策

Results

结果

  • Benchmarks, metrics, before/after (use tables when comparing)
  • 基准测试、指标、前后对比(对比时使用表格)

Lessons Learned

经验教训

  • What actually surprised you
  • What you would do differently
  • 实际遇到的意外情况
  • 如果重来会做的不同选择

Takeaways

要点总结

  • Actionable insights the reader can apply to their own work
undefined
  • 读者可以应用到自身工作中的可操作见解
undefined

study
— Learning / Deep Dive

study
— 学习/深度解析

"I dug into X, and here's the core idea." Paper reviews, new technology analysis, concept deep dives.
undefined
“我深入研究了X,以下是核心观点。”包括论文解读、新技术分析、概念深度解析等内容。
undefined

[Title]

[标题]

[Hook — What triggered this study, in 1-2 sentences.]
[引言——1-2句话,说明触发本次研究的原因。]

TL;DR

TL;DR

  • 3 bullets max.
  • 最多3个项目符号。

Core Idea

核心观点

  • The central concept, explained clearly
  • 清晰解释核心概念

Deep Dive

深度解析

  • Technical details, code/math/diagrams
  • 技术细节、代码/数学/图表

Practical Implications

实际意义

  • Why this matters for working engineers
  • 对在职工程师的重要性

Critical Analysis

批判性分析

  • Strengths, weaknesses, open questions
  • 优势、劣势、未解决的问题

Takeaways

要点总结

  • Key points + recommended resources (if any)
undefined
  • 核心要点+推荐资源(如有)
undefined

guide
— How-to / Tutorial

guide
— 操作指南/教程

"Here's how to do X." Environment setup, library usage, best practices — content the reader can follow along with.
undefined
“以下是做X的方法。”包括环境搭建、库使用、最佳实践等读者可以跟着操作的内容。
undefined

[Title]

[标题]

[Hook — 1-2 sentences. What problem this guide solves and who it's for.]
[引言——1-2句话。说明本指南解决的问题及目标受众。]

TL;DR

TL;DR

  • 3 bullets max. What you'll be able to do after reading this.
  • 最多3个项目符号。说明读者读完本指南后能完成什么。

Prerequisites

前置要求

  • What the reader needs before starting (tools, versions, knowledge)
  • 读者开始前需要具备的条件(工具、版本、知识)

Steps

步骤

  • Step-by-step with code blocks
  • Each step: what to do, why, and expected result
  • Group related steps under subheadings if needed
  • 分步说明及代码块
  • 每个步骤:操作内容、原因、预期结果
  • 必要时将相关步骤分组到子标题下

Troubleshooting

故障排除

  • Common errors and how to fix them
  • Edge cases worth knowing
  • 常见错误及解决方法
  • 需要注意的边缘情况

Takeaways

要点总结

  • Summary of what was covered
  • Next steps or further reading
undefined
  • 内容概述
  • 后续步骤或拓展阅读建议
undefined

Output Language

输出语言

Match the source file's language. Korean source → Korean post. English source → English post. Mixed → follow the dominant language.
与源文件的语言保持一致。韩文源内容→韩文博客,英文源内容→英文博客,混合语言→以占主导的语言为准。

Red Flags — Rewrite If You Catch Yourself Doing This

警示信号——如果你发现自己有以下行为,请重写

  • Adding a "Conclusion" section that restates what was already said
  • Writing 3 paragraphs where 3 sentences would do
  • Inventing quotes, scenarios, or backstory not in the source
  • Starting with "In the rapidly evolving world of..."
  • Using more than 2 adjectives in a single sentence
  • Every section having the same length (vary rhythm)
  • 添加了重复内容的“结论”部分
  • 用3段话才能说清原本3句话就能讲明白的内容
  • 编造了源内容中没有的引用、场景或背景故事
  • 以“In the rapidly evolving world of...”这类句子开头
  • 一个句子中使用了2个以上的形容词
  • 所有部分的长度完全相同(应调整节奏)