amplifier-bundle-blog-creator
January 6, 2026 ยท View on GitHub
Modern Amplifier bundle for AI-powered blog creation with style-aware generation
Transform rough ideas into polished, illustrated blog posts that match your unique writing voice.
Features
โจ Style-Aware Generation - Analyzes your writing samples to match your voice
๐ Iterative Refinement - Review and revise until perfect
๐ฏ Multi-Stage Workflow - Style โ Draft โ Review โ Revision โ Illustration
๐ค Specialized Agents - Expert agents for each stage
๐ Recipe Automation - Declarative workflow orchestration
๐ ๏ธ Tool Modules - Modular, reusable capabilities
Architecture
This bundle follows 2026 Amplifier best practices:
- Thin bundle inheriting from foundation
- Behaviors declaring reusable capabilities
- Specialized agents for each workflow stage
- Tool modules with proper protocols
- Recipe system for automated orchestration
What's Included
amplifier-bundle-blog-creator/
โโโ bundle.md # Thin bundle definition
โโโ behaviors/
โ โโโ blog-creator.yaml # Blog creation capability
โโโ agents/
โ โโโ style-analyzer.md # Style extraction specialist
โ โโโ content-drafter.md # Draft creation specialist
โ โโโ content-reviewer.md # Review specialist
โ โโโ illustrator.md # Image generation specialist
โโโ context/
โ โโโ blog-creator-instructions.md # Workflow guidance
โโโ recipes/
โ โโโ create-blog-post.yaml # Automated workflow
โโโ modules/
โ โโโ tool-image-generation/ # AI image generation (DALL-E, Imagen)
โ โโโ tool-style-extraction/ # Writing style analysis
โ โโโ markdown-utils/ # Markdown utilities (library)
โโโ .amplifier/
โโโ settings.yaml # Configuration example
Quick Start
Prerequisites
# Install Amplifier
# See: https://github.com/microsoft/amplifier
# Set up API keys
export ANTHROPIC_API_KEY="your-key-here"
export OPENAI_API_KEY="your-key-here" # For DALL-E images (optional)
export GOOGLE_API_KEY="your-key-here" # For Imagen (optional)
Installation
# Clone the bundle
git clone https://github.com/robotdad/amplifier-bundle-blog-creator
cd amplifier-bundle-blog-creator
# Install tool modules
cd modules/tool-image-generation && uv sync && cd ../..
cd modules/tool-style-extraction && uv sync && cd ../..
Usage: Recipe-Based (Recommended)
Automated multi-stage workflow:
amplifier recipe run amplifier-bundle-blog-creator:recipes/create-blog-post.yaml \
--input topic="Why Event-Driven Architecture Matters" \
--input style_samples_dir="~/my_blog_posts/" \
--input with_illustrations=true
Recipe features:
- โ Automatic stage progression
- โ Context accumulation across stages
- โ Resumable if interrupted
- โ Saves all intermediate artifacts
Usage: Agent-Based (Manual)
Step-by-step with specialized agents:
# 1. Extract writing style
amplifier --bundle blog-creator --agent style-analyzer
# Provide: Directory with 3-5 writing samples
# Output: style_profile.json
# 2. Generate initial draft
amplifier --bundle blog-creator --agent content-drafter
# Provide: idea notes + style profile
# Output: draft_v1.md
# 3. Review draft
amplifier --bundle blog-creator --agent content-reviewer
# Provide: draft + idea notes + style profile
# Output: review_result.json
# 4. Revise draft
amplifier --bundle blog-creator --agent content-drafter
# Provide: draft + review feedback + style profile
# Output: draft_v2.md
# 5. Add illustrations (optional)
amplifier --bundle blog-creator --agent illustrator
# Provide: final draft
# Output: illustrated_draft.md + images/
Workflow
Stage 1: Style Extraction
Agent: @style-analyzer
Analyzes 3-5 writing samples to extract:
- Tone (conversational, technical, formal, etc.)
- Voice (person, active/passive)
- Vocabulary level
- Sentence structure patterns
- Common phrases and expressions
- Writing patterns (openings, transitions, closings)
Output: StyleProfile JSON
Stage 2: Draft Generation
Agent: @content-drafter
Creates initial blog post from rough ideas:
- Applies extracted style profile
- Maintains source accuracy (no invented facts)
- Structures content appropriately
- Uses author's natural voice
Output: Initial draft markdown
Stage 3: Review
Agent: @content-reviewer
Provides objective feedback:
- Source accuracy: Checks facts against original notes
- Style consistency: Compares against style profile
- Cites specific examples
- Suggests improvements
Output: ReviewResult JSON
Stage 4: Revision
Agent: @content-drafter
Incorporates feedback:
- Addresses source accuracy issues
- Corrects style inconsistencies
- Implements user requests
- Maintains quality
Iterates: Repeat stages 3-4 until approved
Stage 5: Illustration (Optional)
Agent: @illustrator
Generates contextual images:
- Analyzes content for illustration opportunities
- Creates relevant prompts for AI generators
- Uses DALL-E or Imagen
- Embeds images with proper alt text
Output: Illustrated markdown + image files
Tool Modules
tool-image-generation
Multi-provider AI image generation with automatic fallback.
Features:
- OpenAI DALL-E 3 support
- Google Imagen 3 support
- Automatic provider fallback
- Cost tracking
- Multiple image styles
Usage as library:
from image_generation import ImageGenerator
generator = ImageGenerator()
result = await generator.generate(
prompt="Software architecture diagram in minimalist style",
output_path=Path("diagram.png"),
preferred_api="openai"
)
Usage as tool:
from image_generation import ImageGenerationTool
tool = ImageGenerationTool()
result = await tool.execute({
"operation": "generate",
"prompt": "Software architecture diagram",
"output_path": "diagram.png"
})
tool-style-extraction
LLM-powered writing style analysis.
Features:
- Extracts 8 style dimensions
- Pattern recognition across samples
- Concrete examples
- Pydantic models for type safety
Usage as library:
from style_extraction import StyleExtractor
extractor = StyleExtractor()
profile = await extractor.extract_style(Path("~/writings"))
Usage as tool:
from style_extraction import StyleExtractionTool
tool = StyleExtractionTool()
result = await tool.execute({
"operation": "extract_style",
"samples_dir": "~/writings"
})
markdown-utils
Pure Python markdown utilities (library only).
Features:
- Title extraction
- Slug generation
- Structure parsing
- Image insertion helpers
Usage:
from amplifier_module_markdown_utils import extract_title, slugify
title = extract_title(markdown_content)
slug = slugify(title) # "my-blog-post-title"
Configuration
.amplifier/settings.yaml
providers:
- module: provider-anthropic
config:
api_key: ${ANTHROPIC_API_KEY}
default_model: claude-sonnet-4-5
modules:
tools:
- module: tool-style-extraction
config:
min_samples: 3
max_samples: 5
- module: tool-image-generation
config:
default_provider: openai
default_style: photorealistic
recipes:
working_dir: ./ai_working
save_intermediate: true
Development
Running Tests
# Tool modules
cd modules/tool-image-generation && uv run pytest
cd modules/tool-style-extraction && uv run pytest
# Test recipe (dry run)
amplifier recipe validate recipes/create-blog-post.yaml
Project Structure Philosophy
This bundle follows the "bricks and studs" philosophy:
- Thin bundle = Inherits capabilities, adds only domain-specific
- Tool modules = Self-contained bricks with clean interfaces
- Agents = Specialized roles with clear responsibilities
- Recipes = Declarative orchestration, not hardcoded logic
- Behaviors = Reusable capability sets others can include
Migration from Legacy App
This bundle replaces amplifier-app-blog-creator (the legacy FastAPI app) with modern Amplifier patterns:
| Legacy | Modern |
|---|---|
| Standalone Python app | Thin bundle inheriting foundation |
| Hardcoded workflow | Declarative recipe |
| Python packages | Tool protocol modules |
| Direct PydanticAI calls | Foundation providers |
| Custom orchestration | Recipe system |
.amplifier/profiles/ | behaviors/*.yaml |
Benefits of modernization:
- โ Recipe-based automation
- โ Resumable workflows
- โ Better modularity
- โ Foundation tool access
- โ Standardized patterns
Examples
Example 1: Technical Blog Post
amplifier recipe run blog-creator:recipes/create-blog-post.yaml \
--input topic="Building Event-Driven Systems with Kafka" \
--input style_samples_dir="~/tech_blog/" \
--input additional_instructions="Keep under 1500 words, include code examples" \
--input with_illustrations=true \
--input max_images=2
Example 2: Manual Workflow with Iteration
# Extract style once
amplifier --bundle blog-creator --agent style-analyzer
# > Saves style_profile.json
# Generate draft
amplifier --bundle blog-creator --agent content-drafter
# > Saves draft_v1.md
# Review
amplifier --bundle blog-creator --agent content-reviewer
# > Saves review_result.json
# Manual edits to draft_v1.md...
# Final review
amplifier --bundle blog-creator --agent content-reviewer
# > Approves or suggests more changes
Best Practices
Style Extraction
- Use 3-5 writing samples minimum
- Same genre and audience as target blog
- Representative of current voice (not old work)
- Substantial length (500+ words each)
Draft Generation
- Provide detailed idea notes (not just a topic)
- Include specific examples and facts
- Note any constraints (length, structure, tone)
- Reference sources if needed
Review Process
- Review objectively against specs
- Cite specific examples
- Focus on meaningful issues
- Acknowledge what's working
Illustration
- Maximum 3-4 images per post
- Quality over quantity
- Use for complex concepts, not decoration
- Consistent visual style
Troubleshooting
"Style profile not found"
Ensure you've run style extraction first or provide style_profile.json.
"Insufficient writing samples"
Provide at least 3 markdown files in the samples directory.
"Image generation failed"
Check API keys for OpenAI or Google. The tool will fallback between providers.
"Recipe won't resume"
Check ./ai_working/sessions/ for session state. Use amplifier recipe resume <session-id>.
Contributing
This bundle follows Amplifier contribution guidelines:
License
MIT License - See LICENSE file
Learn More
Credits
Created by robotdad as a modernization of the legacy amplifier-app-blog-creator.
Built with:
- Amplifier Foundation
- Anthropic Claude (content generation)
- OpenAI DALL-E (image generation)
- Google Imagen (image generation)
- PydanticAI (structured outputs)