blog
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBlog 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- If it looks like a file path (contains or
/or.md), read the file..txt - Otherwise, treat itself as the source content.
$ARGUMENTS
提供源内容的三种方式:
/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"];
}- Read the source content from (file path → read file; plain text → use directly)
$ARGUMENTS - Analyze content: identify language, key topics, available data
- Ask user to confirm category (case / study / guide) via AskUserQuestion — suggest your best guess as the first option
- Gap analysis — compare source content against the chosen category template. Identify which sections lack sufficient information to write a useful post.
- 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.
- Write draft — write the post following all rules in the Iron Rules section, incorporating both the source file and the user's answers
- Self-review — review the draft against the Self-Review Checklist below. Do NOT show the draft to the user yet.
- Fix & repeat — if any checklist item fails, fix the violation and re-review. Repeat until every item passes.
- 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"];
}- 读取:从中读取源内容(文件路径则读取文件;纯文本则直接使用)
$ARGUMENTS - 分析内容:识别语言、核心主题、可用数据
- 确认:通过AskUserQuestion请用户确认文章类别(案例研究/深度解析/操作指南),并将你的最佳猜测作为第一个选项
- 差距分析:将源内容与所选类别的模板进行对比,找出哪些部分缺乏足够信息来撰写有用的博客
- 填补差距:如果存在信息差距,通过AskUserQuestion一次向用户提出一个问题,直到模板的每个部分都有足够的内容。尽可能使用选择题。在内容足够之前,不得进入撰写环节
- 撰写草稿:遵循《铁则》部分的所有规则,结合源文件和用户的回答撰写博客
- 自我审查:根据下方的自我审查清单检查草稿。此时不得将草稿展示给用户
- 修正并重审:如果任何清单项不通过,修正问题后重新审查。重复此过程直到所有项都通过
- 保存:将最终博客保存到用户指定的路径,默认路径为:
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
禁用模式
| Pattern | Example | Why |
|---|---|---|
| AI puffery | groundbreaking, seamless, cutting-edge, pivotal, vital, testament | Empty hype |
| Overused AI words | delve, leverage, multifaceted, foster, realm, tapestry | Statistically generic |
| Empty -ing phrases | ensuring reliability, showcasing features, highlighting capabilities | Says 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 emphasis | non-negotiable, vital, crucial, indispensable | Use specifics instead |
| Promotional adjectives | robust, powerful, state-of-the-art | Not your job to sell |
| Formatting overuse | Excessive bullets, bold on every line, emoji | Let 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 in the output and warn the user.
<REDACTED> - Never reproduce variables, Bearer tokens, or private keys in the final blog post.
.env
- 输出前脱敏机密信息。如果源内容包含类似API密钥、令牌、密码或连接字符串的模式,在输出中替换为并提醒用户。
<REDACTED> - 不得在最终博客中重现变量、Bearer令牌或私钥。
.env
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 , no
author, noslug)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
casecase
— 经验/案例研究
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- 读者可以应用到自身工作中的可操作见解
undefinedstudy
— Learning / Deep Dive
studystudy
— 学习/深度解析
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- 核心要点+推荐资源(如有)
undefinedguide
— How-to / Tutorial
guideguide
— 操作指南/教程
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- 内容概述
- 后续步骤或拓展阅读建议
undefinedOutput 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个以上的形容词
- 所有部分的长度完全相同(应调整节奏)