Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "content-brief-generator",
|
||||||
|
"description": "Generate comprehensive content briefs for writers, ensuring clarity, alignment, and strategic content creation across all formats.",
|
||||||
|
"version": "0.0.0-2025.11.28",
|
||||||
|
"author": {
|
||||||
|
"name": "James Rochabrun",
|
||||||
|
"email": "jamesrochabrun@gmail.com"
|
||||||
|
},
|
||||||
|
"skills": [
|
||||||
|
"./skills/content-brief-generator"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# content-brief-generator
|
||||||
|
|
||||||
|
Generate comprehensive content briefs for writers, ensuring clarity, alignment, and strategic content creation across all formats.
|
||||||
64
plugin.lock.json
Normal file
64
plugin.lock.json
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:jamesrochabrun/skills:content-brief-generator",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "aae7fbbb5316872513b4f33fab4fe0885b882423",
|
||||||
|
"treeHash": "16c649cee9b976c82947d92c3232c865093496bd8d206300b34d3e15824aeca9",
|
||||||
|
"generatedAt": "2025-11-28T10:17:45.949725Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "content-brief-generator",
|
||||||
|
"description": "Generate comprehensive content briefs for writers, ensuring clarity, alignment, and strategic content creation across all formats."
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "141b870b3737c1af89ca66524932f04404eeae1bc4519d09989bfeda4ebc682b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "3f222e2672c0b0456302e9d80925d05ac06153b7586ae508dc8c13edab3c1003"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/SKILL.md",
|
||||||
|
"sha256": "c095d8bba8680c204e8cc42d02136572f096ac2e9f1bdbb572668f09d36240d8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/references/seo_guidelines.md",
|
||||||
|
"sha256": "7412aaea577c3c169bdbd32ee973a52fb6024749787f33ae1dbc5dd5d52b32fa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/references/content_frameworks.md",
|
||||||
|
"sha256": "6ce59fb58f08890ff4e88958608eadcf0fe91b39d50f4cd3f3081e72847c3589"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/references/tone_voice_guide.md",
|
||||||
|
"sha256": "e22d903c004908701049061a187567b4ba0b11f3562360934e2479c79b5540a6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/scripts/generate_brief.sh",
|
||||||
|
"sha256": "af93aaa4111d2525299eab4789525c674cd32dbd37dcde48e24cf172ec60e022"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/content-brief-generator/scripts/validate_brief.sh",
|
||||||
|
"sha256": "2722d6e31f2135d1b3d97a68a6088c512a4a418254355fb18f54a0f39b5a3805"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "16c649cee9b976c82947d92c3232c865093496bd8d206300b34d3e15824aeca9"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
496
skills/content-brief-generator/SKILL.md
Normal file
496
skills/content-brief-generator/SKILL.md
Normal file
@@ -0,0 +1,496 @@
|
|||||||
|
---
|
||||||
|
name: content-brief-generator
|
||||||
|
description: Generate comprehensive content briefs for writers, ensuring clarity, alignment, and strategic content creation across all formats.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Content Brief Generator
|
||||||
|
|
||||||
|
A comprehensive skill for creating detailed content briefs that guide writers, ensure consistency, and align content with business goals.
|
||||||
|
|
||||||
|
## What This Skill Does
|
||||||
|
|
||||||
|
Helps you create professional content briefs for:
|
||||||
|
- **Blog posts and articles** - Thought leadership, tutorials, how-tos
|
||||||
|
- **Technical documentation** - API docs, guides, README files
|
||||||
|
- **Marketing copy** - Landing pages, email campaigns, ads
|
||||||
|
- **Social media content** - Posts, campaigns, threads
|
||||||
|
- **Case studies** - Customer success stories
|
||||||
|
- **Whitepapers and reports** - In-depth research content
|
||||||
|
- **Product descriptions** - E-commerce and product pages
|
||||||
|
- **Video scripts** - YouTube, explainer videos, demos
|
||||||
|
|
||||||
|
## Why Content Briefs Matter
|
||||||
|
|
||||||
|
**Without a brief:**
|
||||||
|
- Unclear expectations and scope
|
||||||
|
- Multiple rounds of revisions
|
||||||
|
- Inconsistent tone and messaging
|
||||||
|
- Missing SEO opportunities
|
||||||
|
- Wasted time and resources
|
||||||
|
|
||||||
|
**With a brief:**
|
||||||
|
- Clear direction and goals
|
||||||
|
- Fewer revisions needed
|
||||||
|
- Consistent quality
|
||||||
|
- SEO-optimized content
|
||||||
|
- Efficient workflow
|
||||||
|
|
||||||
|
## Core Components of a Content Brief
|
||||||
|
|
||||||
|
### 1. Content Overview
|
||||||
|
- Title/working title
|
||||||
|
- Content type (blog, doc, landing page, etc.)
|
||||||
|
- Target audience
|
||||||
|
- Primary goal (educate, convert, entertain, etc.)
|
||||||
|
- Key message or takeaway
|
||||||
|
|
||||||
|
### 2. Audience & Context
|
||||||
|
- Target persona
|
||||||
|
- Reader's knowledge level
|
||||||
|
- Pain points and needs
|
||||||
|
- Where they are in the funnel
|
||||||
|
- How they'll discover content
|
||||||
|
|
||||||
|
### 3. Strategic Elements
|
||||||
|
- Business objectives
|
||||||
|
- SEO keywords and intent
|
||||||
|
- Competitive landscape
|
||||||
|
- Success metrics
|
||||||
|
- CTAs and conversion goals
|
||||||
|
|
||||||
|
### 4. Content Requirements
|
||||||
|
- Tone and voice
|
||||||
|
- Length/word count
|
||||||
|
- Structure and sections
|
||||||
|
- Research requirements
|
||||||
|
- Visual/media needs
|
||||||
|
|
||||||
|
### 5. SEO & Distribution
|
||||||
|
- Primary and secondary keywords
|
||||||
|
- Search intent
|
||||||
|
- Meta description
|
||||||
|
- Internal/external links
|
||||||
|
- Distribution channels
|
||||||
|
|
||||||
|
## Content Types & Templates
|
||||||
|
|
||||||
|
### Blog Post Brief
|
||||||
|
**Use for:** Thought leadership, tutorials, listicles, how-tos
|
||||||
|
|
||||||
|
**Key elements:**
|
||||||
|
- Hook and introduction angle
|
||||||
|
- Main points (typically 3-7)
|
||||||
|
- Examples and data to include
|
||||||
|
- Call-to-action
|
||||||
|
- Internal linking strategy
|
||||||
|
|
||||||
|
### Technical Documentation Brief
|
||||||
|
**Use for:** API docs, guides, developer documentation
|
||||||
|
|
||||||
|
**Key elements:**
|
||||||
|
- Technical accuracy requirements
|
||||||
|
- Code examples needed
|
||||||
|
- Audience technical level
|
||||||
|
- Prerequisites
|
||||||
|
- Related documentation
|
||||||
|
|
||||||
|
### Landing Page Brief
|
||||||
|
**Use for:** Product pages, signup pages, campaign pages
|
||||||
|
|
||||||
|
**Key elements:**
|
||||||
|
- Value proposition
|
||||||
|
- Benefits vs. features
|
||||||
|
- Social proof requirements
|
||||||
|
- Conversion goal
|
||||||
|
- A/B testing plan
|
||||||
|
|
||||||
|
### Case Study Brief
|
||||||
|
**Use for:** Customer success stories, testimonials
|
||||||
|
|
||||||
|
**Key elements:**
|
||||||
|
- Customer background
|
||||||
|
- Problem/solution/results framework
|
||||||
|
- Metrics and outcomes
|
||||||
|
- Quotes needed
|
||||||
|
- Industry context
|
||||||
|
|
||||||
|
## Content Structure Frameworks
|
||||||
|
|
||||||
|
### AIDA (Attention, Interest, Desire, Action)
|
||||||
|
**Best for:** Marketing copy, sales pages
|
||||||
|
|
||||||
|
1. **Attention:** Grab with headline
|
||||||
|
2. **Interest:** Build with benefits
|
||||||
|
3. **Desire:** Create want with proof
|
||||||
|
4. **Action:** Drive with clear CTA
|
||||||
|
|
||||||
|
### PAS (Problem, Agitate, Solve)
|
||||||
|
**Best for:** Blog posts, email campaigns
|
||||||
|
|
||||||
|
1. **Problem:** Identify pain point
|
||||||
|
2. **Agitate:** Emphasize urgency
|
||||||
|
3. **Solve:** Present solution
|
||||||
|
|
||||||
|
### Inverted Pyramid
|
||||||
|
**Best for:** News, technical docs
|
||||||
|
|
||||||
|
1. Most important info first
|
||||||
|
2. Supporting details
|
||||||
|
3. Background context
|
||||||
|
|
||||||
|
### Storytelling Arc
|
||||||
|
**Best for:** Case studies, narratives
|
||||||
|
|
||||||
|
1. Setup (character/situation)
|
||||||
|
2. Conflict (challenge)
|
||||||
|
3. Resolution (solution)
|
||||||
|
4. Takeaway (lesson)
|
||||||
|
|
||||||
|
## SEO Integration
|
||||||
|
|
||||||
|
### Keyword Strategy
|
||||||
|
- Primary keyword (1)
|
||||||
|
- Secondary keywords (2-3)
|
||||||
|
- Long-tail variations (3-5)
|
||||||
|
- LSI keywords (related terms)
|
||||||
|
|
||||||
|
### Search Intent
|
||||||
|
- **Informational:** Learn about something
|
||||||
|
- **Navigational:** Find specific page
|
||||||
|
- **Commercial:** Compare options
|
||||||
|
- **Transactional:** Ready to buy
|
||||||
|
|
||||||
|
### On-Page SEO
|
||||||
|
- Title tag (include primary keyword)
|
||||||
|
- Meta description (compelling + keyword)
|
||||||
|
- Headers (H1, H2, H3 with keywords)
|
||||||
|
- Image alt text
|
||||||
|
- Internal linking
|
||||||
|
|
||||||
|
## Tone & Voice Guidelines
|
||||||
|
|
||||||
|
### Tone Spectrum
|
||||||
|
- **Formal ↔ Casual**
|
||||||
|
- **Serious ↔ Playful**
|
||||||
|
- **Respectful ↔ Irreverent**
|
||||||
|
- **Enthusiastic ↔ Matter-of-fact**
|
||||||
|
|
||||||
|
### Voice Attributes
|
||||||
|
Define your brand voice:
|
||||||
|
- **Professional but approachable** (like Stripe)
|
||||||
|
- **Technical but friendly** (like Twilio)
|
||||||
|
- **Playful and bold** (like Mailchimp)
|
||||||
|
- **Authoritative and trustworthy** (like HubSpot)
|
||||||
|
|
||||||
|
### Writing Style
|
||||||
|
- Active vs. passive voice
|
||||||
|
- Person (1st, 2nd, 3rd)
|
||||||
|
- Sentence length
|
||||||
|
- Paragraph structure
|
||||||
|
- Use of jargon
|
||||||
|
|
||||||
|
## Research & Sourcing
|
||||||
|
|
||||||
|
### Research Requirements
|
||||||
|
- **Primary research:** Interviews, surveys, original data
|
||||||
|
- **Secondary research:** Industry reports, competitor analysis
|
||||||
|
- **Expert quotes:** SME interviews, third-party experts
|
||||||
|
- **Data and statistics:** Credible sources, recent data
|
||||||
|
- **Examples:** Real-world cases, screenshots
|
||||||
|
|
||||||
|
### Citation Standards
|
||||||
|
- Link to original sources
|
||||||
|
- Attribute quotes
|
||||||
|
- Recent data (within 1-2 years)
|
||||||
|
- Authoritative sources
|
||||||
|
- Fact-checking requirements
|
||||||
|
|
||||||
|
## Visual & Media Requirements
|
||||||
|
|
||||||
|
### Images
|
||||||
|
- Hero image specifications
|
||||||
|
- In-content images (how many, what type)
|
||||||
|
- Screenshots or diagrams
|
||||||
|
- Charts or infographics
|
||||||
|
- Alt text requirements
|
||||||
|
|
||||||
|
### Video/Audio
|
||||||
|
- Video length and format
|
||||||
|
- Screen recordings needed
|
||||||
|
- B-roll requirements
|
||||||
|
- Audio quality standards
|
||||||
|
|
||||||
|
### Other Media
|
||||||
|
- Code snippets
|
||||||
|
- Downloadable resources
|
||||||
|
- Interactive elements
|
||||||
|
- Embedded content
|
||||||
|
|
||||||
|
## Workflow & Process
|
||||||
|
|
||||||
|
### 1. Brief Creation (This Skill)
|
||||||
|
Use `generate_brief.sh` to create comprehensive brief
|
||||||
|
|
||||||
|
### 2. Research & Outline
|
||||||
|
Writer researches and creates outline
|
||||||
|
|
||||||
|
### 3. First Draft
|
||||||
|
Writer creates content following brief
|
||||||
|
|
||||||
|
### 4. Review & Edit
|
||||||
|
Editor reviews against brief requirements
|
||||||
|
|
||||||
|
### 5. SEO Optimization
|
||||||
|
SEO review and optimization
|
||||||
|
|
||||||
|
### 6. Final Approval
|
||||||
|
Stakeholder sign-off
|
||||||
|
|
||||||
|
### 7. Publication
|
||||||
|
Publish and distribute
|
||||||
|
|
||||||
|
### 8. Performance Tracking
|
||||||
|
Monitor metrics defined in brief
|
||||||
|
|
||||||
|
## Success Metrics by Content Type
|
||||||
|
|
||||||
|
### Blog Post
|
||||||
|
- Organic traffic
|
||||||
|
- Time on page (3+ minutes)
|
||||||
|
- Scroll depth
|
||||||
|
- Social shares
|
||||||
|
- Backlinks
|
||||||
|
- Lead generation
|
||||||
|
|
||||||
|
### Technical Documentation
|
||||||
|
- Page views
|
||||||
|
- Time on page
|
||||||
|
- Search rankings
|
||||||
|
- Feedback ratings
|
||||||
|
- Support ticket reduction
|
||||||
|
|
||||||
|
### Landing Page
|
||||||
|
- Conversion rate
|
||||||
|
- Bounce rate
|
||||||
|
- Time on page
|
||||||
|
- Click-through rate
|
||||||
|
- Form submissions
|
||||||
|
|
||||||
|
### Case Study
|
||||||
|
- Downloads
|
||||||
|
- Leads generated
|
||||||
|
- Sales pipeline influence
|
||||||
|
- Share rate
|
||||||
|
|
||||||
|
## Common Content Brief Mistakes
|
||||||
|
|
||||||
|
### ❌ Avoid These
|
||||||
|
|
||||||
|
**Too Vague:**
|
||||||
|
"Write about our product"
|
||||||
|
→ No clear audience, goal, or angle
|
||||||
|
|
||||||
|
**No Research:**
|
||||||
|
Missing competitor analysis and keyword research
|
||||||
|
→ Content won't rank or differentiate
|
||||||
|
|
||||||
|
**Unclear Voice:**
|
||||||
|
"Make it engaging"
|
||||||
|
→ Not specific enough for consistency
|
||||||
|
|
||||||
|
**Missing CTAs:**
|
||||||
|
No clear next step for readers
|
||||||
|
→ Missed conversion opportunities
|
||||||
|
|
||||||
|
**Ignoring SEO:**
|
||||||
|
No keyword strategy
|
||||||
|
→ Content won't be discovered
|
||||||
|
|
||||||
|
### ✅ Do This Instead
|
||||||
|
|
||||||
|
**Specific:**
|
||||||
|
"Write 1500-word tutorial for junior developers on JWT authentication, including code examples in Node.js"
|
||||||
|
|
||||||
|
**Research-Backed:**
|
||||||
|
"Target keyword 'JWT authentication tutorial' (2.4K monthly searches), compete with existing articles from Auth0 and FreeCodeCamp"
|
||||||
|
|
||||||
|
**Clear Voice:**
|
||||||
|
"Technical but approachable - explain like a senior dev mentoring a junior, use examples, avoid jargon"
|
||||||
|
|
||||||
|
**Action-Oriented:**
|
||||||
|
"CTA: Sign up for free API key, secondary: Join Discord community"
|
||||||
|
|
||||||
|
**SEO-Optimized:**
|
||||||
|
"Primary: 'JWT authentication', Secondary: 'JSON web token Node.js', 'secure API authentication'"
|
||||||
|
|
||||||
|
## Using This Skill
|
||||||
|
|
||||||
|
### Generate a Content Brief
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/generate_brief.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Interactive workflow will guide you through:
|
||||||
|
1. Content type and audience
|
||||||
|
2. Goals and objectives
|
||||||
|
3. SEO requirements
|
||||||
|
4. Structure and requirements
|
||||||
|
5. Success metrics
|
||||||
|
|
||||||
|
### Validate a Brief
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/validate_brief.sh path/to/brief.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Checks for:
|
||||||
|
- Required sections present
|
||||||
|
- Keyword strategy defined
|
||||||
|
- Target audience specified
|
||||||
|
- Success metrics included
|
||||||
|
- Completeness score
|
||||||
|
|
||||||
|
### Access Templates
|
||||||
|
|
||||||
|
```
|
||||||
|
references/content_brief_template.md - Complete template
|
||||||
|
references/seo_guidelines.md - SEO best practices
|
||||||
|
references/content_frameworks.md - Structure frameworks
|
||||||
|
references/tone_voice_guide.md - Voice guidelines
|
||||||
|
```
|
||||||
|
|
||||||
|
## Content Brief Checklist
|
||||||
|
|
||||||
|
- [ ] **Clear title** and content type
|
||||||
|
- [ ] **Target audience** defined with persona details
|
||||||
|
- [ ] **Primary goal** and business objective
|
||||||
|
- [ ] **Keyword research** completed
|
||||||
|
- [ ] **Search intent** identified
|
||||||
|
- [ ] **Tone and voice** specified
|
||||||
|
- [ ] **Word count** target
|
||||||
|
- [ ] **Structure** and key sections outlined
|
||||||
|
- [ ] **Research sources** identified
|
||||||
|
- [ ] **Examples** and data requirements
|
||||||
|
- [ ] **Visual needs** specified
|
||||||
|
- [ ] **CTAs** defined
|
||||||
|
- [ ] **Success metrics** established
|
||||||
|
- [ ] **Competitor content** analyzed
|
||||||
|
- [ ] **Distribution plan** outlined
|
||||||
|
|
||||||
|
## Quick Start Examples
|
||||||
|
|
||||||
|
### "Create a blog post brief"
|
||||||
|
System generates comprehensive brief with:
|
||||||
|
- SEO keyword strategy
|
||||||
|
- Audience targeting
|
||||||
|
- Structure recommendations
|
||||||
|
- Success metrics
|
||||||
|
|
||||||
|
### "Write technical documentation brief for API"
|
||||||
|
System creates technical brief with:
|
||||||
|
- Technical requirements
|
||||||
|
- Code example specifications
|
||||||
|
- Audience skill level
|
||||||
|
- Documentation standards
|
||||||
|
|
||||||
|
### "Generate landing page brief"
|
||||||
|
System builds conversion-focused brief with:
|
||||||
|
- Value proposition guidance
|
||||||
|
- CTA strategy
|
||||||
|
- A/B testing recommendations
|
||||||
|
- Conversion metrics
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
### 1. Start With Research
|
||||||
|
- Analyze top-ranking content
|
||||||
|
- Understand search intent
|
||||||
|
- Identify content gaps
|
||||||
|
- Review competitor approach
|
||||||
|
|
||||||
|
### 2. Be Specific
|
||||||
|
- Exact word count
|
||||||
|
- Specific examples needed
|
||||||
|
- Clear tone guidelines
|
||||||
|
- Defined success metrics
|
||||||
|
|
||||||
|
### 3. Align With Strategy
|
||||||
|
- Connect to business goals
|
||||||
|
- Fit content calendar
|
||||||
|
- Support funnel stage
|
||||||
|
- Match brand voice
|
||||||
|
|
||||||
|
### 4. Make It Actionable
|
||||||
|
- Clear deliverables
|
||||||
|
- Specific requirements
|
||||||
|
- Concrete examples
|
||||||
|
- Measurable outcomes
|
||||||
|
|
||||||
|
### 5. Iterate and Improve
|
||||||
|
- Track performance
|
||||||
|
- Update based on results
|
||||||
|
- Refine over time
|
||||||
|
- Learn from top performers
|
||||||
|
|
||||||
|
## Integration With Other Workflows
|
||||||
|
|
||||||
|
### Content Calendar
|
||||||
|
Brief creation triggers calendar entry
|
||||||
|
|
||||||
|
### SEO Tools
|
||||||
|
Keywords from SEMrush, Ahrefs, etc.
|
||||||
|
|
||||||
|
### Project Management
|
||||||
|
Brief becomes Jira/Asana task
|
||||||
|
|
||||||
|
### CMS
|
||||||
|
Brief exported to content management system
|
||||||
|
|
||||||
|
### Analytics
|
||||||
|
Success metrics tracked in dashboards
|
||||||
|
|
||||||
|
## Tips for Different Writer Types
|
||||||
|
|
||||||
|
### Content Writers
|
||||||
|
- Focus on audience and storytelling
|
||||||
|
- Emphasize research requirements
|
||||||
|
- Clear brand voice guidelines
|
||||||
|
|
||||||
|
### Technical Writers
|
||||||
|
- Specify technical accuracy needs
|
||||||
|
- Define audience knowledge level
|
||||||
|
- Include code example requirements
|
||||||
|
|
||||||
|
### Copywriters
|
||||||
|
- Highlight conversion goals
|
||||||
|
- Specify A/B testing needs
|
||||||
|
- Clear CTA strategy
|
||||||
|
|
||||||
|
### Content Marketers
|
||||||
|
- Connect to funnel stage
|
||||||
|
- Define distribution strategy
|
||||||
|
- Specify lead generation goals
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
All reference materials included:
|
||||||
|
- Complete content brief template
|
||||||
|
- SEO optimization guidelines
|
||||||
|
- Content structure frameworks
|
||||||
|
- Tone and voice development guide
|
||||||
|
- Copywriting formulas and examples
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
Content briefs ensure:
|
||||||
|
- **Clarity** - Everyone knows expectations
|
||||||
|
- **Efficiency** - Fewer revisions needed
|
||||||
|
- **Quality** - Consistent, strategic content
|
||||||
|
- **Results** - Content that achieves goals
|
||||||
|
|
||||||
|
Use this skill to create comprehensive briefs that guide writers to success.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Remember:** Time spent on a good brief saves 10x time in revisions. Get it right before writing begins.
|
||||||
707
skills/content-brief-generator/references/content_frameworks.md
Normal file
707
skills/content-brief-generator/references/content_frameworks.md
Normal file
@@ -0,0 +1,707 @@
|
|||||||
|
# Content Structure Frameworks
|
||||||
|
|
||||||
|
Proven frameworks for organizing and writing compelling content.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Content frameworks are repeatable structures that guide writing and ensure your content achieves its goals. Use these templates to outline before writing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AIDA (Attention, Interest, Desire, Action)
|
||||||
|
|
||||||
|
**Best for:** Marketing copy, sales pages, landing pages, email campaigns
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Attention (Headline/Hook)**
|
||||||
|
- Grab attention immediately
|
||||||
|
- Promise a benefit
|
||||||
|
- Create curiosity
|
||||||
|
|
||||||
|
**2. Interest (Build engagement)**
|
||||||
|
- Explain the problem
|
||||||
|
- Show you understand their pain
|
||||||
|
- Present relevant information
|
||||||
|
|
||||||
|
**3. Desire (Create want)**
|
||||||
|
- Show benefits and outcomes
|
||||||
|
- Provide social proof
|
||||||
|
- Paint a picture of success
|
||||||
|
|
||||||
|
**4. Action (Drive conversion)**
|
||||||
|
- Clear call-to-action
|
||||||
|
- Remove friction
|
||||||
|
- Create urgency
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Stop Wasting Hours on Manual Testing [Attention]
|
||||||
|
|
||||||
|
## Testing doesn't have to be painful [Interest]
|
||||||
|
- Current state of manual testing
|
||||||
|
- Why it's time-consuming
|
||||||
|
- Hidden costs of bugs in production
|
||||||
|
|
||||||
|
## Automated testing changes everything [Desire]
|
||||||
|
- Save 20 hours per week
|
||||||
|
- Catch bugs before deployment
|
||||||
|
- Team testimonials
|
||||||
|
- ROI calculator
|
||||||
|
|
||||||
|
## Start automating today [Action]
|
||||||
|
- Free trial (no credit card)
|
||||||
|
- 5-minute setup
|
||||||
|
- CTA button
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## PAS (Problem, Agitate, Solve)
|
||||||
|
|
||||||
|
**Best for:** Blog posts, emails, social media, persuasive content
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Problem**
|
||||||
|
- Identify the pain point
|
||||||
|
- Show you understand it
|
||||||
|
- Make it relatable
|
||||||
|
|
||||||
|
**2. Agitate**
|
||||||
|
- Amplify the problem
|
||||||
|
- Show consequences of inaction
|
||||||
|
- Create urgency
|
||||||
|
- Use emotion
|
||||||
|
|
||||||
|
**3. Solve**
|
||||||
|
- Present your solution
|
||||||
|
- Show how it solves the problem
|
||||||
|
- Provide proof
|
||||||
|
- Call-to-action
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Problem: Your API is slow
|
||||||
|
- Users complain about response times
|
||||||
|
- You're losing customers
|
||||||
|
- You don't know why
|
||||||
|
|
||||||
|
# Agitate: It's getting worse
|
||||||
|
- Every 100ms delay = 1% revenue loss
|
||||||
|
- Competitors are faster
|
||||||
|
- Your reputation suffers
|
||||||
|
- Engineers are overwhelmed debugging
|
||||||
|
|
||||||
|
# Solve: Our monitoring platform
|
||||||
|
- Real-time performance tracking
|
||||||
|
- Identify bottlenecks instantly
|
||||||
|
- Optimize before users notice
|
||||||
|
- Case study: 50% faster in 2 weeks
|
||||||
|
- CTA: Start free trial
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Inverted Pyramid
|
||||||
|
|
||||||
|
**Best for:** News articles, technical documentation, business content
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Most important (Lead)**
|
||||||
|
- Who, what, when, where, why (5 Ws)
|
||||||
|
- Key information first
|
||||||
|
- Answer main question
|
||||||
|
|
||||||
|
**2. Supporting details**
|
||||||
|
- Context and background
|
||||||
|
- Additional facts
|
||||||
|
- Quotes and data
|
||||||
|
|
||||||
|
**3. Background information**
|
||||||
|
- Less critical details
|
||||||
|
- Historical context
|
||||||
|
- Related information
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Lead (Most important)
|
||||||
|
Next.js 14 released today with major performance improvements:
|
||||||
|
- 50% faster builds
|
||||||
|
- Built-in caching
|
||||||
|
- Server Actions stable
|
||||||
|
|
||||||
|
# Supporting details
|
||||||
|
- How Server Actions work
|
||||||
|
- Performance benchmarks
|
||||||
|
- Migration guide from v13
|
||||||
|
- Developer quotes
|
||||||
|
|
||||||
|
# Background
|
||||||
|
- History of Next.js
|
||||||
|
- Previous version features
|
||||||
|
- Future roadmap
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Storytelling Arc
|
||||||
|
|
||||||
|
**Best for:** Case studies, brand stories, narrative content, testimonials
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Setup (Character & Context)**
|
||||||
|
- Introduce protagonist
|
||||||
|
- Set the scene
|
||||||
|
- Establish normal state
|
||||||
|
|
||||||
|
**2. Conflict (Challenge)**
|
||||||
|
- Problem arises
|
||||||
|
- Stakes are established
|
||||||
|
- Tension builds
|
||||||
|
|
||||||
|
**3. Resolution (Solution)**
|
||||||
|
- How problem was solved
|
||||||
|
- Journey and obstacles
|
||||||
|
- Transformation
|
||||||
|
|
||||||
|
**4. Takeaway (Lesson)**
|
||||||
|
- What was learned
|
||||||
|
- Broader implications
|
||||||
|
- Call-to-action
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Setup
|
||||||
|
- Meet Sarah, CTO of startup
|
||||||
|
- Team of 20 engineers
|
||||||
|
- Managing infrastructure manually
|
||||||
|
|
||||||
|
# Conflict
|
||||||
|
- Infrastructure costs spiraling
|
||||||
|
- Deployment taking 4 hours
|
||||||
|
- Engineers frustrated
|
||||||
|
- Investors questioning spend
|
||||||
|
|
||||||
|
# Resolution
|
||||||
|
- Discovered our platform
|
||||||
|
- Implemented in 2 weeks
|
||||||
|
- Automated deployments
|
||||||
|
- Cut costs 60%
|
||||||
|
|
||||||
|
# Takeaway
|
||||||
|
- Infrastructure-as-code is essential
|
||||||
|
- Right tools unlock velocity
|
||||||
|
- CTA: See how you can automate
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## How-To / Tutorial
|
||||||
|
|
||||||
|
**Best for:** Educational content, guides, tutorials, instructions
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Introduction**
|
||||||
|
- What you'll learn
|
||||||
|
- Why it matters
|
||||||
|
- Prerequisites
|
||||||
|
- Time estimate
|
||||||
|
|
||||||
|
**2. Step-by-step instructions**
|
||||||
|
- Numbered sequential steps
|
||||||
|
- One action per step
|
||||||
|
- Screenshots/code examples
|
||||||
|
- Expected results
|
||||||
|
|
||||||
|
**3. Troubleshooting**
|
||||||
|
- Common errors
|
||||||
|
- Solutions
|
||||||
|
- How to get help
|
||||||
|
|
||||||
|
**4. Conclusion**
|
||||||
|
- What you accomplished
|
||||||
|
- Next steps
|
||||||
|
- Related resources
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# How to Deploy a Next.js App to Vercel
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
- What you'll build
|
||||||
|
- Prerequisites: Node.js, Git, Next.js app
|
||||||
|
- Time: 10 minutes
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
1. Create Vercel account
|
||||||
|
- Go to vercel.com
|
||||||
|
- Sign up with GitHub
|
||||||
|
- Screenshot
|
||||||
|
|
||||||
|
2. Connect repository
|
||||||
|
- Click "New Project"
|
||||||
|
- Select repo
|
||||||
|
- Screenshot
|
||||||
|
|
||||||
|
3. Configure settings
|
||||||
|
- Framework: Next.js
|
||||||
|
- Build command
|
||||||
|
- Environment variables
|
||||||
|
|
||||||
|
4. Deploy
|
||||||
|
- Click "Deploy"
|
||||||
|
- Wait for build
|
||||||
|
- View live site
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
- Build fails: Check Node version
|
||||||
|
- ENV vars missing: Add in settings
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
- Custom domain
|
||||||
|
- CI/CD integration
|
||||||
|
- Performance monitoring
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Listicle
|
||||||
|
|
||||||
|
**Best for:** Top X articles, roundups, comparison posts, curated lists
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Introduction**
|
||||||
|
- Why this list matters
|
||||||
|
- How items were selected
|
||||||
|
- Quick overview
|
||||||
|
|
||||||
|
**2. List items (typically 5-10)**
|
||||||
|
- Each item: Title + description
|
||||||
|
- Benefits and features
|
||||||
|
- Examples or screenshots
|
||||||
|
- Why it's on the list
|
||||||
|
|
||||||
|
**3. Conclusion**
|
||||||
|
- Summary
|
||||||
|
- Recommendation
|
||||||
|
- CTA
|
||||||
|
|
||||||
|
### Listicle Types
|
||||||
|
|
||||||
|
**Numbered (Ranked):**
|
||||||
|
- Best to worst
|
||||||
|
- Most to least important
|
||||||
|
- Sequential order
|
||||||
|
|
||||||
|
**Bulleted (Unranked):**
|
||||||
|
- Equal weight
|
||||||
|
- Any order
|
||||||
|
- No hierarchy
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 7 Essential VS Code Extensions for Python Developers
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
- Why VS Code for Python
|
||||||
|
- How we selected these
|
||||||
|
- All are free
|
||||||
|
|
||||||
|
## List
|
||||||
|
1. Pylance
|
||||||
|
- What it does
|
||||||
|
- Key features
|
||||||
|
- Installation
|
||||||
|
- Screenshot
|
||||||
|
|
||||||
|
2. Python (Microsoft)
|
||||||
|
- Core extension
|
||||||
|
- Debugging features
|
||||||
|
- Why it's #1
|
||||||
|
|
||||||
|
[Continue for 7 items]
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
- Start with top 3
|
||||||
|
- Try others as needed
|
||||||
|
- CTA: Share your favorites
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comparison / Versus
|
||||||
|
|
||||||
|
**Best for:** Product comparisons, alternative posts, decision content
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Introduction**
|
||||||
|
- What's being compared
|
||||||
|
- Why it matters
|
||||||
|
- Quick verdict (optional)
|
||||||
|
|
||||||
|
**2. Overview of each option**
|
||||||
|
- Brief description
|
||||||
|
- Key features
|
||||||
|
- Ideal user
|
||||||
|
|
||||||
|
**3. Head-to-head comparison**
|
||||||
|
- Feature by feature
|
||||||
|
- Use table format
|
||||||
|
- Pros and cons
|
||||||
|
|
||||||
|
**4. Use cases**
|
||||||
|
- When to use Option A
|
||||||
|
- When to use Option B
|
||||||
|
- Special scenarios
|
||||||
|
|
||||||
|
**5. Verdict**
|
||||||
|
- Recommendation
|
||||||
|
- Decision framework
|
||||||
|
- CTA
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# React vs Vue: Which Framework to Choose in 2024
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
- Both are popular
|
||||||
|
- Key differences matter
|
||||||
|
- We'll help you decide
|
||||||
|
|
||||||
|
## React Overview
|
||||||
|
- Created by Facebook
|
||||||
|
- JSX syntax
|
||||||
|
- Large ecosystem
|
||||||
|
- Best for: Enterprise
|
||||||
|
|
||||||
|
## Vue Overview
|
||||||
|
- Progressive framework
|
||||||
|
- Template syntax
|
||||||
|
- Gentle learning curve
|
||||||
|
- Best for: Rapid development
|
||||||
|
|
||||||
|
## Feature Comparison
|
||||||
|
|
||||||
|
| Feature | React | Vue |
|
||||||
|
|---------|-------|-----|
|
||||||
|
| Learning curve | Steep | Gentle |
|
||||||
|
| Performance | Excellent | Excellent |
|
||||||
|
| Ecosystem | Huge | Growing |
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
- Choose React if: Large team, TypeScript
|
||||||
|
- Choose Vue if: Solo dev, quick prototype
|
||||||
|
|
||||||
|
## Verdict
|
||||||
|
- No wrong choice
|
||||||
|
- Context matters
|
||||||
|
- CTA: Try both with tutorial
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ultimate Guide / Pillar Content
|
||||||
|
|
||||||
|
**Best for:** Comprehensive resources, cornerstone content, authority building
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Introduction (Table of Contents)**
|
||||||
|
- What's covered
|
||||||
|
- Who it's for
|
||||||
|
- How to use guide
|
||||||
|
- Jump links to sections
|
||||||
|
|
||||||
|
**2. Fundamentals**
|
||||||
|
- Basic concepts
|
||||||
|
- Terminology
|
||||||
|
- Why it matters
|
||||||
|
|
||||||
|
**3. Deep Dive Sections**
|
||||||
|
- Multiple major sections
|
||||||
|
- Each could be standalone post
|
||||||
|
- Comprehensive coverage
|
||||||
|
|
||||||
|
**4. Advanced Topics**
|
||||||
|
- Expert-level content
|
||||||
|
- Edge cases
|
||||||
|
- Best practices
|
||||||
|
|
||||||
|
**5. Resources**
|
||||||
|
- Tools and software
|
||||||
|
- Further reading
|
||||||
|
- Related guides
|
||||||
|
|
||||||
|
**6. FAQ**
|
||||||
|
- Common questions
|
||||||
|
- Quick answers
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# The Complete Guide to API Authentication (2024)
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
[Jump links to all sections]
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
- Why authentication matters
|
||||||
|
- What you'll learn
|
||||||
|
- Who this is for
|
||||||
|
|
||||||
|
## Part 1: Authentication Basics
|
||||||
|
- What is authentication vs authorization
|
||||||
|
- Common methods overview
|
||||||
|
- Security principles
|
||||||
|
|
||||||
|
## Part 2: API Keys
|
||||||
|
- How they work
|
||||||
|
- Implementation guide
|
||||||
|
- Pros and cons
|
||||||
|
- Best practices
|
||||||
|
|
||||||
|
## Part 3: OAuth 2.0
|
||||||
|
- OAuth flow explained
|
||||||
|
- Implementation
|
||||||
|
- Use cases
|
||||||
|
- Security considerations
|
||||||
|
|
||||||
|
## Part 4: JWT Tokens
|
||||||
|
- How JWT works
|
||||||
|
- Implement in Node.js
|
||||||
|
- Refresh tokens
|
||||||
|
- Security tips
|
||||||
|
|
||||||
|
## Part 5: Best Practices
|
||||||
|
- Security checklist
|
||||||
|
- Performance optimization
|
||||||
|
- Error handling
|
||||||
|
- Testing authentication
|
||||||
|
|
||||||
|
## Tools & Resources
|
||||||
|
- Libraries and frameworks
|
||||||
|
- Testing tools
|
||||||
|
- Further reading
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
- 10+ common questions
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
- Key takeaways
|
||||||
|
- Choose right method
|
||||||
|
- Next steps
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Feature Announcement
|
||||||
|
|
||||||
|
**Best for:** Product launches, new feature releases, updates
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Headline + Visual**
|
||||||
|
- Clear announcement
|
||||||
|
- What's new
|
||||||
|
- Eye-catching graphic
|
||||||
|
|
||||||
|
**2. The Problem**
|
||||||
|
- What users struggled with
|
||||||
|
- Why we built this
|
||||||
|
|
||||||
|
**3. The Solution**
|
||||||
|
- How feature solves it
|
||||||
|
- Key benefits
|
||||||
|
- Demo or video
|
||||||
|
|
||||||
|
**4. How It Works**
|
||||||
|
- Step-by-step
|
||||||
|
- Screenshots
|
||||||
|
- Technical details
|
||||||
|
|
||||||
|
**5. Availability**
|
||||||
|
- Who can use it
|
||||||
|
- How to access
|
||||||
|
- Pricing (if applicable)
|
||||||
|
|
||||||
|
**6. What's Next**
|
||||||
|
- Future improvements
|
||||||
|
- Feedback request
|
||||||
|
- Related features
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Introducing Real-Time Collaboration
|
||||||
|
|
||||||
|
[Hero image/GIF]
|
||||||
|
|
||||||
|
## The Problem
|
||||||
|
- Users couldn't work together
|
||||||
|
- Version conflicts
|
||||||
|
- Lost changes
|
||||||
|
|
||||||
|
## The Solution
|
||||||
|
- Live cursors
|
||||||
|
- Instant updates
|
||||||
|
- Conflict resolution
|
||||||
|
- 50ms latency
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
1. Invite team members
|
||||||
|
2. See who's online
|
||||||
|
3. Work simultaneously
|
||||||
|
4. Changes sync instantly
|
||||||
|
|
||||||
|
## Available Now
|
||||||
|
- All Pro plans
|
||||||
|
- No additional cost
|
||||||
|
- Enable in settings
|
||||||
|
|
||||||
|
## What's Next
|
||||||
|
- Comments coming soon
|
||||||
|
- Video chat integration
|
||||||
|
- We'd love your feedback
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Thought Leadership / Opinion
|
||||||
|
|
||||||
|
**Best for:** Industry commentary, trend analysis, hot takes
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
**1. Strong Opening**
|
||||||
|
- Contrarian take or
|
||||||
|
- Bold prediction or
|
||||||
|
- Provocative question
|
||||||
|
|
||||||
|
**2. Current State**
|
||||||
|
- What most people think
|
||||||
|
- Common assumptions
|
||||||
|
- Status quo
|
||||||
|
|
||||||
|
**3. Your Perspective**
|
||||||
|
- Why you disagree or
|
||||||
|
- What others are missing
|
||||||
|
- Your unique insight
|
||||||
|
|
||||||
|
**4. Evidence**
|
||||||
|
- Data and examples
|
||||||
|
- Trends you're seeing
|
||||||
|
- Expert opinions
|
||||||
|
|
||||||
|
**5. Implications**
|
||||||
|
- What this means
|
||||||
|
- Who's affected
|
||||||
|
- What should change
|
||||||
|
|
||||||
|
**6. Call-to-Action**
|
||||||
|
- What readers should do
|
||||||
|
- Discussion prompt
|
||||||
|
- Share thoughts
|
||||||
|
|
||||||
|
### Example Outline
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Microservices Are Overrated (And Here's Why)
|
||||||
|
|
||||||
|
## Opening
|
||||||
|
- Everyone wants microservices
|
||||||
|
- Most don't need them
|
||||||
|
- Monoliths are underrated
|
||||||
|
|
||||||
|
## Current State
|
||||||
|
- Industry trends
|
||||||
|
- Why microservices are popular
|
||||||
|
- What blogs/consultants say
|
||||||
|
|
||||||
|
## My Perspective
|
||||||
|
- Complexity costs
|
||||||
|
- Most apps aren't at scale
|
||||||
|
- Premature optimization
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
- Case studies of failures
|
||||||
|
- Cost analysis
|
||||||
|
- When microservices make sense
|
||||||
|
|
||||||
|
## Implications
|
||||||
|
- Start with monolith
|
||||||
|
- Extract services later
|
||||||
|
- Focus on business value
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
- Challenge the hype
|
||||||
|
- Make informed decisions
|
||||||
|
- Share your experience
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Framework Selection Guide
|
||||||
|
|
||||||
|
**Choose framework based on:**
|
||||||
|
|
||||||
|
| Goal | Best Framework |
|
||||||
|
|------|----------------|
|
||||||
|
| Drive conversions | AIDA, PAS |
|
||||||
|
| Educate/inform | Inverted Pyramid, How-To |
|
||||||
|
| Build authority | Ultimate Guide, Thought Leadership |
|
||||||
|
| Compare options | Comparison, Listicle |
|
||||||
|
| Tell story | Storytelling Arc |
|
||||||
|
| Announce feature | Feature Announcement |
|
||||||
|
|
||||||
|
**Multiple frameworks:**
|
||||||
|
- Can combine frameworks
|
||||||
|
- Example: Storytelling intro + How-To body
|
||||||
|
- Adapt to your needs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template for Any Framework
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# [Compelling Title]
|
||||||
|
|
||||||
|
## Hook (First 100 words)
|
||||||
|
- Grab attention
|
||||||
|
- State problem or benefit
|
||||||
|
- Include primary keyword
|
||||||
|
|
||||||
|
## Body (Main content)
|
||||||
|
- [Apply chosen framework]
|
||||||
|
- Use subheadings
|
||||||
|
- Include examples
|
||||||
|
- Add visuals
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
- Summarize key points
|
||||||
|
- Reinforce main takeaway
|
||||||
|
- Clear CTA
|
||||||
|
|
||||||
|
## Additional Resources
|
||||||
|
- Internal links
|
||||||
|
- External references
|
||||||
|
- Further reading
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Remember:** Frameworks are starting points, not rigid rules. Adapt them to your content needs and audience.
|
||||||
730
skills/content-brief-generator/references/seo_guidelines.md
Normal file
730
skills/content-brief-generator/references/seo_guidelines.md
Normal file
@@ -0,0 +1,730 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# SEO Guidelines for Content Briefs
|
||||||
|
|
||||||
|
Comprehensive SEO best practices for content writers to rank higher and drive organic traffic.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SEO Fundamentals
|
||||||
|
|
||||||
|
### What is SEO?
|
||||||
|
|
||||||
|
**Search Engine Optimization (SEO)** is the practice of optimizing content to rank higher in search engine results pages (SERPs) and drive organic (unpaid) traffic.
|
||||||
|
|
||||||
|
**Key components:**
|
||||||
|
- **Technical SEO:** Site structure, performance, indexing
|
||||||
|
- **On-page SEO:** Content optimization, keywords, meta tags
|
||||||
|
- **Off-page SEO:** Backlinks, domain authority, social signals
|
||||||
|
|
||||||
|
**This guide focuses on on-page SEO for content creation.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyword Research
|
||||||
|
|
||||||
|
### Finding the Right Keywords
|
||||||
|
|
||||||
|
**1. Start with seed keywords**
|
||||||
|
- Your main topic or product
|
||||||
|
- What users search for
|
||||||
|
- Industry terminology
|
||||||
|
|
||||||
|
**2. Expand with keyword tools**
|
||||||
|
- **Google Keyword Planner** (free)
|
||||||
|
- **Ahrefs** (paid, comprehensive)
|
||||||
|
- **SEMrush** (paid, competitive analysis)
|
||||||
|
- **Ubersuggest** (freemium)
|
||||||
|
- **AnswerThePublic** (question-based keywords)
|
||||||
|
|
||||||
|
**3. Analyze keyword metrics**
|
||||||
|
|
||||||
|
| Metric | What It Means | Good Target |
|
||||||
|
|--------|---------------|-------------|
|
||||||
|
| Search Volume | Monthly searches | 500-10K for most content |
|
||||||
|
| Keyword Difficulty | Competition (0-100) | < 40 for newer sites |
|
||||||
|
| CPC | Paid ad cost | Higher = more commercial |
|
||||||
|
| SERP Features | Rich snippets, featured boxes | Opportunity to capture |
|
||||||
|
|
||||||
|
**4. Evaluate search intent**
|
||||||
|
|
||||||
|
**Types of search intent:**
|
||||||
|
- **Informational:** "how to", "what is", "guide to"
|
||||||
|
- **Navigational:** Brand names, specific pages
|
||||||
|
- **Commercial:** "best", "review", "comparison"
|
||||||
|
- **Transactional:** "buy", "price", "discount"
|
||||||
|
|
||||||
|
**Match content type to intent:**
|
||||||
|
- Informational → Blog posts, guides, tutorials
|
||||||
|
- Commercial → Reviews, comparisons, listicles
|
||||||
|
- Transactional → Product pages, landing pages
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyword Strategy
|
||||||
|
|
||||||
|
### Primary Keyword
|
||||||
|
**One main target keyword per piece of content**
|
||||||
|
|
||||||
|
**Characteristics:**
|
||||||
|
- Relevant to topic
|
||||||
|
- Moderate search volume (500-10K typically)
|
||||||
|
- Achievable difficulty
|
||||||
|
- Matches search intent
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
For a tutorial on JWT authentication:
|
||||||
|
- Primary: "JWT authentication tutorial" (2,400/month, KD 35)
|
||||||
|
|
||||||
|
### Secondary Keywords
|
||||||
|
**2-4 related keywords that support the primary**
|
||||||
|
|
||||||
|
**Types:**
|
||||||
|
- Synonyms: "JSON web token tutorial"
|
||||||
|
- Related terms: "JWT Node.js", "secure API authentication"
|
||||||
|
- Long-tail variations: "how to implement JWT authentication"
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
- Secondary: "JSON web token Node.js", "JWT implementation guide", "API authentication tutorial"
|
||||||
|
|
||||||
|
### LSI Keywords (Latent Semantic Indexing)
|
||||||
|
**Related terms that provide context**
|
||||||
|
|
||||||
|
**How to find:**
|
||||||
|
- Google "related searches" at bottom of SERP
|
||||||
|
- "People also ask" boxes
|
||||||
|
- LSIGraph tool
|
||||||
|
- Ahrefs "Also rank for" section
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
For JWT content: "access token", "refresh token", "bearer token", "authentication flow", "authorization header"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## On-Page SEO Elements
|
||||||
|
|
||||||
|
### Title Tag (H1)
|
||||||
|
|
||||||
|
**Requirements:**
|
||||||
|
- Include primary keyword
|
||||||
|
- 50-60 characters (to avoid truncation)
|
||||||
|
- Compelling and click-worthy
|
||||||
|
- Front-load important words
|
||||||
|
|
||||||
|
**Formula:**
|
||||||
|
`[Primary Keyword]: [Benefit/Hook] | [Brand]`
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
- "Authentication" (too vague)
|
||||||
|
- "The Complete, Comprehensive, Ultimate Guide to JSON Web Token Authentication in Node.js Applications" (too long)
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
- "JWT Authentication Tutorial: Secure Your Node.js API in 10 Minutes"
|
||||||
|
- "How to Implement JWT Authentication | Complete Node.js Guide"
|
||||||
|
|
||||||
|
**Best practices:**
|
||||||
|
- Use power words: "Complete", "Ultimate", "Essential", "Proven"
|
||||||
|
- Include numbers: "10 Minutes", "5 Steps", "2024 Guide"
|
||||||
|
- Address user intent: "How to", "Step-by-Step", "Quick Start"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Meta Description
|
||||||
|
|
||||||
|
**Requirements:**
|
||||||
|
- 150-160 characters
|
||||||
|
- Include primary keyword
|
||||||
|
- Compelling call-to-action
|
||||||
|
- Accurate summary
|
||||||
|
|
||||||
|
**Not a ranking factor but affects CTR (click-through rate)**
|
||||||
|
|
||||||
|
**Formula:**
|
||||||
|
`[Problem] + [Solution] + [Benefit/CTA]`
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
- "Learn about JWT authentication" (boring, no value)
|
||||||
|
- "This article covers everything you need to know about JSON Web Tokens, including how they work, how to implement them, and best practices" (too long, truncated)
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
- "Learn JWT authentication with Node.js in 10 minutes. Step-by-step tutorial with code examples. Secure your API today."
|
||||||
|
- "Implement JWT authentication in your Node.js app. Complete guide with Express.js examples and security best practices."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Headers (H2, H3, H4)
|
||||||
|
|
||||||
|
**Purpose:**
|
||||||
|
- Structure content for readability
|
||||||
|
- Signal topic relevance to search engines
|
||||||
|
- Improve featured snippet chances
|
||||||
|
|
||||||
|
**Best practices:**
|
||||||
|
|
||||||
|
**H2 (Main sections):**
|
||||||
|
- Include keywords naturally
|
||||||
|
- 3-7 H2s per article typically
|
||||||
|
- Descriptive and scannable
|
||||||
|
|
||||||
|
**H3 (Subsections):**
|
||||||
|
- Support H2 topics
|
||||||
|
- Use long-tail keywords
|
||||||
|
- Answer specific questions
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
✅ Good header structure:
|
||||||
|
```
|
||||||
|
# JWT Authentication Tutorial [H1]
|
||||||
|
|
||||||
|
## What Is JWT Authentication? [H2 - keyword + question]
|
||||||
|
|
||||||
|
## How JWT Authentication Works [H2 - keyword + process]
|
||||||
|
### The Authentication Flow [H3]
|
||||||
|
### Access Tokens vs Refresh Tokens [H3]
|
||||||
|
|
||||||
|
## Implementing JWT in Node.js [H2 - keyword + action]
|
||||||
|
### Installing Dependencies [H3]
|
||||||
|
### Creating JWT Tokens [H3]
|
||||||
|
### Verifying JWT Tokens [H3]
|
||||||
|
|
||||||
|
## JWT Security Best Practices [H2 - keyword + value]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Avoid:**
|
||||||
|
- Generic headers: "Introduction", "Conclusion"
|
||||||
|
- Keyword stuffing: "JWT JWT JWT Authentication"
|
||||||
|
- Skipping heading levels (H2 → H4)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Content Body
|
||||||
|
|
||||||
|
**Keyword usage:**
|
||||||
|
|
||||||
|
**Primary keyword placement:**
|
||||||
|
- [ ] First 100 words (important!)
|
||||||
|
- [ ] In H1 (title)
|
||||||
|
- [ ] In at least one H2
|
||||||
|
- [ ] In URL slug
|
||||||
|
- [ ] 3-5 times throughout content (naturally)
|
||||||
|
- [ ] In conclusion
|
||||||
|
|
||||||
|
**Secondary keywords:**
|
||||||
|
- [ ] Sprinkle naturally throughout
|
||||||
|
- [ ] In H2s and H3s where relevant
|
||||||
|
- [ ] In image alt text
|
||||||
|
- [ ] In anchor text for internal links
|
||||||
|
|
||||||
|
**Keyword density:**
|
||||||
|
- **Target: 0.5-2.5%** of total words
|
||||||
|
- Don't obsess over exact percentage
|
||||||
|
- Prioritize natural writing
|
||||||
|
- Use synonyms and variations
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
❌ Bad (keyword stuffing):
|
||||||
|
"JWT authentication is important. JWT authentication secures your API. Implementing JWT authentication with JWT authentication libraries makes JWT authentication easier."
|
||||||
|
|
||||||
|
✅ Good (natural use):
|
||||||
|
"JWT authentication provides a secure way to handle user sessions in modern APIs. This token-based approach offers several advantages over traditional session management..."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Internal Linking
|
||||||
|
|
||||||
|
**Why it matters:**
|
||||||
|
- Distributes page authority
|
||||||
|
- Helps search engines discover pages
|
||||||
|
- Improves user engagement
|
||||||
|
- Reduces bounce rate
|
||||||
|
|
||||||
|
**Best practices:**
|
||||||
|
- **3-5 internal links** per blog post
|
||||||
|
- Link to relevant related content
|
||||||
|
- Use descriptive anchor text (not "click here")
|
||||||
|
- Link to authoritative pages
|
||||||
|
- Create content clusters
|
||||||
|
|
||||||
|
**Anchor text examples:**
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
- "Click here to learn more"
|
||||||
|
- "Read this article"
|
||||||
|
- Full URLs as anchor text
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
- "Learn about [secure API design patterns](link)"
|
||||||
|
- "Our [Node.js security guide](link) covers..."
|
||||||
|
- "For more on [authentication vs authorization](link)..."
|
||||||
|
|
||||||
|
**Content clustering:**
|
||||||
|
```
|
||||||
|
Pillar Page: "Complete Guide to API Authentication"
|
||||||
|
├─ Cluster: "JWT Authentication Tutorial"
|
||||||
|
├─ Cluster: "OAuth 2.0 Implementation Guide"
|
||||||
|
├─ Cluster: "API Key Best Practices"
|
||||||
|
└─ Cluster: "Session vs Token Authentication"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### External Linking
|
||||||
|
|
||||||
|
**Why link externally:**
|
||||||
|
- Provides value to readers
|
||||||
|
- Signals trust and authority
|
||||||
|
- May earn reciprocal links
|
||||||
|
- Shows you're not keyword-focused
|
||||||
|
|
||||||
|
**Best practices:**
|
||||||
|
- **2-3 external links** to authoritative sources
|
||||||
|
- Link to original research/data
|
||||||
|
- Link to tools/resources mentioned
|
||||||
|
- Open in new tab (user preference)
|
||||||
|
- Use `rel="nofollow"` for untrusted sources
|
||||||
|
|
||||||
|
**Authority sources:**
|
||||||
|
- Official documentation
|
||||||
|
- Government sites (.gov)
|
||||||
|
- Educational institutions (.edu)
|
||||||
|
- Industry research firms
|
||||||
|
- Reputable publications
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Images & Alt Text
|
||||||
|
|
||||||
|
**SEO value:**
|
||||||
|
- Image search traffic
|
||||||
|
- Featured snippets with images
|
||||||
|
- Improved user engagement
|
||||||
|
- Accessibility (screen readers)
|
||||||
|
|
||||||
|
**Image optimization:**
|
||||||
|
|
||||||
|
**File size:**
|
||||||
|
- Compress images (< 200KB ideal)
|
||||||
|
- Use WebP format when possible
|
||||||
|
- Lazy loading for below-fold images
|
||||||
|
|
||||||
|
**File names:**
|
||||||
|
- Descriptive, not "IMG_1234.jpg"
|
||||||
|
- Include keyword: "jwt-authentication-flow.png"
|
||||||
|
- Use hyphens, not underscores
|
||||||
|
|
||||||
|
**Alt text:**
|
||||||
|
- Describe image content
|
||||||
|
- Include keyword naturally
|
||||||
|
- 10-15 words typical
|
||||||
|
- Don't stuff keywords
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
- Alt: "image" or empty
|
||||||
|
- File: "screenshot-2024.png"
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
- Alt: "JWT authentication flow diagram showing token generation and verification"
|
||||||
|
- File: "jwt-authentication-flow-diagram.png"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## URL Structure
|
||||||
|
|
||||||
|
**SEO-friendly URLs:**
|
||||||
|
|
||||||
|
**Best practices:**
|
||||||
|
- **Include primary keyword**
|
||||||
|
- **Short and descriptive** (3-5 words)
|
||||||
|
- **Use hyphens**, not underscores
|
||||||
|
- **Lowercase only**
|
||||||
|
- **Avoid parameters** (?id=123)
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
- `/blog/post?id=12345`
|
||||||
|
- `/blog/2024/01/15/new-post`
|
||||||
|
- `/JWT_Authentication_Tutorial_Complete_Guide`
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
- `/jwt-authentication-tutorial`
|
||||||
|
- `/blog/jwt-authentication-nodejs`
|
||||||
|
- `/guides/api-authentication`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Content Length & Quality
|
||||||
|
|
||||||
|
### Optimal Length
|
||||||
|
|
||||||
|
**General guidelines:**
|
||||||
|
|
||||||
|
| Content Type | Optimal Length | Rationale |
|
||||||
|
|--------------|----------------|-----------|
|
||||||
|
| Blog post | 1,500-2,500 words | Comprehensive coverage |
|
||||||
|
| Tutorial | 2,000-3,000 words | Detailed instructions |
|
||||||
|
| Listicle | 1,000-2,000 words | Quick, scannable |
|
||||||
|
| Landing page | 500-1,000 words | Concise, conversion-focused |
|
||||||
|
| Product page | 300-500 words | Key info only |
|
||||||
|
|
||||||
|
**But length isn't everything:**
|
||||||
|
- Match top-ranking content length
|
||||||
|
- Cover topic comprehensively
|
||||||
|
- Don't add fluff to hit word count
|
||||||
|
- Value > length
|
||||||
|
|
||||||
|
### Content Quality Signals
|
||||||
|
|
||||||
|
**E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness):**
|
||||||
|
|
||||||
|
**Experience:**
|
||||||
|
- First-hand knowledge
|
||||||
|
- Personal insights
|
||||||
|
- Real-world examples
|
||||||
|
|
||||||
|
**Expertise:**
|
||||||
|
- Author credentials
|
||||||
|
- Technical accuracy
|
||||||
|
- Depth of coverage
|
||||||
|
|
||||||
|
**Authoritativeness:**
|
||||||
|
- Backlinks from reputable sites
|
||||||
|
- Author byline
|
||||||
|
- Citations and references
|
||||||
|
|
||||||
|
**Trustworthiness:**
|
||||||
|
- Accurate information
|
||||||
|
- Proper citations
|
||||||
|
- Clear sources
|
||||||
|
- Privacy policy, contact info
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technical SEO Checklist
|
||||||
|
|
||||||
|
### Page Speed
|
||||||
|
- [ ] Page loads in < 3 seconds
|
||||||
|
- [ ] Images optimized and compressed
|
||||||
|
- [ ] Lazy loading implemented
|
||||||
|
- [ ] Minified CSS/JS
|
||||||
|
- [ ] Browser caching enabled
|
||||||
|
|
||||||
|
### Mobile-Friendly
|
||||||
|
- [ ] Responsive design
|
||||||
|
- [ ] Text readable without zooming
|
||||||
|
- [ ] Touch targets 48x48px+
|
||||||
|
- [ ] No horizontal scrolling
|
||||||
|
|
||||||
|
### Core Web Vitals
|
||||||
|
- [ ] LCP (Largest Contentful Paint) < 2.5s
|
||||||
|
- [ ] FID (First Input Delay) < 100ms
|
||||||
|
- [ ] CLS (Cumulative Layout Shift) < 0.1
|
||||||
|
|
||||||
|
### Indexing
|
||||||
|
- [ ] Pages not blocked by robots.txt
|
||||||
|
- [ ] XML sitemap submitted
|
||||||
|
- [ ] Canonical tags set correctly
|
||||||
|
- [ ] No duplicate content
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Featured Snippets & Rich Results
|
||||||
|
|
||||||
|
### What Are Featured Snippets?
|
||||||
|
|
||||||
|
**"Position 0" results** that appear above organic listings
|
||||||
|
|
||||||
|
**Types:**
|
||||||
|
- **Paragraph** (definitions, answers)
|
||||||
|
- **List** (steps, rankings)
|
||||||
|
- **Table** (comparisons, data)
|
||||||
|
- **Video** (tutorials)
|
||||||
|
|
||||||
|
### How to Win Snippets
|
||||||
|
|
||||||
|
**1. Target question keywords**
|
||||||
|
- "What is", "How to", "Why does"
|
||||||
|
- "Best", "Top", "Checklist"
|
||||||
|
|
||||||
|
**2. Structure for snippets**
|
||||||
|
|
||||||
|
**Paragraph snippets:**
|
||||||
|
- Answer question in 40-60 words
|
||||||
|
- Place answer directly after H2
|
||||||
|
- Define terms clearly
|
||||||
|
|
||||||
|
**List snippets:**
|
||||||
|
- Use numbered lists (for steps)
|
||||||
|
- Use bullet lists (for items)
|
||||||
|
- 5-8 items optimal
|
||||||
|
|
||||||
|
**Table snippets:**
|
||||||
|
- Use HTML tables
|
||||||
|
- Clear headers
|
||||||
|
- Comparison data
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## What Is JWT Authentication?
|
||||||
|
|
||||||
|
JWT (JSON Web Token) authentication is a stateless authentication method that uses cryptographically signed tokens to verify user identity. Instead of storing session data on the server, JWT embeds user information in a secure token that clients include with each request.
|
||||||
|
|
||||||
|
### How JWT Authentication Works:
|
||||||
|
|
||||||
|
1. User logs in with credentials
|
||||||
|
2. Server validates and creates JWT
|
||||||
|
3. Token sent to client
|
||||||
|
4. Client includes token in requests
|
||||||
|
5. Server verifies token signature
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schema Markup
|
||||||
|
|
||||||
|
**Structured data** that helps search engines understand content
|
||||||
|
|
||||||
|
**Common types for content:**
|
||||||
|
- **Article:** Blog posts, news
|
||||||
|
- **HowTo:** Step-by-step guides
|
||||||
|
- **FAQPage:** FAQ sections
|
||||||
|
- **VideoObject:** Embedded videos
|
||||||
|
- **BreadcrumbList:** Navigation
|
||||||
|
|
||||||
|
**Example (JSON-LD):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"headline": "JWT Authentication Tutorial",
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": "John Developer"
|
||||||
|
},
|
||||||
|
"datePublished": "2024-01-15",
|
||||||
|
"image": "https://example.com/jwt-tutorial.jpg"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tools:**
|
||||||
|
- [Google Rich Results Test](https://search.google.com/test/rich-results)
|
||||||
|
- [Schema Markup Generator](https://technicalseo.com/tools/schema-markup-generator/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SEO Content Writing Process
|
||||||
|
|
||||||
|
### 1. Keyword Research (1-2 hours)
|
||||||
|
- [ ] Identify primary keyword
|
||||||
|
- [ ] Find secondary keywords
|
||||||
|
- [ ] Analyze top 10 results
|
||||||
|
- [ ] Determine search intent
|
||||||
|
- [ ] Note target word count
|
||||||
|
|
||||||
|
### 2. Content Outline (30 min)
|
||||||
|
- [ ] Create H2/H3 structure
|
||||||
|
- [ ] Include keywords in headers
|
||||||
|
- [ ] Plan internal links
|
||||||
|
- [ ] Identify research needs
|
||||||
|
|
||||||
|
### 3. Write First Draft (2-4 hours)
|
||||||
|
- [ ] Write naturally first
|
||||||
|
- [ ] Focus on value
|
||||||
|
- [ ] Answer user questions
|
||||||
|
- [ ] Include examples
|
||||||
|
|
||||||
|
### 4. SEO Optimization (30-60 min)
|
||||||
|
- [ ] Primary keyword in first 100 words
|
||||||
|
- [ ] Keywords in headers (natural)
|
||||||
|
- [ ] Add internal links (3-5)
|
||||||
|
- [ ] Add external links (2-3)
|
||||||
|
- [ ] Optimize images and alt text
|
||||||
|
- [ ] Write meta description
|
||||||
|
- [ ] Check keyword density
|
||||||
|
|
||||||
|
### 5. Quality Check (30 min)
|
||||||
|
- [ ] Fact-check all claims
|
||||||
|
- [ ] Verify links work
|
||||||
|
- [ ] Read aloud for flow
|
||||||
|
- [ ] Check readability score
|
||||||
|
- [ ] Proofread carefully
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SEO Tools
|
||||||
|
|
||||||
|
### Free Tools
|
||||||
|
- **Google Search Console** - Monitor performance
|
||||||
|
- **Google Analytics** - Track traffic
|
||||||
|
- **Google Keyword Planner** - Keyword research
|
||||||
|
- **Ubersuggest** - Limited keyword data
|
||||||
|
- **AnswerThePublic** - Question keywords
|
||||||
|
- **Yoast SEO (WordPress)** - On-page optimization
|
||||||
|
|
||||||
|
### Paid Tools
|
||||||
|
- **Ahrefs** ($99-$999/mo) - All-in-one SEO
|
||||||
|
- **SEMrush** ($119-$449/mo) - Comprehensive suite
|
||||||
|
- **Surfer SEO** ($49-$199/mo) - Content optimization
|
||||||
|
- **Clearscope** ($170+/mo) - Content intelligence
|
||||||
|
- **MarketMuse** ($149-$600/mo) - Content planning
|
||||||
|
|
||||||
|
### Free Browser Extensions
|
||||||
|
- **Keywords Everywhere** - Search volume data
|
||||||
|
- **MozBar** - Domain authority checker
|
||||||
|
- **SEO Meta in 1 Click** - View meta tags
|
||||||
|
- **Detailed** - View structured data
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common SEO Mistakes
|
||||||
|
|
||||||
|
### ❌ Avoid These
|
||||||
|
|
||||||
|
**1. Keyword stuffing**
|
||||||
|
- Overusing keywords unnaturally
|
||||||
|
- Hurts readability and rankings
|
||||||
|
|
||||||
|
**2. Thin content**
|
||||||
|
- < 500 words without depth
|
||||||
|
- Doesn't fully answer question
|
||||||
|
|
||||||
|
**3. Duplicate content**
|
||||||
|
- Copying content across pages
|
||||||
|
- Plagiarizing from other sites
|
||||||
|
|
||||||
|
**4. Ignoring mobile**
|
||||||
|
- Non-responsive design
|
||||||
|
- 60%+ of traffic is mobile
|
||||||
|
|
||||||
|
**5. Slow page speed**
|
||||||
|
- Large uncompressed images
|
||||||
|
- Too many scripts
|
||||||
|
- Poor hosting
|
||||||
|
|
||||||
|
**6. No internal linking**
|
||||||
|
- Isolated pages
|
||||||
|
- Lost link equity
|
||||||
|
|
||||||
|
**7. Bad user experience**
|
||||||
|
- Intrusive popups
|
||||||
|
- Auto-playing videos
|
||||||
|
- Difficult navigation
|
||||||
|
|
||||||
|
**8. Ignoring search intent**
|
||||||
|
- Wrong content type
|
||||||
|
- Doesn't answer query
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Measuring SEO Success
|
||||||
|
|
||||||
|
### Key Metrics
|
||||||
|
|
||||||
|
**Rankings:**
|
||||||
|
- Track target keyword positions
|
||||||
|
- Monitor ranking changes
|
||||||
|
- Tool: Google Search Console, Ahrefs
|
||||||
|
|
||||||
|
**Organic Traffic:**
|
||||||
|
- Sessions from organic search
|
||||||
|
- Growth over time
|
||||||
|
- Tool: Google Analytics
|
||||||
|
|
||||||
|
**Click-Through Rate (CTR):**
|
||||||
|
- % of impressions that click
|
||||||
|
- Improve with better titles/descriptions
|
||||||
|
- Tool: Google Search Console
|
||||||
|
|
||||||
|
**Engagement:**
|
||||||
|
- Time on page (3+ minutes good)
|
||||||
|
- Pages per session
|
||||||
|
- Bounce rate (< 60% good)
|
||||||
|
|
||||||
|
**Conversions:**
|
||||||
|
- Goal completions from organic
|
||||||
|
- Newsletter signups
|
||||||
|
- Lead forms submitted
|
||||||
|
|
||||||
|
### Timeline for Results
|
||||||
|
|
||||||
|
**Realistic expectations:**
|
||||||
|
- **Week 1-4:** Indexed, minimal movement
|
||||||
|
- **Month 2-3:** Start ranking for long-tail
|
||||||
|
- **Month 4-6:** Ranking for target keywords
|
||||||
|
- **Month 6-12:** Established authority
|
||||||
|
|
||||||
|
**Factors affecting timeline:**
|
||||||
|
- Domain authority
|
||||||
|
- Competition
|
||||||
|
- Content quality
|
||||||
|
- Backlinks
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SEO Checklist for Writers
|
||||||
|
|
||||||
|
### Before Writing
|
||||||
|
- [ ] Keyword research complete
|
||||||
|
- [ ] Search intent identified
|
||||||
|
- [ ] Top 10 results analyzed
|
||||||
|
- [ ] Target word count determined
|
||||||
|
|
||||||
|
### During Writing
|
||||||
|
- [ ] Primary keyword in first 100 words
|
||||||
|
- [ ] Keywords in H1, H2s naturally
|
||||||
|
- [ ] Internal links planned (3-5)
|
||||||
|
- [ ] External links identified (2-3)
|
||||||
|
- [ ] Images with descriptive file names
|
||||||
|
|
||||||
|
### After Writing
|
||||||
|
- [ ] Meta description written (150-160 chars)
|
||||||
|
- [ ] All images have alt text
|
||||||
|
- [ ] URL slug optimized
|
||||||
|
- [ ] Schema markup added (if applicable)
|
||||||
|
- [ ] Links tested
|
||||||
|
- [ ] Readability check (Flesch score 60+)
|
||||||
|
- [ ] Mobile preview
|
||||||
|
- [ ] Page speed check
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
### Optimal Keyword Density
|
||||||
|
- Primary: 0.5-2.5% of content
|
||||||
|
- Don't force it, write naturally
|
||||||
|
|
||||||
|
### Word Count Targets
|
||||||
|
- Blog: 1,500-2,500 words
|
||||||
|
- Tutorial: 2,000-3,000 words
|
||||||
|
- Landering page: 500-1,000 words
|
||||||
|
|
||||||
|
### Link Targets
|
||||||
|
- Internal: 3-5 per post
|
||||||
|
- External: 2-3 to authority sites
|
||||||
|
|
||||||
|
### Title Length
|
||||||
|
- 50-60 characters
|
||||||
|
- Include primary keyword
|
||||||
|
|
||||||
|
### Meta Description
|
||||||
|
- 150-160 characters
|
||||||
|
- Include keyword + CTA
|
||||||
|
|
||||||
|
### Image Optimization
|
||||||
|
- < 200KB file size
|
||||||
|
- Descriptive file name
|
||||||
|
- Alt text 10-15 words
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Remember:** SEO is important, but user experience comes first. Write for humans, optimize for search engines.
|
||||||
690
skills/content-brief-generator/references/tone_voice_guide.md
Normal file
690
skills/content-brief-generator/references/tone_voice_guide.md
Normal file
@@ -0,0 +1,690 @@
|
|||||||
|
# Tone & Voice Guide
|
||||||
|
|
||||||
|
Complete guide to developing and maintaining consistent voice and tone in your content.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voice vs. Tone
|
||||||
|
|
||||||
|
### Voice
|
||||||
|
**Your brand's personality** - consistent across all content
|
||||||
|
|
||||||
|
**Think of it as:**
|
||||||
|
- Who you are as a brand
|
||||||
|
- Your character
|
||||||
|
- Never changes
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
- Mailchimp: "Friendly, helpful, human"
|
||||||
|
- Stripe: "Direct, technical, trustworthy"
|
||||||
|
- Nike: "Inspirational, motivational, bold"
|
||||||
|
|
||||||
|
### Tone
|
||||||
|
**How voice adapts** to context - changes based on situation
|
||||||
|
|
||||||
|
**Think of it as:**
|
||||||
|
- Your emotional state
|
||||||
|
- How you say something
|
||||||
|
- Varies by context
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
- **Error message:** Apologetic, helpful
|
||||||
|
- **Success message:** Congratulatory, encouraging
|
||||||
|
- **Technical docs:** Professional, precise
|
||||||
|
- **Marketing:** Enthusiastic, persuasive
|
||||||
|
|
||||||
|
**Analogy:**
|
||||||
|
Voice = Your personality
|
||||||
|
Tone = Your mood
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Defining Your Voice
|
||||||
|
|
||||||
|
### Voice Attributes Framework
|
||||||
|
|
||||||
|
Choose 3-4 core attributes that define your brand voice:
|
||||||
|
|
||||||
|
**The Spectrum:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Formal ←────────────→ Casual
|
||||||
|
Serious ←────────────→ Funny
|
||||||
|
Respectful ←────────────→ Irreverent
|
||||||
|
Enthusiastic ←────────────→ Matter-of-fact
|
||||||
|
Traditional ←────────────→ Innovative
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Voice Definitions
|
||||||
|
|
||||||
|
**Mailchimp:**
|
||||||
|
- Friendly but not silly
|
||||||
|
- Clever but not overly witty
|
||||||
|
- Helpful but not overbearing
|
||||||
|
- Expert but not bossy
|
||||||
|
|
||||||
|
**Slack:**
|
||||||
|
- Professional but approachable
|
||||||
|
- Technical but not intimidating
|
||||||
|
- Playful but not childish
|
||||||
|
- Direct but not cold
|
||||||
|
|
||||||
|
**Atlassian:**
|
||||||
|
- Straightforward and honest
|
||||||
|
- Enthusiastically professional
|
||||||
|
- Conversational yet informative
|
||||||
|
- Smart but not condescending
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voice Dimensions
|
||||||
|
|
||||||
|
### 1. Formality
|
||||||
|
|
||||||
|
**Formal:**
|
||||||
|
- Professional language
|
||||||
|
- Complete sentences
|
||||||
|
- No contractions
|
||||||
|
- Third person
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"The application has been successfully deployed to the production environment."
|
||||||
|
|
||||||
|
**Casual:**
|
||||||
|
- Conversational language
|
||||||
|
- Contractions okay
|
||||||
|
- First/second person
|
||||||
|
- Shorter sentences
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"You're all set! Your app is live."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Formal: Legal, compliance, enterprise docs
|
||||||
|
- Casual: Blogs, social media, onboarding
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Enthusiasm
|
||||||
|
|
||||||
|
**Highly Enthusiastic:**
|
||||||
|
- Exclamation points
|
||||||
|
- Superlatives (amazing, incredible)
|
||||||
|
- Energy and excitement
|
||||||
|
- Emojis (in appropriate contexts)
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"This is amazing! You just saved 10 hours of work. Let's celebrate! 🎉"
|
||||||
|
|
||||||
|
**Neutral/Matter-of-fact:**
|
||||||
|
- Period instead of exclamation
|
||||||
|
- Factual statements
|
||||||
|
- No hyperbole
|
||||||
|
- Professional tone
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"The task has been completed successfully. You saved 10 hours."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Enthusiastic: Consumer products, celebrations, achievements
|
||||||
|
- Neutral: Technical docs, business content, data reports
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Technical Level
|
||||||
|
|
||||||
|
**Highly Technical:**
|
||||||
|
- Industry jargon
|
||||||
|
- Assumes expert knowledge
|
||||||
|
- Technical accuracy paramount
|
||||||
|
- Detailed specifications
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"The WebSocket connection establishes a persistent, full-duplex communication channel over a single TCP connection."
|
||||||
|
|
||||||
|
**Accessible:**
|
||||||
|
- Plain language
|
||||||
|
- Explain jargon
|
||||||
|
- Analogies and examples
|
||||||
|
- Beginner-friendly
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"WebSockets let your app and server talk back and forth in real-time, like a phone call instead of sending letters."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Technical: API docs, developer tools, architecture guides
|
||||||
|
- Accessible: Getting started guides, general audience, marketing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Humor
|
||||||
|
|
||||||
|
**Funny/Playful:**
|
||||||
|
- Jokes and puns
|
||||||
|
- Pop culture references
|
||||||
|
- Light-hearted
|
||||||
|
- Personality shines
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"Oops! Looks like something went wrong. Our bad. We're on it faster than you can say 'Have you tried turning it off and on again?'"
|
||||||
|
|
||||||
|
**Serious:**
|
||||||
|
- Professional
|
||||||
|
- No jokes
|
||||||
|
- Straightforward
|
||||||
|
- Business-like
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"An error has occurred. Our team has been notified and is working to resolve the issue."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Playful: Consumer brands, creative industries, social media
|
||||||
|
- Serious: Financial services, healthcare, legal, critical errors
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Writing in Your Voice
|
||||||
|
|
||||||
|
### Voice Checklist
|
||||||
|
|
||||||
|
For every piece of content, ask:
|
||||||
|
|
||||||
|
- [ ] **Does this sound like us?** (matches voice attributes)
|
||||||
|
- [ ] **Is it consistent** with previous content?
|
||||||
|
- [ ] **Would our audience recognize us** without our logo?
|
||||||
|
- [ ] **Does it feel authentic** or forced?
|
||||||
|
|
||||||
|
### Voice Examples by Sentence
|
||||||
|
|
||||||
|
**Same content, different voices:**
|
||||||
|
|
||||||
|
**Topic: User made an error**
|
||||||
|
|
||||||
|
**Mailchimp (friendly, helpful):**
|
||||||
|
"Oops! It looks like that email address isn't quite right. Try checking for typos?"
|
||||||
|
|
||||||
|
**Stripe (direct, technical):**
|
||||||
|
"Invalid email format. Use format: user@example.com"
|
||||||
|
|
||||||
|
**Innocent (playful, quirky):**
|
||||||
|
"That email address looks a bit wonky. Give it another go?"
|
||||||
|
|
||||||
|
**IBM (formal, professional):**
|
||||||
|
"The email address entered is invalid. Please verify and try again."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Adapting Tone
|
||||||
|
|
||||||
|
### Tone Guidelines by Context
|
||||||
|
|
||||||
|
| Context | Tone | Example |
|
||||||
|
|---------|------|---------|
|
||||||
|
| **Error message** | Apologetic, helpful | "Sorry about that! Here's how to fix it..." |
|
||||||
|
| **Success** | Encouraging | "Nice work! You're all set." |
|
||||||
|
| **Warning** | Urgent but calm | "Action required: Your payment failed." |
|
||||||
|
| **Education** | Patient, clear | "Let's walk through this together." |
|
||||||
|
| **Marketing** | Persuasive, exciting | "Transform your workflow in minutes!" |
|
||||||
|
| **Legal** | Formal, precise | "By continuing, you agree to the terms." |
|
||||||
|
| **Support** | Empathetic, solution-focused | "I understand this is frustrating. Let's solve it." |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Person & Perspective
|
||||||
|
|
||||||
|
### First Person (We, Our)
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Brand speaking
|
||||||
|
- Company announcements
|
||||||
|
- Team perspective
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"We're excited to announce our new feature. We built this based on your feedback."
|
||||||
|
|
||||||
|
**Pros:**
|
||||||
|
- Personal connection
|
||||||
|
- Shows team behind brand
|
||||||
|
- Takes ownership
|
||||||
|
|
||||||
|
**Cons:**
|
||||||
|
- Can feel self-focused
|
||||||
|
- Less about user
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Second Person (You, Your)
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Most common
|
||||||
|
- User instructions
|
||||||
|
- Direct communication
|
||||||
|
- Marketing copy
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"You can now collaborate in real-time. Your team will love it."
|
||||||
|
|
||||||
|
**Pros:**
|
||||||
|
- User-focused
|
||||||
|
- Clear and direct
|
||||||
|
- Creates connection
|
||||||
|
|
||||||
|
**Cons:**
|
||||||
|
- Can feel pushy if overused
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Third Person (They, User, Customer)
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Documentation
|
||||||
|
- Objective content
|
||||||
|
- Case studies about others
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"The user navigates to settings. The system validates their credentials."
|
||||||
|
|
||||||
|
**Pros:**
|
||||||
|
- Professional
|
||||||
|
- Objective
|
||||||
|
- Clear for documentation
|
||||||
|
|
||||||
|
**Cons:**
|
||||||
|
- Less personal
|
||||||
|
- Can feel distant
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Active vs. Passive Voice
|
||||||
|
|
||||||
|
### Active Voice (Preferred)
|
||||||
|
|
||||||
|
**Structure:** Subject performs action
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
- "You can deploy your app in minutes."
|
||||||
|
- "The system processes your request."
|
||||||
|
- "Click the button to continue."
|
||||||
|
|
||||||
|
**Why use:**
|
||||||
|
- Clearer
|
||||||
|
- More direct
|
||||||
|
- Easier to read
|
||||||
|
- Stronger
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Passive Voice (Avoid Usually)
|
||||||
|
|
||||||
|
**Structure:** Action performed on subject
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
- "Your app can be deployed in minutes."
|
||||||
|
- "Your request is processed by the system."
|
||||||
|
- "The button should be clicked to continue."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Actor unknown: "The server was restarted."
|
||||||
|
- Actor irrelevant: "The file was deleted."
|
||||||
|
- Soften message: "An error was encountered."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sentence Structure
|
||||||
|
|
||||||
|
### Short Sentences
|
||||||
|
- Easy to read
|
||||||
|
- Scannable
|
||||||
|
- Mobile-friendly
|
||||||
|
- Clear
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"Deploy your app fast. No config needed. It just works."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Headlines
|
||||||
|
- Key points
|
||||||
|
- Mobile content
|
||||||
|
- Emphasis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Varied Length
|
||||||
|
- More natural
|
||||||
|
- Maintains interest
|
||||||
|
- Provides rhythm
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
"Deploy your app fast. No configuration needed, no complicated setup process, no hours wasted on devops. It just works."
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Blog posts
|
||||||
|
- Long-form content
|
||||||
|
- Storytelling
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Word Choice
|
||||||
|
|
||||||
|
### Simple vs. Complex
|
||||||
|
|
||||||
|
**Prefer simple:**
|
||||||
|
- Use vs. utilize
|
||||||
|
- Help vs. assist
|
||||||
|
- Buy vs. purchase
|
||||||
|
- Start vs. commence
|
||||||
|
- Show vs. demonstrate
|
||||||
|
|
||||||
|
**Exception:** Technical accuracy requires specific terms
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Positive vs. Negative
|
||||||
|
|
||||||
|
**Positive framing (preferred):**
|
||||||
|
- "Remember your password"
|
||||||
|
- "Include your address"
|
||||||
|
- "Make sure to save"
|
||||||
|
|
||||||
|
**Negative framing (avoid):**
|
||||||
|
- "Don't forget your password"
|
||||||
|
- "Don't leave out your address"
|
||||||
|
- "Don't lose your work"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Concrete vs. Abstract
|
||||||
|
|
||||||
|
**Concrete (preferred):**
|
||||||
|
- "Save 10 hours per week"
|
||||||
|
- "Deploy in 5 minutes"
|
||||||
|
- "99.9% uptime"
|
||||||
|
|
||||||
|
**Abstract (avoid):**
|
||||||
|
- "Save time"
|
||||||
|
- "Fast deployment"
|
||||||
|
- "Reliable service"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common Writing Guidelines
|
||||||
|
|
||||||
|
### Contractions
|
||||||
|
|
||||||
|
**Use them for conversational tone:**
|
||||||
|
- Don't vs. Do not
|
||||||
|
- You're vs. You are
|
||||||
|
- We've vs. We have
|
||||||
|
|
||||||
|
**Skip them for:**
|
||||||
|
- Legal content
|
||||||
|
- Very formal contexts
|
||||||
|
- When emphasis needed: "Do not delete this"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Exclamation Points
|
||||||
|
|
||||||
|
**Use sparingly:**
|
||||||
|
- Celebrations and achievements
|
||||||
|
- Very exciting news
|
||||||
|
- Strong emphasis
|
||||||
|
|
||||||
|
**Limit to:**
|
||||||
|
- Once per paragraph max
|
||||||
|
- Never multiple (!!!)
|
||||||
|
- Not in B2B formal content
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Emojis
|
||||||
|
|
||||||
|
**When appropriate:**
|
||||||
|
- Consumer brands
|
||||||
|
- Casual social media
|
||||||
|
- Internal communications
|
||||||
|
- In-app celebrations
|
||||||
|
|
||||||
|
**Avoid in:**
|
||||||
|
- Enterprise B2B
|
||||||
|
- Documentation
|
||||||
|
- Legal/compliance
|
||||||
|
- Serious topics
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Brand Voice Examples
|
||||||
|
|
||||||
|
### Technology/Developer Tools
|
||||||
|
|
||||||
|
**Stripe:**
|
||||||
|
- **Voice:** Direct, technical, trustworthy
|
||||||
|
- **Example:** "Accept payments in minutes. Get started with a few lines of code."
|
||||||
|
- **Why it works:** Developers want clarity and speed
|
||||||
|
|
||||||
|
**Vercel:**
|
||||||
|
- **Voice:** Modern, enthusiastic, technical
|
||||||
|
- **Example:** "Deploy your Next.js app. It's crazy fast."
|
||||||
|
- **Why it works:** Balances technical and excitement
|
||||||
|
|
||||||
|
**Twilio:**
|
||||||
|
- **Voice:** Friendly, technical, empowering
|
||||||
|
- **Example:** "Build the future of communications. We make it simple."
|
||||||
|
- **Why it works:** Technical but approachable
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Consumer Products
|
||||||
|
|
||||||
|
**Mailchimp:**
|
||||||
|
- **Voice:** Friendly, helpful, sometimes quirky
|
||||||
|
- **Example:** "That email looks a bit wonky. Want to check it?"
|
||||||
|
- **Why it works:** Makes tedious tasks feel human
|
||||||
|
|
||||||
|
**Slack:**
|
||||||
|
- **Voice:** Professional-casual, helpful, clear
|
||||||
|
- **Example:** "Work, simplified. Your team will thank you."
|
||||||
|
- **Why it works:** Professional without being stuffy
|
||||||
|
|
||||||
|
**Headspace:**
|
||||||
|
- **Voice:** Calm, supportive, encouraging
|
||||||
|
- **Example:** "Take a moment for yourself. You deserve it."
|
||||||
|
- **Why it works:** Matches meditation/wellness mission
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Enterprise/B2B
|
||||||
|
|
||||||
|
**Salesforce:**
|
||||||
|
- **Voice:** Professional, empowering, visionary
|
||||||
|
- **Example:** "Transform your business. Connect with customers in a whole new way."
|
||||||
|
- **Why it works:** Aspirational but credible
|
||||||
|
|
||||||
|
**Atlassian:**
|
||||||
|
- **Voice:** Straightforward, enthusiastic, smart
|
||||||
|
- **Example:** "Teamwork doesn't have to be hard. Let's make it easier."
|
||||||
|
- **Why it works:** Acknowledges real problems, offers solutions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Developing Your Voice
|
||||||
|
|
||||||
|
### Step 1: Define Core Attributes
|
||||||
|
|
||||||
|
Choose 3-4 from these dimensions:
|
||||||
|
|
||||||
|
**Formality:**
|
||||||
|
- Formal, professional, casual, conversational
|
||||||
|
|
||||||
|
**Humor:**
|
||||||
|
- Serious, playful, witty, irreverent
|
||||||
|
|
||||||
|
**Enthusiasm:**
|
||||||
|
- Energetic, neutral, understated
|
||||||
|
|
||||||
|
**Technical:**
|
||||||
|
- Expert, accessible, simple
|
||||||
|
|
||||||
|
**Empathy:**
|
||||||
|
- Warm, neutral, distant
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 2: Create Voice Chart
|
||||||
|
|
||||||
|
| Attribute | We are | We are not | Example |
|
||||||
|
|-----------|---------|------------|---------|
|
||||||
|
| Professional | Clear and helpful | Stuffy or robotic | "Here's how to..." not "One must..." |
|
||||||
|
| Friendly | Warm and welcoming | Overly casual | "Welcome!" not "Sup!" |
|
||||||
|
| Technical | Accurate and precise | Jargon-heavy | Explain terms first time |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 3: Write Examples
|
||||||
|
|
||||||
|
For each voice attribute, write before/after examples:
|
||||||
|
|
||||||
|
**Before (generic):**
|
||||||
|
"Our platform provides solutions for your business needs."
|
||||||
|
|
||||||
|
**After (our voice - direct, technical, helpful):**
|
||||||
|
"Deploy your apps faster with built-in CI/CD and automatic scaling."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 4: Create Voice Guidelines
|
||||||
|
|
||||||
|
Document:
|
||||||
|
- [ ] Core voice attributes (3-4)
|
||||||
|
- [ ] Do's and don'ts
|
||||||
|
- [ ] Example sentences
|
||||||
|
- [ ] Tone by context
|
||||||
|
- [ ] Word choice preferences
|
||||||
|
- [ ] Grammar rules (contractions, etc.)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing Your Voice
|
||||||
|
|
||||||
|
### Voice Consistency Check
|
||||||
|
|
||||||
|
1. **Remove branding** from 5 pieces of content
|
||||||
|
2. **Mix with competitors'** content
|
||||||
|
3. **Can people identify yours?**
|
||||||
|
|
||||||
|
If yes → Voice is distinctive
|
||||||
|
If no → Need stronger voice
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Reader Feedback
|
||||||
|
|
||||||
|
Ask your audience:
|
||||||
|
- How would you describe our voice?
|
||||||
|
- Does it match your expectations?
|
||||||
|
- What do you like/dislike?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Maintaining Voice
|
||||||
|
|
||||||
|
### Team Alignment
|
||||||
|
|
||||||
|
**Onboarding:**
|
||||||
|
- Share voice guidelines
|
||||||
|
- Review examples
|
||||||
|
- Practice exercises
|
||||||
|
|
||||||
|
**Review Process:**
|
||||||
|
- Check content against voice guidelines
|
||||||
|
- Provide specific feedback
|
||||||
|
- Create a voice champion
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- Voice guidelines in shared doc
|
||||||
|
- Examples library
|
||||||
|
- Regular updates
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Voice Evolution
|
||||||
|
|
||||||
|
**When to evolve:**
|
||||||
|
- Rebranding
|
||||||
|
- New audience
|
||||||
|
- Company maturity
|
||||||
|
- Market shift
|
||||||
|
|
||||||
|
**How to evolve:**
|
||||||
|
- Document changes
|
||||||
|
- Transition gradually
|
||||||
|
- Update guidelines
|
||||||
|
- Train team
|
||||||
|
|
||||||
|
**What to keep:**
|
||||||
|
- Core personality
|
||||||
|
- Brand values
|
||||||
|
- Recognition
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voice Guidelines Template
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# [Brand] Voice & Tone Guide
|
||||||
|
|
||||||
|
## Our Voice
|
||||||
|
|
||||||
|
[Brand] sounds [attribute], [attribute], and [attribute].
|
||||||
|
|
||||||
|
### Core Attributes
|
||||||
|
|
||||||
|
**1. [Attribute Name]**
|
||||||
|
- What it means: [Description]
|
||||||
|
- We are: [Example]
|
||||||
|
- We're not: [Counter-example]
|
||||||
|
|
||||||
|
**2. [Attribute Name]**
|
||||||
|
[Repeat]
|
||||||
|
|
||||||
|
**3. [Attribute Name]**
|
||||||
|
[Repeat]
|
||||||
|
|
||||||
|
## Grammar & Mechanics
|
||||||
|
|
||||||
|
- Contractions: [Yes/No]
|
||||||
|
- Exclamation points: [Use sparingly/Never/Frequently]
|
||||||
|
- Emojis: [Appropriate contexts]
|
||||||
|
- Person: [First/Second/Third]
|
||||||
|
- Active voice: [Always/Usually/Varies]
|
||||||
|
|
||||||
|
## Tone by Context
|
||||||
|
|
||||||
|
| Context | Tone | Example |
|
||||||
|
|---------|------|---------|
|
||||||
|
| Error | Apologetic | "Sorry about that..." |
|
||||||
|
| Success | Encouraging | "Nice work!" |
|
||||||
|
| Documentation | Clear | "Follow these steps:" |
|
||||||
|
|
||||||
|
## Word Choices
|
||||||
|
|
||||||
|
**Preferred:**
|
||||||
|
- [Word 1] over [Word 2]
|
||||||
|
- [Word 3] over [Word 4]
|
||||||
|
|
||||||
|
**Avoid:**
|
||||||
|
- [Words/phrases to avoid]
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Good Examples
|
||||||
|
[3-5 examples that nail the voice]
|
||||||
|
|
||||||
|
### Before/After
|
||||||
|
**Before:** [Generic version]
|
||||||
|
**After:** [Our voice version]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Remember:** Your voice should feel authentic, not forced. If it doesn't feel like "you," it won't resonate with your audience.
|
||||||
568
skills/content-brief-generator/scripts/generate_brief.sh
Executable file
568
skills/content-brief-generator/scripts/generate_brief.sh
Executable file
@@ -0,0 +1,568 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Content Brief Generation Script
|
||||||
|
# Interactive workflow for creating comprehensive content briefs
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
MAGENTA='\033[0;35m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# Header
|
||||||
|
echo -e "${BLUE}╔══════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${BLUE}║ Content Brief Generator ║${NC}"
|
||||||
|
echo -e "${BLUE}╚══════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Helper function for prompts
|
||||||
|
prompt_input() {
|
||||||
|
local prompt_text="$1"
|
||||||
|
local var_name="$2"
|
||||||
|
local required="$3"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo -e "${CYAN}${prompt_text}${NC}"
|
||||||
|
read -r input
|
||||||
|
|
||||||
|
if [ -n "$input" ]; then
|
||||||
|
eval "$var_name=\"$input\""
|
||||||
|
break
|
||||||
|
elif [ "$required" != "true" ]; then
|
||||||
|
eval "$var_name=\"\""
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo -e "${RED}This field is required.${NC}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_multiline() {
|
||||||
|
local prompt_text="$1"
|
||||||
|
local var_name="$2"
|
||||||
|
|
||||||
|
echo -e "${CYAN}${prompt_text}${NC}"
|
||||||
|
echo -e "${YELLOW}(Type your response, press Enter twice when done)${NC}"
|
||||||
|
|
||||||
|
local input=""
|
||||||
|
local line
|
||||||
|
local empty_count=0
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -r line
|
||||||
|
if [ -z "$line" ]; then
|
||||||
|
((empty_count++))
|
||||||
|
if [ $empty_count -ge 2 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
input="${input}\n"
|
||||||
|
else
|
||||||
|
empty_count=0
|
||||||
|
if [ -n "$input" ]; then
|
||||||
|
input="${input}\n${line}"
|
||||||
|
else
|
||||||
|
input="${line}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
eval "$var_name=\"$input\""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 1: Content Type and Basics
|
||||||
|
echo -e "${MAGENTA}━━━ Step 1: Content Basics ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Select content type:"
|
||||||
|
echo "1) Blog Post / Article"
|
||||||
|
echo "2) Technical Documentation"
|
||||||
|
echo "3) Landing Page"
|
||||||
|
echo "4) Case Study"
|
||||||
|
echo "5) Social Media"
|
||||||
|
echo "6) Email Campaign"
|
||||||
|
echo "7) Video Script"
|
||||||
|
echo "8) Whitepaper / Report"
|
||||||
|
echo "9) Product Description"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Enter number (1-9):" CONTENT_TYPE_NUM true
|
||||||
|
|
||||||
|
case $CONTENT_TYPE_NUM in
|
||||||
|
1) CONTENT_TYPE="Blog Post / Article" ;;
|
||||||
|
2) CONTENT_TYPE="Technical Documentation" ;;
|
||||||
|
3) CONTENT_TYPE="Landing Page" ;;
|
||||||
|
4) CONTENT_TYPE="Case Study" ;;
|
||||||
|
5) CONTENT_TYPE="Social Media" ;;
|
||||||
|
6) CONTENT_TYPE="Email Campaign" ;;
|
||||||
|
7) CONTENT_TYPE="Video Script" ;;
|
||||||
|
8) CONTENT_TYPE="Whitepaper / Report" ;;
|
||||||
|
9) CONTENT_TYPE="Product Description" ;;
|
||||||
|
*) CONTENT_TYPE="Blog Post / Article" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
prompt_input "Working title or topic:" TITLE true
|
||||||
|
prompt_input "Target word count (or duration for video):" WORD_COUNT false
|
||||||
|
prompt_input "Target publication date (YYYY-MM-DD):" PUB_DATE false
|
||||||
|
|
||||||
|
# Step 2: Audience and Goals
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 2: Audience & Goals ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Primary target audience (e.g., 'Junior developers', 'Marketing managers'):" AUDIENCE true
|
||||||
|
prompt_input "Reader's knowledge level (Beginner/Intermediate/Advanced):" KNOWLEDGE_LEVEL false
|
||||||
|
prompt_multiline "What problem or question does this content solve for them?" PROBLEM
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Primary content goal:"
|
||||||
|
echo "1) Educate / Inform"
|
||||||
|
echo "2) Convert / Generate leads"
|
||||||
|
echo "3) Entertain / Engage"
|
||||||
|
echo "4) Support / Help"
|
||||||
|
echo "5) Build authority / Thought leadership"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Enter number (1-5):" GOAL_NUM true
|
||||||
|
|
||||||
|
case $GOAL_NUM in
|
||||||
|
1) PRIMARY_GOAL="Educate / Inform" ;;
|
||||||
|
2) PRIMARY_GOAL="Convert / Generate leads" ;;
|
||||||
|
3) PRIMARY_GOAL="Entertain / Engage" ;;
|
||||||
|
4) PRIMARY_GOAL="Support / Help" ;;
|
||||||
|
5) PRIMARY_GOAL="Build authority / Thought leadership" ;;
|
||||||
|
*) PRIMARY_GOAL="Educate / Inform" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
prompt_input "Key takeaway (what should readers remember):" KEY_TAKEAWAY true
|
||||||
|
|
||||||
|
# Step 3: SEO & Keywords
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 3: SEO Strategy ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Primary keyword:" PRIMARY_KEYWORD true
|
||||||
|
prompt_input "Secondary keywords (comma-separated):" SECONDARY_KEYWORDS false
|
||||||
|
prompt_input "Search intent (Informational/Commercial/Transactional/Navigational):" SEARCH_INTENT false
|
||||||
|
prompt_input "Target search volume (if known):" SEARCH_VOLUME false
|
||||||
|
|
||||||
|
# Step 4: Structure and Content
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 4: Content Structure ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Content structure framework:"
|
||||||
|
echo "1) AIDA (Attention, Interest, Desire, Action)"
|
||||||
|
echo "2) PAS (Problem, Agitate, Solve)"
|
||||||
|
echo "3) Inverted Pyramid (Most important first)"
|
||||||
|
echo "4) Storytelling Arc (Setup, Conflict, Resolution)"
|
||||||
|
echo "5) How-to / Tutorial"
|
||||||
|
echo "6) Listicle"
|
||||||
|
echo "7) Custom"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Enter number (1-7):" FRAMEWORK_NUM false
|
||||||
|
|
||||||
|
case $FRAMEWORK_NUM in
|
||||||
|
1) FRAMEWORK="AIDA (Attention, Interest, Desire, Action)" ;;
|
||||||
|
2) FRAMEWORK="PAS (Problem, Agitate, Solve)" ;;
|
||||||
|
3) FRAMEWORK="Inverted Pyramid" ;;
|
||||||
|
4) FRAMEWORK="Storytelling Arc" ;;
|
||||||
|
5) FRAMEWORK="How-to / Tutorial" ;;
|
||||||
|
6) FRAMEWORK="Listicle" ;;
|
||||||
|
7) FRAMEWORK="Custom" ;;
|
||||||
|
*) FRAMEWORK="Custom" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
prompt_multiline "Key sections or outline (one per line):" KEY_SECTIONS
|
||||||
|
|
||||||
|
prompt_input "Number of examples/case studies to include:" NUM_EXAMPLES false
|
||||||
|
prompt_input "Data/statistics required (Yes/No):" NEEDS_DATA false
|
||||||
|
prompt_input "Code examples needed (Yes/No - for technical content):" NEEDS_CODE false
|
||||||
|
|
||||||
|
# Step 5: Tone, Voice, and Style
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 5: Tone & Voice ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Tone:"
|
||||||
|
echo "1) Professional and formal"
|
||||||
|
echo "2) Professional but conversational"
|
||||||
|
echo "3) Casual and friendly"
|
||||||
|
echo "4) Technical and authoritative"
|
||||||
|
echo "5) Playful and creative"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Enter number (1-5):" TONE_NUM false
|
||||||
|
|
||||||
|
case $TONE_NUM in
|
||||||
|
1) TONE="Professional and formal" ;;
|
||||||
|
2) TONE="Professional but conversational" ;;
|
||||||
|
3) TONE="Casual and friendly" ;;
|
||||||
|
4) TONE="Technical and authoritative" ;;
|
||||||
|
5) TONE="Playful and creative" ;;
|
||||||
|
*) TONE="Professional but conversational" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
prompt_input "Point of view (1st person 'we', 2nd person 'you', 3rd person):" POV false
|
||||||
|
prompt_input "Specific style notes or voice attributes:" STYLE_NOTES false
|
||||||
|
|
||||||
|
# Step 6: Media and Visuals
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 6: Visuals & Media ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Number of images needed:" NUM_IMAGES false
|
||||||
|
prompt_input "Hero image requirements:" HERO_IMAGE false
|
||||||
|
prompt_input "Screenshots or diagrams needed (describe):" SCREENSHOTS false
|
||||||
|
prompt_input "Video or embedded media (describe):" VIDEO_NEEDS false
|
||||||
|
|
||||||
|
# Step 7: CTAs and Conversion
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 7: CTAs & Conversion ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Primary call-to-action:" PRIMARY_CTA false
|
||||||
|
prompt_input "Secondary CTA (if any):" SECONDARY_CTA false
|
||||||
|
prompt_input "Conversion goal (e.g., 'Sign up', 'Download', 'Contact sales'):" CONVERSION_GOAL false
|
||||||
|
|
||||||
|
# Step 8: Research and References
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 8: Research Requirements ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Competitor content to reference (URLs, comma-separated):" COMPETITOR_URLS false
|
||||||
|
prompt_input "SME interviews required (Yes/No):" NEEDS_SME false
|
||||||
|
prompt_input "Primary sources or research needed:" RESEARCH_SOURCES false
|
||||||
|
|
||||||
|
# Step 9: Success Metrics
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 9: Success Metrics ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Primary success metric (e.g., 'Organic traffic', 'Conversions'):" PRIMARY_METRIC true
|
||||||
|
prompt_input "Secondary metrics (comma-separated):" SECONDARY_METRICS false
|
||||||
|
prompt_input "Target goal for primary metric:" METRIC_TARGET false
|
||||||
|
|
||||||
|
# Step 10: Additional Details
|
||||||
|
echo ""
|
||||||
|
echo -e "${MAGENTA}━━━ Step 10: Additional Details ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
prompt_input "Internal links to include (comma-separated URLs/pages):" INTERNAL_LINKS false
|
||||||
|
prompt_input "External links to include:" EXTERNAL_LINKS false
|
||||||
|
prompt_input "Legal or compliance requirements:" COMPLIANCE false
|
||||||
|
prompt_multiline "Any other special requirements or notes:" SPECIAL_NOTES
|
||||||
|
|
||||||
|
# Generate filename
|
||||||
|
FILENAME="${TITLE// /_}"
|
||||||
|
FILENAME="${FILENAME//[^a-zA-Z0-9_-]/}"
|
||||||
|
FILENAME="$(echo "$FILENAME" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
FILENAME="content_brief_${FILENAME}.md"
|
||||||
|
|
||||||
|
# Output directory
|
||||||
|
OUTPUT_DIR="."
|
||||||
|
if [ ! -z "$1" ]; then
|
||||||
|
OUTPUT_DIR="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
OUTPUT_FILE="$OUTPUT_DIR/$FILENAME"
|
||||||
|
|
||||||
|
# Generate the brief
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}Generating content brief...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cat > "$OUTPUT_FILE" << EOF
|
||||||
|
# Content Brief: ${TITLE}
|
||||||
|
|
||||||
|
**Content Type:** ${CONTENT_TYPE}
|
||||||
|
**Target Word Count:** ${WORD_COUNT:-TBD}
|
||||||
|
**Target Publication Date:** ${PUB_DATE:-TBD}
|
||||||
|
**Status:** Draft
|
||||||
|
**Created:** $(date +%Y-%m-%d)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
### Key Information
|
||||||
|
- **Primary Goal:** ${PRIMARY_GOAL}
|
||||||
|
- **Target Audience:** ${AUDIENCE}
|
||||||
|
- **Knowledge Level:** ${KNOWLEDGE_LEVEL:-General}
|
||||||
|
- **Key Takeaway:** ${KEY_TAKEAWAY}
|
||||||
|
|
||||||
|
### Problem Statement
|
||||||
|
${PROBLEM}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Audience
|
||||||
|
|
||||||
|
### Primary Audience
|
||||||
|
${AUDIENCE}
|
||||||
|
|
||||||
|
**Knowledge Level:** ${KNOWLEDGE_LEVEL:-General}
|
||||||
|
|
||||||
|
**Pain Points:**
|
||||||
|
${PROBLEM}
|
||||||
|
|
||||||
|
**What They Need:**
|
||||||
|
${KEY_TAKEAWAY}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SEO Strategy
|
||||||
|
|
||||||
|
### Keywords
|
||||||
|
- **Primary Keyword:** ${PRIMARY_KEYWORD}
|
||||||
|
- **Secondary Keywords:** ${SECONDARY_KEYWORDS:-TBD}
|
||||||
|
- **Search Intent:** ${SEARCH_INTENT:-Informational}
|
||||||
|
- **Target Search Volume:** ${SEARCH_VOLUME:-TBD}
|
||||||
|
|
||||||
|
### SEO Requirements
|
||||||
|
- [ ] Include primary keyword in title
|
||||||
|
- [ ] Use primary keyword in first 100 words
|
||||||
|
- [ ] Include keywords in headings (H2, H3)
|
||||||
|
- [ ] Write compelling meta description (150-160 chars)
|
||||||
|
- [ ] Add alt text to all images
|
||||||
|
- [ ] Internal linking strategy
|
||||||
|
- [ ] External authoritative links
|
||||||
|
|
||||||
|
### Meta Description (Draft)
|
||||||
|
[Write a compelling 150-160 character description including primary keyword]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Content Structure
|
||||||
|
|
||||||
|
### Framework
|
||||||
|
${FRAMEWORK}
|
||||||
|
|
||||||
|
### Outline / Key Sections
|
||||||
|
${KEY_SECTIONS}
|
||||||
|
|
||||||
|
### Content Requirements
|
||||||
|
- **Examples needed:** ${NUM_EXAMPLES:-TBD}
|
||||||
|
- **Data/statistics:** ${NEEDS_DATA:-No}
|
||||||
|
- **Code examples:** ${NEEDS_CODE:-No}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tone & Voice
|
||||||
|
|
||||||
|
### Writing Style
|
||||||
|
- **Tone:** ${TONE}
|
||||||
|
- **Point of View:** ${POV:-Second person (you/your)}
|
||||||
|
- **Style Notes:** ${STYLE_NOTES:-Follow brand voice guidelines}
|
||||||
|
|
||||||
|
### Writing Guidelines
|
||||||
|
- Use active voice
|
||||||
|
- Short paragraphs (2-4 sentences)
|
||||||
|
- Bullet points for scanability
|
||||||
|
- Subheadings every 300-400 words
|
||||||
|
- Clear, concise language
|
||||||
|
- Avoid jargon (or explain when necessary)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Visual & Media Requirements
|
||||||
|
|
||||||
|
### Images
|
||||||
|
- **Number of images:** ${NUM_IMAGES:-3-5}
|
||||||
|
- **Hero image:** ${HERO_IMAGE:-Featured image at top}
|
||||||
|
- **In-content images:** ${SCREENSHOTS:-Relevant screenshots or diagrams}
|
||||||
|
|
||||||
|
### Other Media
|
||||||
|
${VIDEO_NEEDS}
|
||||||
|
|
||||||
|
### Image Specifications
|
||||||
|
- Format: PNG or JPG
|
||||||
|
- Max file size: 500KB (optimize)
|
||||||
|
- Alt text for all images
|
||||||
|
- Relevant to content
|
||||||
|
- High quality (no stock photos if possible)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Research & Sources
|
||||||
|
|
||||||
|
### Competitor Analysis
|
||||||
|
${COMPETITOR_URLS:-Research top-ranking content for target keyword}
|
||||||
|
|
||||||
|
### Research Requirements
|
||||||
|
- **SME Interviews:** ${NEEDS_SME:-No}
|
||||||
|
- **Primary Sources:** ${RESEARCH_SOURCES:-TBD}
|
||||||
|
- **Citation Standards:** Link to original sources, use recent data (< 2 years)
|
||||||
|
|
||||||
|
### Required Research
|
||||||
|
- [ ] Analyze top 5 ranking articles for primary keyword
|
||||||
|
- [ ] Gather relevant statistics and data
|
||||||
|
- [ ] Collect examples and case studies
|
||||||
|
- [ ] Interview SMEs (if required)
|
||||||
|
- [ ] Compile list of authoritative sources
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Calls-to-Action
|
||||||
|
|
||||||
|
### Primary CTA
|
||||||
|
${PRIMARY_CTA:-TBD}
|
||||||
|
|
||||||
|
### Secondary CTA
|
||||||
|
${SECONDARY_CTA:-None}
|
||||||
|
|
||||||
|
### Conversion Goal
|
||||||
|
${CONVERSION_GOAL:-TBD}
|
||||||
|
|
||||||
|
### CTA Placement
|
||||||
|
- [ ] In introduction (soft CTA)
|
||||||
|
- [ ] Mid-content (contextual)
|
||||||
|
- [ ] End of article (primary CTA)
|
||||||
|
- [ ] Sidebar or floating (if applicable)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Links & References
|
||||||
|
|
||||||
|
### Internal Links
|
||||||
|
${INTERNAL_LINKS:-Link to relevant internal content (3-5 links)}
|
||||||
|
|
||||||
|
### External Links
|
||||||
|
${EXTERNAL_LINKS:-Link to authoritative external sources (2-3 links)}
|
||||||
|
|
||||||
|
### Linking Strategy
|
||||||
|
- Link to relevant internal content (3-5 links)
|
||||||
|
- Link to authoritative external sources
|
||||||
|
- Use descriptive anchor text
|
||||||
|
- Open external links in new tabs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Success Metrics
|
||||||
|
|
||||||
|
### Primary Metric
|
||||||
|
**${PRIMARY_METRIC}** - Target: ${METRIC_TARGET:-TBD}
|
||||||
|
|
||||||
|
### Secondary Metrics
|
||||||
|
${SECONDARY_METRICS:-Time on page, scroll depth, social shares}
|
||||||
|
|
||||||
|
### How We'll Measure Success
|
||||||
|
- Track metrics in Google Analytics / analytics tool
|
||||||
|
- Review performance after 30 days
|
||||||
|
- A/B test headlines/CTAs if needed
|
||||||
|
- Compare to existing similar content
|
||||||
|
|
||||||
|
### Benchmarks
|
||||||
|
- [Add relevant benchmarks from similar content]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Legal & Compliance
|
||||||
|
|
||||||
|
${COMPLIANCE:-No special requirements}
|
||||||
|
|
||||||
|
### Checklist
|
||||||
|
- [ ] Copyright for all images
|
||||||
|
- [ ] Proper attribution for quotes
|
||||||
|
- [ ] Fact-checking completed
|
||||||
|
- [ ] Legal disclaimers (if needed)
|
||||||
|
- [ ] Privacy policy linked (if collecting data)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Special Requirements / Notes
|
||||||
|
|
||||||
|
${SPECIAL_NOTES:-None}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workflow & Timeline
|
||||||
|
|
||||||
|
### Process
|
||||||
|
1. **Brief Review** - Writer reviews brief with stakeholders
|
||||||
|
2. **Research** - Gather sources, data, examples (est: ___ hours)
|
||||||
|
3. **Outline** - Create detailed outline for review (est: ___ hours)
|
||||||
|
4. **First Draft** - Write content following brief (est: ___ hours)
|
||||||
|
5. **Self-Edit** - Writer reviews and edits (est: ___ hours)
|
||||||
|
6. **Peer Review** - Editor reviews against brief (est: ___ hours)
|
||||||
|
7. **Revisions** - Incorporate feedback (est: ___ hours)
|
||||||
|
8. **SEO Review** - Optimize for search (est: ___ hours)
|
||||||
|
9. **Final Approval** - Stakeholder sign-off
|
||||||
|
10. **Publish** - Schedule and publish
|
||||||
|
11. **Promote** - Distribution across channels
|
||||||
|
12. **Track** - Monitor success metrics
|
||||||
|
|
||||||
|
### Key Dates
|
||||||
|
- **Brief Finalized:** $(date +%Y-%m-%d)
|
||||||
|
- **First Draft Due:** ${PUB_DATE:-TBD}
|
||||||
|
- **Final Approval:** ${PUB_DATE:-TBD}
|
||||||
|
- **Publication Date:** ${PUB_DATE:-TBD}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stakeholders
|
||||||
|
|
||||||
|
### Content Team
|
||||||
|
- **Writer:** [Name]
|
||||||
|
- **Editor:** [Name]
|
||||||
|
- **SEO Specialist:** [Name]
|
||||||
|
|
||||||
|
### Reviewers
|
||||||
|
- **Subject Matter Expert:** [Name]
|
||||||
|
- **Brand Review:** [Name]
|
||||||
|
- **Final Approver:** [Name]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## References & Resources
|
||||||
|
|
||||||
|
### Templates & Guidelines
|
||||||
|
- [Brand voice guide]
|
||||||
|
- [Style guide]
|
||||||
|
- [SEO guidelines]
|
||||||
|
- [Content templates]
|
||||||
|
|
||||||
|
### Research Links
|
||||||
|
- [Link to research document]
|
||||||
|
- [Link to keyword research]
|
||||||
|
- [Link to competitor analysis]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Approval
|
||||||
|
|
||||||
|
- [ ] Writer reviewed brief
|
||||||
|
- [ ] Stakeholders aligned
|
||||||
|
- [ ] Ready to begin writing
|
||||||
|
|
||||||
|
**Approved by:** ___________
|
||||||
|
**Date:** ___________
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
| Version | Date | Author | Changes |
|
||||||
|
|---------|------|--------|---------|
|
||||||
|
| 1.0 | $(date +%Y-%m-%d) | [Auto-generated] | Initial brief |
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ Content brief generated successfully!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "File location: ${BLUE}$OUTPUT_FILE${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}Next steps:${NC}"
|
||||||
|
echo "1. Review the brief with stakeholders"
|
||||||
|
echo "2. Conduct research and gather sources"
|
||||||
|
echo "3. Create detailed outline"
|
||||||
|
echo "4. Begin writing first draft"
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}Tip: Use validate_brief.sh to check completeness${NC}"
|
||||||
|
echo ""
|
||||||
372
skills/content-brief-generator/scripts/validate_brief.sh
Executable file
372
skills/content-brief-generator/scripts/validate_brief.sh
Executable file
@@ -0,0 +1,372 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Content Brief Validation Script
|
||||||
|
# Checks content brief completeness and quality
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# Check if file provided
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
echo "Usage: $0 <brief_file.md>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BRIEF_FILE="$1"
|
||||||
|
|
||||||
|
# Check if file exists
|
||||||
|
if [ ! -f "$BRIEF_FILE" ]; then
|
||||||
|
echo -e "${RED}✗ Error: File not found: $BRIEF_FILE${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${BLUE}║ Content Brief Validation Report ║${NC}"
|
||||||
|
echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "File: ${BLUE}$BRIEF_FILE${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Counters
|
||||||
|
ISSUES_FOUND=0
|
||||||
|
WARNINGS=0
|
||||||
|
CHECKS_PASSED=0
|
||||||
|
|
||||||
|
# Function to check section exists
|
||||||
|
check_section() {
|
||||||
|
local section_name="$1"
|
||||||
|
local section_pattern="$2"
|
||||||
|
local required="$3"
|
||||||
|
|
||||||
|
if grep -q "$section_pattern" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} $section_name section found"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
if [ "$required" = "true" ]; then
|
||||||
|
echo -e "${RED}✗${NC} $section_name section missing (REQUIRED)"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} $section_name section missing (recommended)"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "${BLUE}━━━ Required Sections ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check required sections
|
||||||
|
check_section "Overview" "##.*Overview" true
|
||||||
|
check_section "Audience" "##.*Audience" true
|
||||||
|
check_section "SEO Strategy" "##.*SEO.*Strategy\|##.*SEO\|##.*Keywords" true
|
||||||
|
check_section "Content Structure" "##.*Content Structure\|##.*Structure\|##.*Outline" true
|
||||||
|
check_section "Success Metrics" "##.*Success Metrics\|##.*Metrics" true
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}━━━ Recommended Sections ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check recommended sections
|
||||||
|
check_section "Tone & Voice" "##.*Tone.*Voice\|##.*Voice\|##.*Writing Style" false
|
||||||
|
check_section "Visual & Media" "##.*Visual\|##.*Media\|##.*Images" false
|
||||||
|
check_section "Research & Sources" "##.*Research\|##.*Sources" false
|
||||||
|
check_section "CTAs" "##.*CTA\|##.*Call.*Action" false
|
||||||
|
check_section "Timeline" "##.*Timeline\|##.*Workflow" false
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}━━━ Content Quality Checks ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check for placeholder text
|
||||||
|
if grep -q "\[.*\]\|TBD" "$BRIEF_FILE"; then
|
||||||
|
PLACEHOLDER_COUNT=$(grep -c "\[.*\]\|TBD" "$BRIEF_FILE")
|
||||||
|
echo -e "${YELLOW}⚠${NC} Contains $PLACEHOLDER_COUNT placeholder(s) - fill in all details"
|
||||||
|
((WARNINGS++))
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓${NC} No placeholders remaining"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for primary keyword
|
||||||
|
if grep -qi "Primary Keyword" "$BRIEF_FILE"; then
|
||||||
|
if grep -A 1 "Primary Keyword" "$BRIEF_FILE" | grep -qv "TBD\|^\s*$"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Primary keyword specified"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Primary keyword not specified"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Primary keyword section missing"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for target audience
|
||||||
|
if grep -qi "Target Audience\|Primary Audience" "$BRIEF_FILE"; then
|
||||||
|
if grep -A 2 "Target Audience\|Primary Audience" "$BRIEF_FILE" | grep -qv "TBD\|^\s*$"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Target audience defined"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Target audience not defined"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Target audience section missing"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for word count
|
||||||
|
if grep -qi "Word Count" "$BRIEF_FILE"; then
|
||||||
|
if grep "Word Count" "$BRIEF_FILE" | grep -qv "TBD"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Word count specified"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Word count not specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Word count not mentioned"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for content structure/outline
|
||||||
|
if grep -qi "Outline\|Key Sections\|Structure" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Content structure provided"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Content structure/outline missing"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}━━━ SEO Checks ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check for keyword strategy
|
||||||
|
KEYWORD_SCORE=0
|
||||||
|
|
||||||
|
if grep -qi "Primary Keyword" "$BRIEF_FILE"; then
|
||||||
|
if grep -A 1 "Primary Keyword" "$BRIEF_FILE" | grep -qv "TBD\|^\s*$"; then
|
||||||
|
((KEYWORD_SCORE++))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -qi "Secondary Keyword" "$BRIEF_FILE"; then
|
||||||
|
((KEYWORD_SCORE++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -qi "Search Intent" "$BRIEF_FILE"; then
|
||||||
|
((KEYWORD_SCORE++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $KEYWORD_SCORE -eq 3 ]; then
|
||||||
|
echo -e "${GREEN}✓${NC} Complete keyword strategy defined"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
elif [ $KEYWORD_SCORE -eq 2 ]; then
|
||||||
|
echo -e "${YELLOW}⚠${NC} Partial keyword strategy (add more details)"
|
||||||
|
((WARNINGS++))
|
||||||
|
elif [ $KEYWORD_SCORE -eq 1 ]; then
|
||||||
|
echo -e "${YELLOW}⚠${NC} Minimal keyword strategy (needs expansion)"
|
||||||
|
((WARNINGS++))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} No keyword strategy defined"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for meta description
|
||||||
|
if grep -qi "Meta Description" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Meta description section included"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Meta description not mentioned"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for internal links
|
||||||
|
if grep -qi "Internal Link" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Internal linking strategy mentioned"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Internal linking not addressed"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}━━━ Content-Specific Checks ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check for tone/voice
|
||||||
|
if grep -qi "Tone\|Voice\|Writing Style" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Tone and voice specified"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Tone and voice not specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for CTAs
|
||||||
|
if grep -qi "CTA\|Call.*Action" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Call-to-action defined"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} No call-to-action specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for success metrics
|
||||||
|
if grep -qi "Success Metric\|Primary Metric" "$BRIEF_FILE"; then
|
||||||
|
if grep -A 3 "Success Metric\|Primary Metric" "$BRIEF_FILE" | grep -qv "TBD"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Success metrics defined"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Success metrics not defined"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} Success metrics section missing"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for target audience pain points/problem
|
||||||
|
if grep -qi "Problem\|Pain Point" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Audience problem/pain points addressed"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Audience problem/pain points not explicitly stated"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for research requirements
|
||||||
|
if grep -qi "Research\|Source" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Research requirements mentioned"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Research requirements not specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for visual/media requirements
|
||||||
|
if grep -qi "Image\|Visual\|Media\|Screenshot" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Visual/media requirements included"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Visual/media requirements not specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Document quality
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}━━━ Document Quality ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check word count
|
||||||
|
WORD_COUNT=$(wc -w < "$BRIEF_FILE")
|
||||||
|
echo -e "Brief word count: $WORD_COUNT"
|
||||||
|
|
||||||
|
if [ "$WORD_COUNT" -lt 200 ]; then
|
||||||
|
echo -e "${RED}✗${NC} Brief is too short (< 200 words) - needs more detail"
|
||||||
|
((ISSUES_FOUND++))
|
||||||
|
elif [ "$WORD_COUNT" -lt 400 ]; then
|
||||||
|
echo -e "${YELLOW}⚠${NC} Brief is short (< 400 words) - consider adding more detail"
|
||||||
|
((WARNINGS++))
|
||||||
|
elif [ "$WORD_COUNT" -gt 2000 ]; then
|
||||||
|
echo -e "${YELLOW}⚠${NC} Brief is very long (> 2000 words) - ensure it's scannable"
|
||||||
|
((WARNINGS++))
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓${NC} Brief length appropriate"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for proper heading structure
|
||||||
|
if grep -q "^#\s" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Proper heading structure"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Check heading hierarchy (should start with # not ##)"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for content type
|
||||||
|
if grep -qi "Content Type" "$BRIEF_FILE"; then
|
||||||
|
echo -e "${GREEN}✓${NC} Content type specified"
|
||||||
|
((CHECKS_PASSED++))
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠${NC} Content type not specified"
|
||||||
|
((WARNINGS++))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Final Summary
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${BLUE}║ Validation Summary ║${NC}"
|
||||||
|
echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "Checks passed: ${GREEN}$CHECKS_PASSED${NC}"
|
||||||
|
echo -e "Warnings: ${YELLOW}$WARNINGS${NC}"
|
||||||
|
echo -e "Issues found: ${RED}$ISSUES_FOUND${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Calculate completeness score
|
||||||
|
TOTAL_CHECKS=$((CHECKS_PASSED + WARNINGS + ISSUES_FOUND))
|
||||||
|
if [ $TOTAL_CHECKS -gt 0 ]; then
|
||||||
|
COMPLETENESS=$((CHECKS_PASSED * 100 / TOTAL_CHECKS))
|
||||||
|
echo -e "Completeness: ${BLUE}${COMPLETENESS}%${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Recommendations
|
||||||
|
echo -e "${BLUE}━━━ Key Recommendations ━━━${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "1. Fill in all TBD placeholders with specific information"
|
||||||
|
echo "2. Ensure primary keyword and SEO strategy are complete"
|
||||||
|
echo "3. Define clear, measurable success metrics"
|
||||||
|
echo "4. Specify tone, voice, and writing style guidelines"
|
||||||
|
echo "5. Include research sources and competitor analysis"
|
||||||
|
echo "6. Add visual/media requirements with specifications"
|
||||||
|
echo "7. Define clear CTAs aligned with content goals"
|
||||||
|
echo "8. Review with stakeholders before writer begins"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Priority issues
|
||||||
|
if [ "$ISSUES_FOUND" -gt 0 ]; then
|
||||||
|
echo -e "${RED}⚠ Critical Issues to Address:${NC}"
|
||||||
|
if ! grep -qi "Primary Keyword" "$BRIEF_FILE" || grep -A 1 "Primary Keyword" "$BRIEF_FILE" | grep -q "TBD"; then
|
||||||
|
echo " • Define primary keyword for SEO"
|
||||||
|
fi
|
||||||
|
if ! grep -qi "Target Audience\|Primary Audience" "$BRIEF_FILE" || grep -A 2 "Target Audience\|Primary Audience" "$BRIEF_FILE" | grep -q "TBD"; then
|
||||||
|
echo " • Specify target audience clearly"
|
||||||
|
fi
|
||||||
|
if ! grep -qi "Success Metric" "$BRIEF_FILE" || grep -A 3 "Success Metric" "$BRIEF_FILE" | grep -q "TBD"; then
|
||||||
|
echo " • Define success metrics and targets"
|
||||||
|
fi
|
||||||
|
if ! grep -qi "Outline\|Key Sections\|Structure" "$BRIEF_FILE"; then
|
||||||
|
echo " • Add content structure or outline"
|
||||||
|
fi
|
||||||
|
if [ "$WORD_COUNT" -lt 200 ]; then
|
||||||
|
echo " • Add more detail to brief (currently too short)"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Exit code
|
||||||
|
if [ "$ISSUES_FOUND" -gt 0 ]; then
|
||||||
|
echo -e "${RED}❌ Content brief validation failed${NC}"
|
||||||
|
echo -e " Address $ISSUES_FOUND critical issue(s) before proceeding"
|
||||||
|
exit 1
|
||||||
|
elif [ "$WARNINGS" -gt 3 ]; then
|
||||||
|
echo -e "${YELLOW}⚠ Content brief validation passed with warnings${NC}"
|
||||||
|
echo -e " Consider addressing $WARNINGS warning(s) to improve quality"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✅ Content brief validation passed!${NC}"
|
||||||
|
echo -e " Brief looks ready for writer to begin"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user