p-blog-writer
Write blog posts in {user_name}'s voice with theoretical depth and persuasive arguments. Iterative workflow: intake → outline → section-by-section expansion → polish. Adapts to tool announcements, opinion pieces, deep-dives, and tutorials. Use when the user says "/blog-writer", "write a blog post", "draft an article about", "help me write about", or wants to create blog content.
Best use case
p-blog-writer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Write blog posts in {user_name}'s voice with theoretical depth and persuasive arguments. Iterative workflow: intake → outline → section-by-section expansion → polish. Adapts to tool announcements, opinion pieces, deep-dives, and tutorials. Use when the user says "/blog-writer", "write a blog post", "draft an article about", "help me write about", or wants to create blog content.
Teams using p-blog-writer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/p-blog-writer/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How p-blog-writer Compares
| Feature / Agent | p-blog-writer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Write blog posts in {user_name}'s voice with theoretical depth and persuasive arguments. Iterative workflow: intake → outline → section-by-section expansion → polish. Adapts to tool announcements, opinion pieces, deep-dives, and tutorials. Use when the user says "/blog-writer", "write a blog post", "draft an article about", "help me write about", or wants to create blog content.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Blog Writer
<!-- skillctx:begin -->
## Setup
Locate this skill's directory (the folder containing this SKILL.md), then run the
resolver script from there:
```bash
python <skill-dir>/scripts/skillctx-resolve.py resolve p-blog-writer
```
The resolver outputs each binding as `key: value` (one per line). Substitute each `{binding_key}` placeholder below with the resolved value.
If any values are missing or the user requests changes, use:
```bash
python <skill-dir>/scripts/skillctx-resolve.py set p-blog-writer <key> <value>
```
<!-- skillctx:end -->
Write blog posts that sound like {user_name} — casual-professional Japanese with natural English technical terms — while strengthening theoretical depth and persuasion.
## When to Use
- User wants to write a blog post or article
- User has a topic idea and wants it turned into a draft
- User has notes or an outline and wants it expanded
- User says "/blog-writer" or "write a blog post about X"
## Prerequisites
- Voice profile: `{voice_profile_path}` (read this FIRST before any writing)
- Output directory: `{blog_drafts_dir}`
## Arguments
- Topic, idea, or notes (required — can be a single phrase or detailed notes)
- `--type <tool|opinion|deep-dive|tutorial>` (optional — auto-detected if omitted)
- `--platform <{default_platform}|{alt_platform}>` (optional — defaults to {default_platform})
- `--audience <description>` (optional — e.g., "Go developers", "junior engineers")
## Workflow
### Step 1: Intake
1. Read `{voice_profile_path}` to internalize the voice and persuasion patterns.
2. Parse the user's input:
- If just a topic/idea: proceed with what's given
- If topic + audience + takeaway: use all three to shape the article
- If notes/outline: use as the starting structure
3. Detect article type from the input:
- **Tool announcement**: user mentions building/releasing something ("〜を作った", "I built X")
- **Opinion/essay**: user has a claim or position ("why X matters", "X is underrated")
- **Deep-dive/comparison**: user wants to explain or compare ("how X works", "X vs Y")
- **Tutorial/guide**: user wants to teach ("how to set up X", "complete guide to X")
- User can override with `--type`
4. If the input is thin (just a few words), ask 1-2 clarifying questions:
- "Who is the target reader for this post?"
- "What's the one thing you want the reader to take away?"
- Do NOT ask more than 2 questions. Work with what you have.
### Step 2: Outline with Argument Structure
Generate a structured outline based on article type.
#### Tool Announcement Outline
```
## タイトル: [title]
### 1. 背景 / Pain Point
- [Concrete problem] — persuasion: Stakes
- "〜していませんか?" or "〜で困ったことはありませんか?"
### 2. ツール紹介
- What it does (1-2 sentences)
- Installation command
### 3. 使い方
- Basic usage with CLI examples
- Key features with output examples
### 4. 設計思想 (Design Philosophy)
- Why these design decisions — persuasion: Contrast Framing
- Trade-offs acknowledged — theory anchor
- Underlying principles
### 5. 「でも〜では?」(Objection Handling)
- Anticipate 1-2 objections and address them
- Compare with alternatives fairly
### 6. まとめ
- Key takeaway
- Links to repo
- Call to action (Star, feedback)
```
#### Opinion/Essay Outline
```
## タイトル: [title]
### 1. Hook
- Bold claim or surprising observation — persuasion: Stakes
### 2. Evidence
- 2-3 concrete examples or data points — persuasion: Evidence
### 3. Why This Is True
- Underlying principle or theory — theory anchor
- Analogy to something familiar — persuasion: Analogy Bridge
### 4. Counter-argument
- Strongest objection — persuasion: Objection Handling
- Why you still believe your claim
### 5. Implications
- What this means for the reader's work
### 6. まとめ
- Restate core insight
- Call to action or question for the reader
```
#### Deep-Dive/Comparison Outline
```
## タイトル: [title]
### 1. Context & Framing
- Why this topic matters now — persuasion: Stakes
### 2. Concept Explanation
- Core concept with analogy — persuasion: Analogy Bridge
- How it works (theory depth)
### 3. Detailed Analysis
- Technical details with examples
- Code or architecture walkthrough
### 4. Trade-offs
- Comparison matrix or table — persuasion: Contrast Framing
- When to use what
### 5. Recommendation
- Author's pick with reasoning — persuasion: Evidence
### 6. まとめ
```
#### Tutorial/Guide Outline
```
## タイトル: [title]
### 1. Who This Is For
- Target audience and prerequisites
### 2-N. Progressive Sections
- Basic → Intermediate → Advanced
- Each with practical examples and code
- Persuasion: Evidence (show results at each step)
### N+1. Common Pitfalls
- What to watch out for — persuasion: Objection Handling
### N+2. まとめ
- Next steps and further reading
```
After generating the outline:
1. Ask 1-2 sharpening questions:
- "この記事で読者が感じる最大の反論は何ですか?" (What's the biggest objection a reader would have?)
- "読者に一番覚えてほしいことは?" (What's the one thing you want readers to remember?)
- Only ask if the answers aren't already obvious from the input.
2. Present the outline and wait for approval. User can:
- Approve as-is
- Request changes (reorder, add/remove sections, change angle)
- Provide answers to sharpening questions
### Step 3: Section-by-Section Expansion
For each section in the approved outline:
1. Write the section in Japanese, following the voice profile:
- Apply the persuasion pattern assigned to that section
- Include code blocks, CLI examples, or output where relevant
- Add theory depth at marked theory anchors
- Keep the casual-professional tone — no academic language
2. Present the section and ask:
- "この section はどうですか? approve / revise / 別のアングルで rewrite"
- If revise: ask what to change
- If rewrite: try a different persuasion angle or framing
3. Move to the next section after approval.
### Step 4: Polish & Save
1. Assemble all approved sections into a single markdown file.
2. Add platform frontmatter:
**For Zenn:**
```yaml
---
title: "[title]"
emoji: "[relevant emoji]"
type: "tech"
topics: ["topic1", "topic2"]
published: false
---
```
**For Qiita:**
```yaml
---
title: "[title]"
tags:
- tag1
- tag2
private: true
---
```
3. Generate slug from title (lowercase, hyphens, ASCII only).
4. Save to `{blog_drafts_dir}{slug}.md`.
5. Show the complete draft to the user for final review.
6. Report: "Draft saved to `{blog_drafts_dir}{slug}.md`"
## Privacy & Safety
- Never include real company names, internal URLs, or secrets in blog content
- If writing about work-related topics, generalize and anonymize
- Don't publish — always save as draft with `published: false` or `private: true`
## Examples
### Example 1: Tool announcement
User: "mdschemaを作った話を書きたい"
→ Detects: tool announcement
→ Generates outline with design philosophy section and objection handling
→ Iterates section by section
→ Saves to `{blog_drafts_dir}mdschema-wo-tsukutta-hanashi.md`
### Example 2: Opinion piece
User: "write a blog post about why Go interfaces are underrated"
→ Detects: opinion/essay
→ Generates outline with bold hook, evidence, counter-argument
→ Asks: "最大の反論は何?"
→ Iterates and saves
### Example 3: Minimal input
User: "blog about goroutines"
→ Input is thin — asks: "対象読者は?" and "takeaway は?"
→ User answers → detects deep-dive
→ Proceeds with outline