Transform technical notes into blog posts. Use when user says "blog-generator", "/blog-generator", "블로그 글 작성", "블로그로 변환", "write a blog post", "turn this into a blog", or provides technical content to convert into blog format.
Transforms technical notes, memos, and documentation into well-structured blog posts with narrative flow, engaging introductions, and reader-friendly explanations.
English:
Korean:
Extract the content source from user message:
| Input Type | Detection | Action |
|---|---|---|
| File path | Contains .md, /path/to/, or ~ pattern | Read file using Read tool |
| URL | Contains https:// or http:// | Fetch using WebFetch tool |
| Direct text | Raw text content in message | Use text directly |
| IDE selection | Content in ide_selection tags | Use selected content |
Examples:
/blog-generator ~/notes/rag-explained.md → Read file/blog-generator https://example.com/article → Fetch URL/blog-generator "RAG는 질문에 답하기 전에..." → Direct textIf no content detected:
Ask user: "블로그로 변환할 내용을 제공해주세요. 파일 경로, URL, 또는 텍스트를 입력할 수 있습니다."
Ask the user 3 questions using a single AskUserQuestion call with all 3 questions:
AskUserQuestion(
questions=[
{
"question": "Who is the target audience for this blog post?",
"header": "Audience",
"options": [
{"label": "Beginner (Recommended)", "description": "입문자. 기본 개념부터 친절하게 설명"},
{"label": "Intermediate", "description": "실무자. 핵심 개념은 알지만 깊이 있는 설명 필요"},
{"label": "Advanced", "description": "시니어/전문가. 심화 내용과 트레이드오프 중심"}
],
"multiSelect": false
},
{
"question": "What tone and style should the blog post have?",
"header": "Tone",
"options": [
{"label": "Tutorial (Recommended)", "description": "단계별 학습 가이드. 따라하기 쉬운 구성"},
{"label": "Professional", "description": "기술 문서 스타일. 정확하고 간결한 톤"},
{"label": "Conversational", "description": "대화체. 친근하고 읽기 편한 스타일"}
],
"multiSelect": false
},
{
"question": "Which language should the blog post be written in?",
"header": "Language",
"options": [
{"label": "Korean (Recommended)", "description": "한국어로 작성. 기술 용어는 영문 병기"},
{"label": "English", "description": "Written entirely in English"},
{"label": "Mixed (Ko+En)", "description": "한영 혼용. 헤더는 영어, 본문은 한국어"}
],
"multiSelect": false
}
]
)
If config.yaml exists, show config defaults in the recommended labels. If user skips or selects defaults, use config values.
Read ~/.claude/skills/blog-generator/config.yaml:
output_dir: "~/Documents/blog/posts"
default_language: "ko"
default_audience: "intermediate"
default_tone: "tutorial"
auto_commit: false
auto_push: false
If config not found: Use these defaults and continue without asking. The output directory will be created automatically.
Apply interview answers: Override config defaults with user's interview selections.
Analyze the raw input to extract:
| Category | What to Extract |
|---|---|
| Core Topic | Main subject and its significance |
| Key Concepts | Individual concepts/ideas that need explanation |
| Logical Flow | Best order for progressive understanding |
| Code Blocks | Code snippets to preserve verbatim |
| Diagrams/Tables | Visual elements to keep or enhance |
| Analogies | Existing analogies to expand; opportunities for new ones |
| Complexity Level | How technical the content is |
Generate an outline (internal, not shown to user):
1. Hook/Introduction angle: [what relatable scenario to start with]
2. Section breakdown:
- Section A: [concept] → [explanation approach]
- Section B: [concept] → [explanation approach]
- ...
3. Code example placement: [where code fits in the narrative]
4. Conclusion angle: [how to wrap up with takeaways]
Write the blog post following this template structure. Adapt sections based on content — not every section is required for every post.
---