Best use case
Media Outreach Skill is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
## Overview
Teams using Media Outreach Skill 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/cfn-marketing-media-outreach/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Media Outreach Skill Compares
| Feature / Agent | Media Outreach Skill | 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?
## Overview
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.
SKILL.md Source
# Media Outreach Skill
## Overview
Manage journalist outreach, media pitching, and HARO (Help A Reporter Out) response automation. Find relevant journalists and track pitch engagement.
## Operations
### 1. search-journalists.sh
Search for journalists by beat, outlet, or topic using Muck Rack.
**Parameters**:
- `--beat` (optional): Journalist beat (tech/business/healthcare/finance)
- `--outlet` (optional): Media outlet name
- `--topic` (optional): Topic keyword
- `--limit` (optional): Result limit (default: 20)
**Example**:
```bash
./.claude/skills/cfn-marketing-media-outreach/operations/search-journalists.sh \
--beat "tech" \
--topic "AI automation" \
--limit 10
```
**Response**:
```json
{
"journalists": [
{
"id": "jour_123",
"name": "John Smith",
"outlet": "TechCrunch",
"beat": "tech",
"email": "john@techcrunch.com",
"twitter": "@johnsmith",
"recent_topics": ["AI", "automation", "SaaS"]
}
],
"total_results": 45
}
```
**Exit Codes**:
- 0: Success
- 1: Invalid parameters
- 2: API error
---
### 2. send-pitch.sh
Send personalized pitch to journalist via Mailshake.
**Parameters**:
- `--journalist-id` (required): Journalist ID from search
- `--subject` (required): Email subject line
- `--body` (required): Pitch email body
- `--follow-up-days` (optional): Days until follow-up (default: 3)
**Example**:
```bash
./.claude/skills/cfn-marketing-media-outreach/operations/send-pitch.sh \
--journalist-id "jour_123" \
--subject "AI Automation Platform Launch" \
--body "Hi John, I saw your recent piece on..." \
--follow-up-days 3
```
**Response**:
```json
{
"pitch_id": "pitch_abc123",
"journalist_id": "jour_123",
"status": "sent",
"sent_at": "2025-10-29T14:00:00Z",
"follow_up_scheduled": "2025-11-01T14:00:00Z"
}
```
**Exit Codes**:
- 0: Success
- 1: Invalid parameters
- 2: API error
- 3: Validation error
---
### 3. submit-haro-response.sh
Submit response to HARO query.
**Parameters**:
- `--query-id` (required): HARO query ID
- `--response` (required): Response text
- `--expert-name` (required): Expert name for attribution
- `--expert-title` (required): Expert title
- `--company-name` (required): Company name
**Example**:
```bash
./.claude/skills/cfn-marketing-media-outreach/operations/submit-haro-response.sh \
--query-id "haro_xyz789" \
--response "As an AI automation expert..." \
--expert-name "Jane Doe" \
--expert-title "CTO" \
--company-name "Company Inc"
```
**Response**:
```json
{
"submission_id": "sub_123",
"query_id": "haro_xyz789",
"status": "submitted",
"submitted_at": "2025-10-29T14:00:00Z",
"response_deadline": "2025-10-29T17:00:00Z"
}
```
**Exit Codes**:
- 0: Success
- 1: Invalid parameters
- 2: API error (missed deadline)
- 3: Validation error
**HARO Requirements**:
- Response time: <2 hours from query publication
- Query monitoring: 2-5 responses per day
- Personalization: Match query to company expertise
---
### 4. track-pitch-engagement.sh
Track pitch email engagement (opens, clicks, responses).
**Parameters**:
- `--pitch-id` (required): Pitch ID from send operation
- `--include-follow-ups` (optional): Include follow-up metrics (true/false, default: true)
**Example**:
```bash
./.claude/skills/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh \
--pitch-id "pitch_abc123"
```
**Response**:
```json
{
"pitch_id": "pitch_abc123",
"journalist_id": "jour_123",
"opens": 2,
"clicks": 1,
"replied": true,
"reply_received_at": "2025-10-30T09:15:00Z",
"follow_ups_sent": 1,
"last_activity": "2025-10-30T09:15:00Z"
}
```
**Exit Codes**:
- 0: Success
- 1: Invalid parameters
- 2: API error
## Environment Variables
- `N8N_BASE_URL`: n8n instance URL
- `N8N_API_KEY`: n8n API authentication key
## Integration
All operations use n8n webhooks for Muck Rack and Mailshake integration.Related Skills
Media Monitoring Skill
## Overview
supabase-schema-sync
Introspects Supabase DB after migrations and updates project db-query skill with current schema. Run after any migration to keep agent context accurate.
commit
Stage, commit, and push changes using a background github-commit-agent. Accepts optional args for message override or push control.
cfn-vote-implement
MUST BE USED after cfn-dry-review or cfn-alpha-launch:manifest produces a manifest. Also the verification phase of /cfn-loop-task. Do not manually implement code review suggestions - always route through this skill. 3-agent specialized voting. Unanimous (3/3) auto-implemented with TDD. 2/3 routed to product-owner agent. 1/3 surfaced to user via AskUserQuestion (batched 4 per call, at end).
cfn-utilities
Reusable bash utility functions for CFN Loop - logging, error handling, retry, file operations. Use when you need structured logging, atomic file operations, retry logic with exponential backoff, or standardized error handling in bash scripts.
CFN Test Runner Skill
**Version:** 1.0.0
cfn-test-framework
Test execution, running, and webapp testing for CFN
cfn-task-planning
Classify tasks, initialize structured configs with scope boundaries, decompose complex tasks
Specialist Injection Skill
## Purpose
!/bin/bash
# cfn-task-intelligence.sh
Task Complexity Estimator
**Version:** 1.0.0
task-classifier
Analyzes task descriptions and classifies them into categories for agent selection