A Claude Code Plugin that provides an autonomous AI copywriter for SaaS content marketing.
Uses the Ralph Wiggum pattern - an iterative AI loop that ships content while you sleep.
# In Claude Code, add the repo as a marketplace:
/plugin marketplace add muratcankoylan/ralph-wiggum-marketer
# Then install the plugin:
/plugin install ralph-wiggum-marketer@muratcankoylan-ralph-wiggum-marketer# Clone the repo
git clone https://github.com/muratcankoylan/ralph-wiggum-marketer.git
# Run Claude Code with the plugin directory
claude --plugin-dir ./ralph-wiggum-marketer# Open the plugin manager:
/plugin
# Browse, search, and install from the interactive UI# 1. Initialize a new content project
/ralph-init
# 2. Check progress anytime
/ralph-status
# 3. Cancel if needed
/ralph-cancel| Command | Description |
|---|---|
/ralph-init |
Initialize a new content project in current directory |
/ralph-marketer |
Start the autonomous copywriter loop |
/ralph-status |
Check content pipeline and progress |
/ralph-cancel |
Cancel the active loop |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MULTI-AGENT ECOSYSTEM โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ TrendScout โ โ Research โ โ Product/ โ โ
โ โ Agent โ โ Agent โ โ Marketing โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SQLite Content Database โ โ
โ โ โข trends โข research โข communications โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ RALPH THE COPYWRITER โ โ
โ โ โ โ
โ โ Reads inputs โ Plans content โ Writes drafts โ โ
โ โ โ Reviews & iterates โ Publishes โ โ
โ โ โ โ
โ โ Memory: git commits + progress.txt + prd.json โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ Published Content โ
โ (blogs, case studies, social, newsletters) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Read PRD: Check
scripts/ralph/prd.jsonfor tasks - Check Progress: Read
scripts/ralph/progress.txtfor learnings - Pick Task: Find highest priority story where
passes: false - Execute: Complete the task following acceptance criteria
- Verify: Run tests to ensure quality
- Commit: Save progress to git
- Update: Mark task done, log learnings
- Repeat: Loop until all tasks complete
Each iteration is a fresh context window. Memory persists through files.
ralph-wiggum-marketer/
โโโ .claude-plugin/
โ โโโ plugin.json # Plugin manifest
โโโ commands/
โ โโโ ralph-marketer.md # Main loop command
โ โโโ ralph-init.md # Project initialization
โ โโโ ralph-status.md # Status check
โ โโโ ralph-cancel.md # Cancel loop
โโโ skills/
โ โโโ copywriter/
โ โโโ SKILL.md # Copywriter skill
โโโ hooks/
โ โโโ hooks.json # Hook configuration
โ โโโ stop-hook.sh # Loop continuation hook
โโโ scripts/
โ โโโ src/ # Database & utility scripts
โโโ templates/
โ โโโ prd.json # Task template
โ โโโ progress.txt # Progress log template
โ โโโ prompt.md # Agent instructions template
โ โโโ package.json # Project package.json template
โโโ README.md
-- Trends from TrendScout
trends (topic, description, source, relevance_score, status)
-- Research from Research Agent
research (title, summary, key_findings, data_points, category, status)
-- Communications from Product/Marketing
communications (type, title, details, key_messages, target_audience, priority, status)-- Content planning
content_plan (content_type, title, brief, target_keywords, status)
-- Work in progress
drafts (plan_id, version, content, word_count, feedback)
-- Final content
published (plan_id, final_content, meta_description)
-- Activity tracking
agent_log (action, details, created_at)Edit src/db/seed.js:
// Add a trend
insertTrend.run(
'Your Trend Topic',
'Description of the trend',
'Source',
85 // relevance score
);
// Add a communication
insertComm.run(
'product_update',
'Your Product Launch',
'Details about what it does',
JSON.stringify(['Key message 1', 'Key message 2']),
'Target audience',
1 // priority
);Edit scripts/ralph/prd.json:
{
"id": "WRITE-004",
"title": "Write your custom blog",
"acceptanceCriteria": [
"At least 1000 words",
"Includes 3 data points",
"Has compelling CTA"
],
"priority": 5,
"passes": false
}The default PRD includes 12 stories:
- SETUP-001: Initialize database
- PLAN-001: Plan product launch blog
- WRITE-001: Write launch blog draft
- PLAN-002: Plan thought leadership blog
- WRITE-002: Write data-driven blog
- REVIEW-001: Review and improve draft
- PUBLISH-001: Publish launch blog
- PLAN-003: Plan case study
- WRITE-003: Write case study
- SOCIAL-001: Create social posts
- NEWSLETTER-001: Draft newsletter
- METRICS-001: Log final metrics
"Ralph is a Bash loop. Memory persists only through git history and text files. Each iteration is a fresh context window."
Key principles:
- Small stories - Must complete in one iteration
- Explicit criteria - No ambiguity
- Fast feedback - Tests every iteration
- Compound learnings - Patterns accumulate
- Persistence wins - Keep iterating
- Original Ralph concept: @GeoffreyHuntley
- Official Ralph plugin: claude-plugins-official
- Video walkthrough: @mattpocockuk
MIT