π¦ ClawHub
Campaign Management
by @nadavnaveh
Read campaign packages, manage campaign state, generate intelligence reports. Entry point for all campaign operations.
TERMINAL
clawhub install campaign-managementπ About This Skill
name: campaign-management version: "1.0.0" description: "Read campaign packages, manage campaign state, generate intelligence reports. Entry point for all campaign operations." user-invocable: true
Campaign Management Skill
Manages the lifecycle of marketing campaigns β reads packages, tracks state, generates reports.
Campaign Package Structure
Each campaign lives in campaigns/ with this structure:
campaigns//
brief.md # REQUIRED β product, audience, ICP, tone
config.yaml # REQUIRED β settings (mode, language, depth, platforms)
leads.csv # OPTIONAL β pre-loaded leads (if empty, researcher discovers)
messages/ # OPTIONAL β message templates for outreach mode
linkedin-connect.md
email-cold.md
email-followup-1.md
assets/ # OPTIONAL β images, attachments # Generated by the system:
enriched-leads.csv # Output from researcher
intel/ # Per-lead intelligence files
outbox/ # Personalized messages (outreach/autonomous mode)
state.json # Campaign progress tracker
report.md # Final campaign report
logs/ # Execution logs
brief.md Format
# Campaign: [Name]Product
[What the product/service is. What problem it solves. URL if available.]Target Audience
Industries: [fintech, healthcare, logistics, etc.]
Titles: [CTO, VP Engineering, Head of Data, etc.]
Geography: [Israel, US East Coast, Europe, etc.]
Company size: [10-50, 50-500, 500+, Series A-C, etc.] Value Proposition
[Why this audience cares. What pain point we solve.]Tone
[Professional, casual, bold, warm, technical, etc.]Special Instructions
[Anything else β competitors to mention, angles to use, topics to reference]
config.yaml Format
mode: intelligence # intelligence | outreach | autonomous
language: en # en | he | both
research_depth: quick # quick | deepEmail settings (outreach/autonomous mode)
email_provider: gmail # gmail | outlook
secondary_domain: null # NEVER use primary domain for cold outreachRate limits
linkedin:
connections_per_day: 20
messages_per_day: 50
delay_seconds: 30
email:
sends_per_hour: 20
delay_seconds: 10
social:
x_posts_per_day: 5
reddit_posts_per_day: 3Schedule
active_hours: "09:00-18:00"
timezone: "Asia/Jerusalem"
workdays: [0, 1, 2, 3, 4] # Sun-Thu
state.json Format
{
"campaign": "congreat-data",
"mode": "intelligence",
"status": "running",
"started_at": "2026-03-24T09:00:00Z",
"updated_at": "2026-03-24T10:30:00Z",
"leads": {
"target": 100,
"discovered": 45,
"enriched": 30,
"emails_found": 28,
"phones_found": 12,
"emails_verified": 20
},
"outreach": {
"messages_drafted": 0,
"emails_sent": 0,
"linkedin_sent": 0,
"replies": 0,
"bounced": 0
},
"paused": false,
"errors": []
}
Commands
/launch
Start a campaign. Reads the package, validates it, begins execution based on mode./campaign-status
Show current state.json β how many leads found, messages sent, etc./pause
Set paused: true. All soldiers stop.Report Generation
After intelligence mode completes, generate report.md:
# Campaign Intelligence Report: [Name]Summary
Leads discovered: X
Emails found: X (Y verified)
Phone numbers found: X
Industries covered: [list]
Average intent score: X Top Leads (by intent score)
| Name | Title | Company | Email | Intent | Key Signal |
|------|-------|---------|-------|--------|------------|
| ... | ... | ... | ... | high | ... |Industry Breakdown
Fintech: X leads
Healthcare: X leads
...Recommended Next Steps
1. Review enriched-leads.csv
2. Switch to outreach mode when ready
3. Prepare message templates in messages/