Content Strategy
Build a data-driven content strategy with pillars, calendars, and editorial workflows.
Overview
A content strategy aligns your content efforts with business objectives, ensuring every piece you create serves a purpose. Without strategy, content becomes random acts of publishing that waste resources and fail to deliver results.
Strategy Framework
The Content Strategy Canvas
┌─────────────────────────────────────────────────────────────────────────────┐
│ Content Strategy Canvas │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ BUSINESS GOALS AUDIENCE POSITIONING │
│ ├── Revenue targets ├── Primary persona ├── Unique angle │
│ ├── Lead generation ├── Secondary personas ├── Voice & tone │
│ ├── Brand awareness ├── Pain points ├── Differentiators│
│ └── Customer retention └── Content preferences └── Key messages │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ CONTENT PILLARS DISTRIBUTION SUCCESS METRICS │
│ ├── Topic cluster 1 ├── Owned channels ├── Traffic KPIs │
│ ├── Topic cluster 2 ├── Earned channels ├── Engagement KPIs │
│ ├── Topic cluster 3 ├── Paid channels ├── Conversion KPIs │
│ └── Topic cluster 4 └── Timing/cadence └── Revenue KPIs │
│ │
└─────────────────────────────────────────────────────────────────────────────┘Setting Content Goals
SMART Content Goals
| Goal Component | Example | |----------------|---------| | Specific | Increase organic blog traffic | | Measurable | By 50% (from 20K to 30K monthly sessions) | | Achievable | Based on current growth rate and resources | | Relevant | Supports lead generation objective | | Time-bound | Within 6 months |
Goal-Content Mapping
interface ContentGoalMapping {
businessGoal: string;
contentObjective: string;
contentTypes: string[];
metrics: string[];
timeline: string;
}
const goalMappings: ContentGoalMapping[] = [
{
businessGoal: 'Generate 500 MQLs per month',
contentObjective: 'Create bottom-funnel content that converts',
contentTypes: ['case studies', 'comparison guides', 'ROI calculators'],
metrics: ['form submissions', 'demo requests', 'content-assisted conversions'],
timeline: 'Q1 2026'
},
{
businessGoal: 'Establish thought leadership',
contentObjective: 'Publish original research and insights',
contentTypes: ['industry reports', 'trend analysis', 'expert interviews'],
metrics: ['backlinks earned', 'media mentions', 'speaker invitations'],
timeline: 'Ongoing'
},
{
businessGoal: 'Reduce customer churn by 20%',
contentObjective: 'Create educational content for existing customers',
contentTypes: ['tutorials', 'best practices', 'advanced guides'],
metrics: ['feature adoption', 'support ticket reduction', 'NPS scores'],
timeline: 'Q2 2026'
}
];Content Pillars
Building Topic Clusters
Topic clusters organize content around core themes to establish authority:
┌──────────────────────────┐
│ PILLAR PAGE │
│ "Marketing Attribution │
│ Complete Guide" │
└───────────┬──────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ First-Touch │ │ Multi-Touch │ │ Data-Driven │
│ Attribution │◄─────────►│ Attribution │◄─────────►│ Attribution │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ How-to │ │ Models │ │ ML & │
│ Guide │ │ Compared│ │ AI │
└─────────┘ └─────────┘ └─────────┘Pillar Definition Template
interface ContentPillar {
name: string;
description: string;
pillarPage: {
title: string;
targetKeyword: string;
wordCount: number;
};
clusterTopics: {
topic: string;
targetKeyword: string;
searchIntent: 'informational' | 'commercial' | 'transactional';
priority: 'high' | 'medium' | 'low';
}[];
targetAudience: string[];
businessValue: string;
}
const attributionPillar: ContentPillar = {
name: 'Marketing Attribution',
description: 'Comprehensive coverage of attribution models and implementation',
pillarPage: {
title: 'The Complete Guide to Marketing Attribution',
targetKeyword: 'marketing attribution',
wordCount: 5000
},
clusterTopics: [
{
topic: 'First-Touch Attribution Explained',
targetKeyword: 'first touch attribution',
searchIntent: 'informational',
priority: 'high'
},
{
topic: 'Multi-Touch Attribution Models Compared',
targetKeyword: 'multi touch attribution models',
searchIntent: 'commercial',
priority: 'high'
},
{
topic: 'How to Set Up Attribution Tracking',
targetKeyword: 'attribution tracking setup',
searchIntent: 'informational',
priority: 'medium'
}
],
targetAudience: ['Marketing Managers', 'Growth Marketers', 'CMOs'],
businessValue: 'Positions product as attribution solution, drives demo requests'
};Editorial Calendar
Calendar Structure
interface EditorialCalendarEntry {
publishDate: string;
title: string;
contentType: 'blog' | 'video' | 'podcast' | 'ebook' | 'webinar';
pillar: string;
funnelStage: 'awareness' | 'consideration' | 'decision';
author: string;
status: 'idea' | 'brief' | 'writing' | 'review' | 'scheduled' | 'published';
targetKeyword: string;
distribution: string[];
notes: string;
}
const editorialCalendar: EditorialCalendarEntry[] = [
{
publishDate: '2026-01-15',
title: '2026 Marketing Attribution Benchmarks Report',
contentType: 'ebook',
pillar: 'Attribution',
funnelStage: 'awareness',
author: 'Sarah Johnson',
status: 'writing',
targetKeyword: 'marketing attribution benchmarks 2026',
distribution: ['email', 'linkedin', 'paid_social'],
notes: 'Include original survey data from 500 marketers'
},
{
publishDate: '2026-01-22',
title: 'How Acme Corp Increased ROAS by 340%',
contentType: 'blog',
pillar: 'Attribution',
funnelStage: 'decision',
author: 'Mike Chen',
status: 'brief',
targetKeyword: 'attribution case study',
distribution: ['email', 'linkedin', 'retargeting'],
notes: 'Get customer approval, include specific metrics'
}
];Publishing Cadence
| Content Type | Frequency | Best Days | Time | |--------------|-----------|-----------|------| | Blog Posts | 2-4/week | Tue, Wed, Thu | 9-11 AM | | Long-form Guides | 1-2/month | Tuesday | 10 AM | | Videos | 1-2/week | Wed, Fri | 2 PM | | Podcasts | Weekly | Monday | 6 AM | | Newsletters | Weekly | Thursday | 8 AM | | Social | Daily | Varies | Peak hours |
Content Audit
Audit Process
interface ContentAuditEntry {
url: string;
title: string;
publishDate: string;
lastUpdated: string;
wordCount: number;
// Performance metrics
organicTraffic: number;
backlinks: number;
avgTimeOnPage: number;
bounceRate: number;
conversions: number;
// Quality assessment
accuracy: 'current' | 'outdated' | 'incorrect';
comprehensiveness: 'complete' | 'partial' | 'thin';
optimization: 'optimized' | 'needs_work' | 'not_optimized';
// Recommendation
action: 'keep' | 'update' | 'consolidate' | 'redirect' | 'delete';
priority: 'high' | 'medium' | 'low';
notes: string;
}
function auditContent(entries: ContentAuditEntry[]): AuditSummary {
return {
totalPieces: entries.length,
byAction: {
keep: entries.filter(e => e.action === 'keep').length,
update: entries.filter(e => e.action === 'update').length,
consolidate: entries.filter(e => e.action === 'consolidate').length,
redirect: entries.filter(e => e.action === 'redirect').length,
delete: entries.filter(e => e.action === 'delete').length
},
topPerformers: entries.sort((a, b) => b.organicTraffic - a.organicTraffic).slice(0, 10),
updatePriorities: entries.filter(e => e.action === 'update' && e.priority === 'high')
};
}Audit Criteria
| Factor | Keep | Update | Delete/Redirect | |--------|------|--------|-----------------| | Traffic | Over 500/month | 100-500/month | Under 100/month | | Age | Under 12 months | 12-24 months | Over 24 months | | Accuracy | Current | Minor updates needed | Outdated/incorrect | | Rankings | Position 1-10 | Position 11-50 | Position 50+ or not ranking | | Conversions | Converting | Low conversion | No conversions |
Voice & Style Guide
Brand Voice Definition
interface BrandVoice {
personality: string[];
tone: {
formal_informal: number; // 1-10 scale
serious_playful: number;
technical_accessible: number;
};
vocabulary: {
preferred: string[];
avoid: string[];
};
examples: {
bad: string;
good: string;
context: string;
}[];
}
const brandVoice: BrandVoice = {
personality: ['Expert', 'Approachable', 'Practical', 'Data-driven'],
tone: {
formal_informal: 4, // Slightly informal
serious_playful: 6, // Professional but not dry
technical_accessible: 5 // Balance for mixed audience
},
vocabulary: {
preferred: [
'insights' over 'data',
'optimize' over 'improve',
'strategy' over 'plan',
'customers' over 'users'
],
avoid: [
'synergy', 'leverage', 'paradigm', 'circle back',
'low-hanging fruit', 'move the needle'
]
},
examples: [
{
bad: 'Leverage our best-in-class solution to optimize your ROI.',
good: 'See which marketing channels actually drive revenue.',
context: 'Product description'
}
]
};Competitive Analysis
Content Gap Analysis
interface CompetitorContentAnalysis {
competitor: string;
topContent: {
url: string;
topic: string;
estimatedTraffic: number;
backlinks: number;
wordCount: number;
}[];
contentGaps: {
topic: string;
ourCoverage: 'none' | 'weak' | 'strong';
competitorCoverage: 'none' | 'weak' | 'strong';
opportunity: 'high' | 'medium' | 'low';
}[];
differentiators: string[];
}
// Identify content opportunities
function findContentGaps(
ourContent: ContentAuditEntry[],
competitorContent: CompetitorContentAnalysis[]
): ContentOpportunity[] {
const opportunities: ContentOpportunity[] = [];
for (const competitor of competitorContent) {
for (const gap of competitor.contentGaps) {
if (gap.ourCoverage === 'none' && gap.competitorCoverage === 'strong') {
opportunities.push({
topic: gap.topic,
opportunity: gap.opportunity,
competitorExample: competitor.competitor,
recommendedAction: 'Create comprehensive content'
});
}
}
}
return opportunities.sort((a, b) =>
a.opportunity === 'high' ? -1 : b.opportunity === 'high' ? 1 : 0
);
}Resource Planning
Content Team Structure
Content Team Structure:
├── Content Director
│ └── Sets strategy, manages budget, reports to leadership
│
├── Managing Editor
│ └── Editorial calendar, quality control, workflow
│
├── Content Writers (2-4)
│ └── Create blog posts, guides, case studies
│
├── SEO Specialist
│ └── Keyword research, optimization, technical SEO
│
├── Designer/Video Editor
│ └── Graphics, videos, interactive content
│
└── Distribution Specialist
└── Social, email, paid promotionBudget Allocation
| Category | % of Budget | Activities | |----------|-------------|------------| | Creation | 50% | Writers, designers, freelancers | | Distribution | 25% | Paid promotion, tools | | Tools | 15% | SEO tools, CMS, analytics | | Training | 10% | Courses, conferences, books |
Implementation Roadmap
90-Day Content Strategy Launch
Days 1-30: Foundation
├── Complete content audit
├── Define target personas
├── Establish content pillars (3-5)
├── Set up editorial calendar
├── Create style guide
└── Configure analytics tracking
Days 31-60: Production
├── Create pillar page outlines
├── Develop content briefs template
├── Hire/assign content resources
├── Build content workflow
├── Set up distribution channels
└── Publish first cluster content
Days 61-90: Optimization
├── Analyze initial performance
├── Refine content templates
├── Optimize distribution timing
├── Build internal linking
├── Document processes
└── Plan next quarterRelated Guides: