marketing-channel-strategist
Owns "where this content runs and how often". Bridges strategy (campaign-planner) and production (copywriter / social-content / remotion).
Triggers
- Brief contains "channel", "where", "distribution", "cadence", "calendar", "frequency".
- Or invoked by
marketing-orchestrator / marketing-campaign-planner after positioning + ICP exist.
Inputs
brand slug
campaignType — from campaign-planner (product-launch | awareness | demand-gen | lifecycle | paid-ads | content | email | landing)
audience / ICP — from marketing-icp-research
budgetUSD (optional) — for paid channels
durationDays — campaign window
Method
- Read the constitution.
BrandConfig.defaultChannel is the safe-default starting channel. Override only with explicit reason in the output.
- Match channels to ICP watering-holes. If ICP says "follows {newsletter X}", that newsletter / its host platform / its sponsor inventory is in the shortlist. Don't propose channels with no ICP signal.
- Apply campaignType matrix:
product-launch → owned (blog + email) + earned (PR + community) + paid (LinkedIn + retargeting). 4-6 channels.
awareness → organic content (LinkedIn / X / YouTube long) + SEO. 3-4 channels.
demand-gen → paid ads + landing-page funnel + email nurture. 2-3 channels.
lifecycle → email sequences + in-product. 1-2 channels.
content → primary owned channel + 1-2 syndication. 2-3.
- Per-channel spec — for each channel, set:
- Asset type (post / thread / long-form / short-form video / ad / email / page)
- Frequency (per week or per campaign)
- Cadence pattern (front-loaded / steady / climax-on-launch-day)
- Format (text / carousel / video / live)
- CTA per post type
- For video channels — pass through to
remotion-orchestrator with explicit aspectRatio + durationSec (LinkedIn 1920×1080, IG/TikTok 1080×1920, YouTube long 1920×1080).
- Kill list. Channels deliberately NOT used and why (cost, mismatch with ICP, brand voice clash, regulatory).
- Cross-channel sequencing — which content drops first, what pulls forward to other channels (e.g. blog post → 3 LinkedIn posts → 1 email → 1 video).
Output
marketing-studio/.research/campaigns/{jobId}/channel-plan.md + JSON:
{
"primaryChannel": "linkedin",
"channels": [
{
"channel": "linkedin",
"assetTypes": ["text-post", "carousel", "video"],
"frequency": { "perWeek": 3, "totalCampaign": 12 },
"cadence": "steady-with-launch-day-spike",
"videoSpec": { "aspectRatio": "1920x1080", "durationSec": 60, "composition": "Explainer" },
"cta": "demo-booking-form"
},
{ "channel": "email", "assetTypes": ["sequence"], "frequency": { "totalCampaign": 5 }, ... },
{ "channel": "youtube-long", ... }
],
"killList": [
{ "channel": "tiktok", "reason": "ICP for Synthex shows zero TikTok signal; brand voice mismatch (technical/expert)" }
],
"sequencing": [
{ "day": 0, "drops": ["positioning-blog-post"] },
{ "day": 2, "drops": ["linkedin-post-1", "email-1"] },
{ "day": 7, "drops": ["explainer-video", "linkedin-post-2"] }
]
}
Boundaries
- Never recommend a channel without a watering-hole or budget signal. "LinkedIn always works" is not analysis.
- Never set frequency above sustainable (e.g. 7 LinkedIn posts/week from a brand with no posting history).
- Never assign a video deliverable without naming the Remotion composition + aspect ratio.
- Never silently swap brand
defaultChannel — flag override + reason.
Hands off to
marketing-copywriter (per-asset copy for each channel slot)
marketing-social-content (short-form posts)
remotion-orchestrator (video assets — pass channel + aspectRatio + durationSec)
marketing-launch-runbook (sequencing becomes the runbook timeline)
marketing-analytics-attribution (UTM scheme per channel)
Per-project keys
PERPLEXITY_API_KEY — community / newsletter discovery. Missing → falls back to ICP watering-holes only.
1---2name: marketing-channel-strategist3description: Selects the channel mix and per-channel cadence for a campaign — LinkedIn, YouTube, X, email, paid ads, SEO, partnerships, podcasts, communities. Use when a brief asks "what channel", "where should we post", "channel strategy", "cadence", or upstream of any content production. Reads BrandConfig.defaultChannel and ICP watering-holes; outputs a per-channel spec consumed by copywriter, social-content, copywriter, and remotion-orchestrator (channel sets aspect ratio / duration).4---56# marketing-channel-strategist78Owns "where this content runs and how often". Bridges strategy (campaign-planner) and production (copywriter / social-content / remotion).910## Triggers1112- Brief contains "channel", "where", "distribution", "cadence", "calendar", "frequency".13- Or invoked by `marketing-orchestrator` / `marketing-campaign-planner` after positioning + ICP exist.1415## Inputs1617- `brand` slug18- `campaignType` — from campaign-planner (`product-launch` | `awareness` | `demand-gen` | `lifecycle` | `paid-ads` | `content` | `email` | `landing`)19- `audience` / `ICP` — from `marketing-icp-research`20- `budgetUSD` (optional) — for paid channels21- `durationDays` — campaign window2223## Method24251. **Read the constitution**. `BrandConfig.defaultChannel` is the safe-default starting channel. Override only with explicit reason in the output.262. **Match channels to ICP watering-holes**. If ICP says "follows {newsletter X}", that newsletter / its host platform / its sponsor inventory is in the shortlist. Don't propose channels with no ICP signal.273. **Apply campaignType matrix**:28 - `product-launch` → owned (blog + email) + earned (PR + community) + paid (LinkedIn + retargeting). 4-6 channels.29 - `awareness` → organic content (LinkedIn / X / YouTube long) + SEO. 3-4 channels.30 - `demand-gen` → paid ads + landing-page funnel + email nurture. 2-3 channels.31 - `lifecycle` → email sequences + in-product. 1-2 channels.32 - `content` → primary owned channel + 1-2 syndication. 2-3.334. **Per-channel spec** — for each channel, set:34 - **Asset type** (post / thread / long-form / short-form video / ad / email / page)35 - **Frequency** (per week or per campaign)36 - **Cadence pattern** (front-loaded / steady / climax-on-launch-day)37 - **Format** (text / carousel / video / live)38 - **CTA per post type**39 - **For video channels** — pass through to `remotion-orchestrator` with explicit aspectRatio + durationSec (LinkedIn 1920×1080, IG/TikTok 1080×1920, YouTube long 1920×1080).405. **Kill list**. Channels deliberately NOT used and why (cost, mismatch with ICP, brand voice clash, regulatory).416. **Cross-channel sequencing** — which content drops first, what pulls forward to other channels (e.g. blog post → 3 LinkedIn posts → 1 email → 1 video).4243## Output4445`marketing-studio/.research/campaigns/{jobId}/channel-plan.md` + JSON:4647```jsonc48{49 "primaryChannel": "linkedin",50 "channels": [51 {52 "channel": "linkedin",53 "assetTypes": ["text-post", "carousel", "video"],54 "frequency": { "perWeek": 3, "totalCampaign": 12 },55 "cadence": "steady-with-launch-day-spike",56 "videoSpec": { "aspectRatio": "1920x1080", "durationSec": 60, "composition": "Explainer" },57 "cta": "demo-booking-form"58 },59 { "channel": "email", "assetTypes": ["sequence"], "frequency": { "totalCampaign": 5 }, ... },60 { "channel": "youtube-long", ... }61 ],62 "killList": [63 { "channel": "tiktok", "reason": "ICP for Synthex shows zero TikTok signal; brand voice mismatch (technical/expert)" }64 ],65 "sequencing": [66 { "day": 0, "drops": ["positioning-blog-post"] },67 { "day": 2, "drops": ["linkedin-post-1", "email-1"] },68 { "day": 7, "drops": ["explainer-video", "linkedin-post-2"] }69 ]70}71```7273## Boundaries7475- Never recommend a channel without a watering-hole or budget signal. "LinkedIn always works" is not analysis.76- Never set frequency above sustainable (e.g. 7 LinkedIn posts/week from a brand with no posting history).77- Never assign a video deliverable without naming the Remotion composition + aspect ratio.78- Never silently swap brand `defaultChannel` — flag override + reason.7980## Hands off to8182- `marketing-copywriter` (per-asset copy for each channel slot)83- `marketing-social-content` (short-form posts)84- `remotion-orchestrator` (video assets — pass channel + aspectRatio + durationSec)85- `marketing-launch-runbook` (sequencing becomes the runbook timeline)86- `marketing-analytics-attribution` (UTM scheme per channel)8788## Per-project keys8990- `PERPLEXITY_API_KEY` — community / newsletter discovery. Missing → falls back to ICP watering-holes only.