Content SEO
Optimize content for search engines while maintaining quality for readers. Technical SEO fundamentals for content marketers.
Overview
Content SEO is the intersection of great writing and technical optimization. This guide covers the technical aspects of SEO that content creators need to understand—from keyword research methodology to on-page optimization, technical requirements, and performance tracking.
Keyword Research
Research Methodology
interface KeywordResearchProcess {
step1_seedKeywords: {
sources: [
'Product/service terminology',
'Customer language (support tickets, reviews)',
'Competitor websites',
'Industry publications',
'Internal search data'
];
output: 'List of 50-100 seed terms';
};
step2_expansion: {
tools: ['Ahrefs', 'Semrush', 'Google Keyword Planner'];
methods: [
'Related keywords',
'Questions (People Also Ask)',
'Autocomplete suggestions',
'Topic clusters'
];
output: 'Expanded list of 500+ keywords';
};
step3_analysis: {
metrics: {
searchVolume: 'Monthly searches';
difficulty: 'Competition score (0-100)';
cpc: 'Commercial intent indicator';
trend: 'Seasonal or growing';
};
output: 'Prioritized keyword database';
};
step4_mapping: {
categories: [
'Content type fit',
'Funnel stage alignment',
'Business priority',
'Resource requirements'
];
output: 'Content-keyword mapping';
};
}Keyword Types
Keyword Classification:
│
├── By Length
│ ├── Head Terms (1-2 words)
│ │ ├── High volume, high competition
│ │ ├── Example: "content marketing"
│ │ └── Strategy: Target with pillar pages
│ │
│ ├── Body Keywords (2-3 words)
│ │ ├── Medium volume, medium competition
│ │ ├── Example: "content marketing strategy"
│ │ └── Strategy: Target with in-depth guides
│ │
│ └── Long-Tail (4+ words)
│ ├── Lower volume, lower competition
│ ├── Example: "content marketing strategy for B2B SaaS"
│ └── Strategy: Target with specific articles
│
├── By Intent
│ ├── Informational
│ │ ├── Signals: how to, what is, guide, tutorial
│ │ └── Content: Educational articles, guides
│ │
│ ├── Navigational
│ │ ├── Signals: brand name, login, support
│ │ └── Content: Branded pages, documentation
│ │
│ ├── Commercial
│ │ ├── Signals: best, top, review, comparison
│ │ └── Content: Comparison posts, reviews
│ │
│ └── Transactional
│ ├── Signals: buy, pricing, discount, demo
│ └── Content: Product/pricing pages
│
└── By Funnel Position
├── Top of Funnel (Awareness)
│ └── "what is marketing attribution"
├── Middle of Funnel (Consideration)
│ └── "best attribution tools 2026"
└── Bottom of Funnel (Decision)
└── "pxlpeak pricing"Keyword Prioritization Matrix
| Factor | Weight | How to Score | |--------|--------|--------------| | Search Volume | 20% | Higher = better (relative to niche) | | Keyword Difficulty | 20% | Lower = better (under 40 ideal) | | Business Relevance | 25% | Direct product tie-in scores highest | | Conversion Potential | 25% | Commercial/transactional intent scores highest | | Content Gap | 10% | No existing content scores higher |
interface KeywordScore {
keyword: string;
metrics: {
searchVolume: number;
difficulty: number;
businessRelevance: 1 | 2 | 3 | 4 | 5;
conversionPotential: 1 | 2 | 3 | 4 | 5;
contentGap: boolean;
};
}
function calculatePriority(kw: KeywordScore): number {
const volumeScore = Math.min(kw.metrics.searchVolume / 1000, 5) * 0.20;
const difficultyScore = (100 - kw.metrics.difficulty) / 20 * 0.20;
const relevanceScore = kw.metrics.businessRelevance * 0.25;
const conversionScore = kw.metrics.conversionPotential * 0.25;
const gapScore = kw.metrics.contentGap ? 0.5 : 0 * 0.10;
return volumeScore + difficultyScore + relevanceScore + conversionScore + gapScore;
}
// Example prioritization
const keywordAnalysis: KeywordScore[] = [
{
keyword: 'marketing attribution',
metrics: {
searchVolume: 8100,
difficulty: 67,
businessRelevance: 5,
conversionPotential: 4,
contentGap: false
}
},
{
keyword: 'multi-touch attribution models',
metrics: {
searchVolume: 1900,
difficulty: 45,
businessRelevance: 5,
conversionPotential: 5,
contentGap: true
}
}
];On-Page SEO
Essential Elements
interface OnPageSEO {
titleTag: {
requirements: {
length: '50-60 characters';
keyword: 'Primary keyword near beginning';
uniqueness: 'Unique across entire site';
compelling: 'Includes benefit or hook';
};
formula: '[Primary Keyword]: [Benefit or Hook] | [Brand]';
examples: {
good: 'Marketing Attribution: The Complete 2026 Guide | pxlpeak';
bad: 'Attribution - Learn More About Marketing Attribution Here';
};
};
metaDescription: {
requirements: {
length: '150-160 characters';
keyword: 'Included naturally';
cta: 'Clear call to action';
value: 'Explains what reader gets';
};
formula: '[Value statement]. [Key benefit]. [CTA].';
examples: {
good: 'Learn how marketing attribution reveals your true ROI. Discover the right model for your business and see which channels actually drive revenue. Get started free.';
bad: 'This article is about marketing attribution and why it matters for businesses.';
};
};
url: {
requirements: {
length: 'Under 75 characters';
structure: 'Short, descriptive, keyword-included';
format: 'Lowercase, hyphen-separated';
avoid: 'Parameters, special characters, dates';
};
examples: {
good: '/docs/attribution/complete-guide';
bad: '/docs/2026/01/marketing-attribution-complete-guide-everything-you-need-to-know';
};
};
headings: {
h1: {
count: 'Exactly one per page';
keyword: 'Primary keyword included';
format: 'Clear, descriptive, matches title intent';
};
h2: {
purpose: 'Main section breaks';
keyword: 'Secondary keywords where natural';
count: '3-8 per long-form content';
};
h3_h6: {
purpose: 'Subsection organization';
rule: 'Never skip levels (H2 → H4)';
};
};
content: {
keyword_placement: [
'In first 100 words',
'In at least one H2',
'Naturally throughout (1-2% density)',
'In image alt text where relevant'
];
semantic_keywords: 'Related terms and synonyms';
links: {
internal: '3-5 relevant internal links';
external: '2-3 authoritative external sources';
};
};
}On-Page Checklist
## On-Page SEO Checklist
### Title Tag
- [ ] Under 60 characters (check in SERP preview)
- [ ] Primary keyword within first 5 words
- [ ] Unique across all pages
- [ ] Compelling/click-worthy
- [ ] Brand name included (if space allows)
### Meta Description
- [ ] 150-160 characters
- [ ] Primary keyword included naturally
- [ ] Clear value proposition
- [ ] Call to action
- [ ] No duplicate across pages
### URL
- [ ] Short and descriptive
- [ ] Primary keyword included
- [ ] Lowercase, hyphen-separated
- [ ] No parameters or special characters
- [ ] No dates (unless news content)
### Headings
- [ ] Single H1 with primary keyword
- [ ] H2s for main sections (include secondary keywords)
- [ ] Proper hierarchy (no skipped levels)
- [ ] Descriptive and scannable
### Content Body
- [ ] Primary keyword in first 100 words
- [ ] Natural keyword density (1-2%)
- [ ] Semantic keywords throughout
- [ ] Answers search intent completely
- [ ] Better than competing content
### Links
- [ ] 3-5 internal links to relevant content
- [ ] 2-3 external links to authority sources
- [ ] Descriptive anchor text (not "click here")
- [ ] Links open appropriately (same/new tab)
- [ ] No broken links
### Images
- [ ] Descriptive file names (hyphen-separated)
- [ ] Alt text describes image content
- [ ] Alt text includes keyword where natural
- [ ] Optimized file size
- [ ] Proper dimensions specifiedTechnical SEO for Content
Page Speed Optimization
interface PageSpeedOptimization {
images: {
format: 'WebP with JPEG/PNG fallback';
sizing: 'Serve correctly sized images';
loading: 'lazy for below-fold, eager for above-fold';
srcset: 'Responsive images for different viewports';
cdn: 'Serve from CDN for global performance';
};
javascript: {
splitting: 'Code split per route';
loading: 'Defer non-critical scripts';
bundling: 'Tree-shake unused code';
thirdParty: 'Audit and minimize third-party scripts';
};
css: {
critical: 'Inline critical CSS';
loading: 'Async load non-critical CSS';
purging: 'Remove unused CSS';
};
caching: {
browser: 'Set appropriate cache headers';
cdn: 'Use CDN for static assets';
invalidation: 'Clear cache on content updates';
};
serverOptimization: {
compression: 'Gzip or Brotli compression';
http2: 'Enable HTTP/2';
preconnect: 'Preconnect to required origins';
};
}Core Web Vitals Targets
| Metric | Good | Needs Improvement | Poor | What It Measures | |--------|------|-------------------|------|------------------| | LCP | ≤2.5s | 2.5s - 4s | >4s | Loading performance | | INP | ≤200ms | 200ms - 500ms | >500ms | Interactivity | | CLS | ≤0.1 | 0.1 - 0.25 | >0.25 | Visual stability |
// Optimize for Core Web Vitals
const coreWebVitalsChecklist = {
lcp: {
identify: 'Find LCP element (usually hero image or H1)',
optimize: [
'Preload LCP image',
'Remove render-blocking resources',
'Optimize server response time',
'Use CDN for assets'
]
},
inp: {
identify: 'Find slow interactions',
optimize: [
'Break up long tasks',
'Yield to main thread frequently',
'Minimize JavaScript execution',
'Use web workers for heavy computation'
]
},
cls: {
identify: 'Find layout shifts',
optimize: [
'Set explicit dimensions on images/embeds',
'Reserve space for dynamic content',
'Avoid inserting content above existing content',
'Use transform for animations'
]
}
};Mobile Optimization
## Mobile SEO Checklist
### Responsive Design
- [ ] Content readable without horizontal scrolling
- [ ] Text size at least 16px
- [ ] Line height at least 1.5
- [ ] Adequate spacing between paragraphs
### Touch Targets
- [ ] Buttons/links at least 48x48px
- [ ] Adequate spacing between touch targets (8px minimum)
- [ ] No overlapping click areas
### Content Parity
- [ ] Same content on mobile and desktop
- [ ] No hidden content on mobile
- [ ] Images visible and appropriately sized
- [ ] Videos playable on mobile
### Performance
- [ ] Page loads under 3 seconds on 3G
- [ ] First Contentful Paint under 1.8s
- [ ] No layout shift on loadStructured Data
Schema Markup Types
<!-- Article Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Marketing Attribution: The Complete Guide",
"description": "Learn everything about marketing attribution...",
"image": "https://www.pxlpeak.com/images/attribution-guide.jpg",
"author": {
"@type": "Person",
"name": "Sarah Johnson",
"url": "https://www.pxlpeak.com/authors/sarah-johnson"
},
"publisher": {
"@type": "Organization",
"name": "pxlpeak",
"logo": {
"@type": "ImageObject",
"url": "https://www.pxlpeak.com/logo.png"
}
},
"datePublished": "2026-01-12",
"dateModified": "2026-01-12",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.pxlpeak.com/docs/attribution/complete-guide"
}
}
</script>
<!-- FAQ Schema (for featured snippets) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is marketing attribution?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Marketing attribution is the process of identifying which marketing channels, campaigns, and touchpoints contribute to customer conversions. It helps marketers understand the customer journey and allocate budget effectively."
}
},
{
"@type": "Question",
"name": "Which attribution model should I use?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The best attribution model depends on your sales cycle and marketing mix. Short sales cycles often work with last-touch; longer B2B cycles benefit from multi-touch models like linear or position-based attribution."
}
}
]
}
</script>
<!-- How-To Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Set Up Marketing Attribution",
"description": "Step-by-step guide to implementing marketing attribution",
"totalTime": "PT30M",
"step": [
{
"@type": "HowToStep",
"name": "Install tracking code",
"text": "Add the pxlpeak tracking snippet to your website header"
},
{
"@type": "HowToStep",
"name": "Configure UTM parameters",
"text": "Set up UTM tracking for all marketing campaigns"
},
{
"@type": "HowToStep",
"name": "Define conversions",
"text": "Configure your conversion events in the dashboard"
},
{
"@type": "HowToStep",
"name": "Select attribution model",
"text": "Choose the attribution model that fits your business"
}
]
}
</script>
<!-- Breadcrumb Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Docs",
"item": "https://www.pxlpeak.com/docs"
},
{
"@type": "ListItem",
"position": 2,
"name": "Attribution",
"item": "https://www.pxlpeak.com/docs/attribution"
},
{
"@type": "ListItem",
"position": 3,
"name": "Complete Guide",
"item": "https://www.pxlpeak.com/docs/attribution/complete-guide"
}
]
}
</script>Schema Implementation
// Dynamic schema generation
interface SchemaConfig {
article: {
headline: string;
description: string;
image: string;
author: {
name: string;
url: string;
};
datePublished: string;
dateModified: string;
};
faq: {
question: string;
answer: string;
}[];
howTo: {
name: string;
description: string;
steps: {
name: string;
text: string;
}[];
};
}
function generateArticleSchema(config: SchemaConfig['article']) {
return {
'@context': 'https://schema.org',
'@type': 'Article',
headline: config.headline,
description: config.description,
image: config.image,
author: {
'@type': 'Person',
name: config.author.name,
url: config.author.url
},
publisher: {
'@type': 'Organization',
name: 'pxlpeak',
logo: {
'@type': 'ImageObject',
url: 'https://www.pxlpeak.com/logo.png'
}
},
datePublished: config.datePublished,
dateModified: config.dateModified
};
}Content Optimization
E-E-A-T Signals
interface EEATOptimization {
experience: {
definition: 'First-hand experience with topic';
signals: [
'Personal anecdotes and case studies',
'Original screenshots and data',
'Detailed implementation examples',
'Specific results and outcomes'
];
};
expertise: {
definition: 'Knowledge and skill in the topic area';
signals: [
'Author credentials and bio',
'Technical depth and accuracy',
'Industry-specific terminology',
'Citations to authoritative sources'
];
};
authoritativeness: {
definition: 'Recognition as a source in the field';
signals: [
'Backlinks from respected sites',
'Mentions in industry publications',
'Social proof (shares, testimonials)',
'Brand recognition'
];
};
trustworthiness: {
definition: 'Accuracy, honesty, and safety';
signals: [
'Accurate, fact-checked information',
'Clear attribution of sources',
'Transparent authorship',
'Secure website (HTTPS)',
'Clear contact information',
'Privacy policy and terms'
];
};
}
// Implement E-E-A-T in content
const eeatChecklist = {
authorPage: {
required: [
'Professional photo',
'Detailed bio',
'Credentials/certifications',
'Social profiles',
'List of published content'
]
},
contentSignals: {
required: [
'Author byline with link to profile',
'Published and updated dates',
'Sources cited for claims',
'Original data or examples',
'Expert quotes where relevant'
]
},
siteSignals: {
required: [
'About page with company info',
'Contact information',
'Privacy policy',
'Editorial guidelines',
'HTTPS everywhere'
]
}
};Content Quality Signals
| Signal | Impact | How to Optimize | |--------|--------|-----------------| | Comprehensiveness | High | Cover all aspects of topic | | Originality | High | Unique data, insights, or angle | | Freshness | Medium | Update regularly with new info | | Readability | Medium | Clear structure, plain language | | Multimedia | Medium | Images, videos, interactive elements | | User Engagement | High | Time on page, scroll depth, low bounce |
Internal Linking
Link Strategy
interface InternalLinkingStrategy {
contextual: {
purpose: 'Pass authority and help navigation';
density: '2-3 links per 500 words';
anchorText: 'Descriptive, keyword-relevant';
placement: 'Within content body, naturally';
};
topicalClusters: {
pillarToCluster: 'Pillar links to all related cluster pages';
clusterToPillar: 'Every cluster links back to pillar';
clusterToCluster: 'Cross-link related cluster pages';
};
navigation: {
breadcrumbs: 'Category > Subcategory > Page';
relatedPosts: '3-5 related articles in sidebar/footer';
nextPrev: 'Sequential navigation in series';
};
strategic: {
priorityPages: 'Link often to money pages';
newContent: 'Add links from high-authority pages';
orphanPrevention: 'Every page has at least one internal link';
};
}
// Link audit function
function auditInternalLinks(pages: Page[]): LinkAudit {
return {
orphanPages: pages.filter(p => p.incomingLinks === 0),
underlinked: pages.filter(p => p.incomingLinks < 3),
overlinked: pages.filter(p => p.outgoingLinks > 10),
brokenLinks: pages.flatMap(p => p.links.filter(l => l.status === 404))
};
}Anchor Text Best Practices
## Anchor Text Guidelines
### Good Anchor Text
- Descriptive of destination page
- Includes relevant keywords naturally
- Varies across links to same page
- Flows naturally in sentence
### Examples
**Good:**
- "Learn more about [marketing attribution models]"
- "See our [complete guide to conversion tracking]"
- "Review the [attribution implementation checklist]"
**Bad:**
- "Click [here] to learn more"
- "[Read more]"
- "[Marketing attribution marketing attribution models guide]" (keyword stuffing)
### Anchor Text Ratio
- Branded: 30-40%
- Exact match: 10-20%
- Partial match: 20-30%
- Generic: 10-20%
- URL: 5-10%SEO Tracking & Measurement
Key Metrics
interface SEOMetrics {
rankings: {
keywordsTracked: number;
avgPosition: number;
top3: number;
top10: number;
top20: number;
featuredSnippets: number;
positionChanges: Record<string, number>;
};
organic: {
sessions: number;
users: number;
newUsers: number;
bounceRate: number;
pagesPerSession: number;
avgSessionDuration: number;
};
searchConsole: {
impressions: number;
clicks: number;
ctr: number;
avgPosition: number;
topQueries: Query[];
topPages: Page[];
};
conversions: {
organicConversions: number;
organicRevenue: number;
conversionRate: number;
assistedConversions: number;
};
}
interface Query {
query: string;
impressions: number;
clicks: number;
ctr: number;
position: number;
}Tracking Implementation
// Track SEO performance with pxlpeak
pxlpeak.track('page_view', {
page_path: window.location.pathname,
page_title: document.title,
// Traffic source
source: getUTMParameter('utm_source') || 'direct',
medium: getUTMParameter('utm_medium') || 'none',
// SEO context
organic_landing: isOrganicLanding(),
search_query: getSearchQuery(), // If available
// Content metadata
content_type: 'documentation',
primary_keyword: 'marketing attribution',
word_count: 3500,
publish_date: '2026-01-12',
last_updated: '2026-01-12'
});
// Track conversions from organic
pxlpeak.conversion({
type: 'demo_request',
value: 500, // Estimated value
properties: {
source: 'organic',
landing_page: '/docs/attribution/complete-guide',
content_pillar: 'attribution',
touchpoints_before_conversion: 3
}
});
// Search Console integration
const searchData = await pxlpeak.seo.getSearchConsoleData({
siteId: 'site_xxx',
dateRange: { start: '2026-01-01', end: '2026-01-31' },
dimensions: ['query', 'page'],
filters: [
{ field: 'page', operator: 'contains', value: '/docs/' }
]
});SEO Dashboard Metrics
## Monthly SEO Report Template
### Rankings Overview
| Metric | This Month | Last Month | Change |
|--------|------------|------------|--------|
| Keywords in Top 3 | X | X | ±X |
| Keywords in Top 10 | X | X | ±X |
| Average Position | X.X | X.X | ±X.X |
| Featured Snippets | X | X | ±X |
### Organic Traffic
| Metric | This Month | Last Month | YoY |
|--------|------------|------------|-----|
| Sessions | X | X | X% |
| Users | X | X | X% |
| Pages/Session | X.X | X.X | X% |
| Bounce Rate | X% | X% | X% |
### Top Performing Pages
| Page | Sessions | Position | Impressions |
|------|----------|----------|-------------|
| /page-1 | X | X.X | X |
| /page-2 | X | X.X | X |
### Conversion Impact
| Metric | Value |
|--------|-------|
| Organic Conversions | X |
| Organic Revenue | $X |
| Conversion Rate | X% |SEO Tools
Recommended Stack
| Category | Tool | Use Case | |----------|------|----------| | Research | Ahrefs | Keyword research, competitor analysis | | Research | Semrush | All-in-one SEO platform | | Research | Google Keyword Planner | Volume data | | Technical | Screaming Frog | Site audits | | Technical | Google Search Console | Performance data | | Speed | PageSpeed Insights | Core Web Vitals | | Tracking | pxlpeak | Traffic and conversions | | Content | Clearscope | Content optimization | | Content | Surfer SEO | SERP analysis |
Tool Integration
// Automated SEO monitoring
interface SEOMonitoring {
daily: {
rankTracking: 'Position changes for target keywords';
crawlErrors: 'New 404s or server errors';
indexStatus: 'Pages indexed/deindexed';
};
weekly: {
backlinks: 'New and lost backlinks';
competitors: 'Competitor position changes';
opportunities: 'New ranking opportunities';
};
monthly: {
fullAudit: 'Technical SEO audit';
contentAudit: 'Content performance review';
strategyReview: 'Keyword strategy assessment';
};
}
// Alerts configuration
const seoAlerts = {
critical: [
{ condition: 'Position drop > 10 for priority keyword', action: 'Immediate review' },
{ condition: 'Pages deindexed > 5', action: 'Technical investigation' },
{ condition: 'Core Web Vitals fail', action: 'Performance audit' }
],
warning: [
{ condition: 'Organic traffic down > 10% WoW', action: 'Analysis' },
{ condition: 'New competitor ranking', action: 'Competitive review' },
{ condition: 'Backlink lost from DA 50+ site', action: 'Outreach' }
]
};Common SEO Issues
Technical Issues & Fixes
| Issue | Impact | Fix | |-------|--------|-----| | Duplicate content | High | Canonical tags, 301 redirects | | Slow page speed | High | Image optimization, caching, CDN | | Mobile issues | High | Responsive design, touch targets | | Broken links | Medium | Regular audits, redirects | | Missing meta tags | Medium | Template enforcement | | Thin content | Medium | Content expansion or consolidation | | Orphan pages | Low | Internal linking | | Missing alt text | Low | Image optimization process |
Content Issues & Fixes
| Issue | Impact | Fix | |-------|--------|-----| | Wrong search intent | High | Rewrite to match intent | | Outdated information | High | Regular content updates | | Missing subtopics | Medium | Content expansion | | Poor structure | Medium | Heading optimization | | No internal links | Medium | Link building campaign | | Keyword cannibalization | Medium | Consolidate or differentiate |
Related Guides: