myaidev-method 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +0 -1
- package/.env.example +5 -4
- package/CHANGELOG.md +2 -2
- package/CONTENT_CREATION_GUIDE.md +489 -3211
- package/DEVELOPER_USE_CASES.md +1 -1
- package/MODULAR_INSTALLATION.md +2 -2
- package/README.md +39 -33
- package/TECHNICAL_ARCHITECTURE.md +1 -1
- package/USER_GUIDE.md +242 -190
- package/agents/content-editor-agent.md +90 -0
- package/agents/content-planner-agent.md +97 -0
- package/agents/content-research-agent.md +62 -0
- package/agents/content-seo-agent.md +101 -0
- package/agents/content-writer-agent.md +69 -0
- package/agents/infographic-analyzer-agent.md +63 -0
- package/agents/infographic-designer-agent.md +72 -0
- package/bin/cli.js +776 -422
- package/{content-rules.example.md → content-rules-example.md} +2 -2
- package/dist/mcp/health-check.js +82 -68
- package/dist/mcp/mcp-config.json +8 -0
- package/dist/mcp/openstack-server.js +1746 -1262
- package/dist/server/.tsbuildinfo +1 -1
- package/extension.json +21 -4
- package/package.json +181 -184
- package/skills/company-config/SKILL.md +133 -0
- package/skills/configure/SKILL.md +1 -1
- package/skills/myai-configurator/SKILL.md +77 -0
- package/skills/myai-configurator/content-creation-configurator/SKILL.md +516 -0
- package/skills/myai-configurator/content-maintenance-configurator/SKILL.md +397 -0
- package/skills/myai-content-enrichment/SKILL.md +114 -0
- package/skills/myai-content-ideation/SKILL.md +288 -0
- package/skills/myai-content-ideation/evals/evals.json +182 -0
- package/skills/myai-content-production-coordinator/SKILL.md +946 -0
- package/skills/{content-rules-setup → myai-content-rules-setup}/SKILL.md +1 -1
- package/skills/{content-verifier → myai-content-verifier}/SKILL.md +1 -1
- package/skills/myai-content-writer/SKILL.md +333 -0
- package/skills/{infographic → myai-infographic}/SKILL.md +1 -1
- package/skills/myai-proprietary-content-verifier/SKILL.md +175 -0
- package/skills/myai-proprietary-content-verifier/evals/evals.json +36 -0
- package/skills/myai-skill-builder/SKILL.md +699 -0
- package/skills/myai-skill-builder/agents/analyzer-agent.md +137 -0
- package/skills/myai-skill-builder/agents/comparator-agent.md +77 -0
- package/skills/myai-skill-builder/agents/grader-agent.md +103 -0
- package/skills/myai-skill-builder/assets/eval_review.html +131 -0
- package/skills/myai-skill-builder/references/schemas.md +211 -0
- package/skills/myai-skill-builder/scripts/aggregate_benchmark.py +190 -0
- package/skills/myai-skill-builder/scripts/generate_review.py +381 -0
- package/skills/myai-skill-builder/scripts/package_skill.py +91 -0
- package/skills/myai-skill-builder/scripts/run_eval.py +105 -0
- package/skills/myai-skill-builder/scripts/run_loop.py +211 -0
- package/skills/myai-skill-builder/scripts/utils.py +123 -0
- package/skills/myai-visual-generator/SKILL.md +125 -0
- package/skills/myai-visual-generator/evals/evals.json +155 -0
- package/skills/myai-visual-generator/references/infographic-pipeline.md +73 -0
- package/skills/myai-visual-generator/references/research-visuals.md +57 -0
- package/skills/myai-visual-generator/references/services.md +89 -0
- package/skills/myai-visual-generator/scripts/visual-generation-utils.js +1272 -0
- package/skills/myaidev-figma/SKILL.md +212 -0
- package/skills/myaidev-figma/capture.js +133 -0
- package/skills/myaidev-figma/crawl.js +130 -0
- package/skills/myaidev-figma-configure/SKILL.md +130 -0
- package/skills/openstack-manager/SKILL.md +1 -1
- package/skills/payloadcms-publisher/SKILL.md +141 -77
- package/skills/payloadcms-publisher/references/field-mapping.md +142 -0
- package/skills/payloadcms-publisher/references/lexical-format.md +97 -0
- package/skills/security-auditor/SKILL.md +1 -1
- package/src/cli/commands/addon.js +105 -7
- package/src/config/workflows.js +172 -228
- package/src/lib/ascii-banner.js +197 -182
- package/src/lib/{content-coordinator.js → content-production-coordinator.js} +649 -459
- package/src/lib/installation-detector.js +93 -59
- package/src/lib/payloadcms-utils.js +285 -510
- package/src/lib/workflow-installer.js +55 -0
- package/src/mcp/health-check.js +82 -68
- package/src/mcp/openstack-server.js +1746 -1262
- package/src/scripts/configure-visual-apis.js +224 -173
- package/src/scripts/configure-wordpress-mcp.js +96 -66
- package/src/scripts/init/install.js +109 -85
- package/src/scripts/init-project.js +138 -67
- package/src/scripts/utils/write-content.js +67 -52
- package/src/scripts/wordpress/publish-to-wordpress.js +128 -128
- package/src/templates/claude/CLAUDE.md +19 -12
- package/hooks/hooks.json +0 -26
- package/skills/content-coordinator/SKILL.md +0 -130
- package/skills/content-enrichment/SKILL.md +0 -80
- package/skills/content-writer/SKILL.md +0 -285
- package/skills/skill-builder/SKILL.md +0 -417
- package/skills/visual-generator/SKILL.md +0 -140
- /package/skills/{content-writer → myai-content-writer}/agents/editor-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/research-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/seo-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/visual-planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/writer-agent.md +0 -0
|
@@ -1,3399 +1,677 @@
|
|
|
1
|
-
# Content Creation
|
|
1
|
+
# Content Creation Skillpack
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
> **TL;DR**: This guide shows marketers how to use MyAIDev Method to create high-quality content 10x faster, publish to multiple platforms simultaneously, and maintain consistency across all channels - from ideation to analytics.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Table of Contents
|
|
10
|
-
|
|
11
|
-
1. [Introduction](#introduction)
|
|
12
|
-
2. [Understanding the Content Marketing Landscape](#understanding-the-content-marketing-landscape)
|
|
13
|
-
3. [The MyAIDev Content Creation Pipeline](#the-myaidev-content-creation-pipeline)
|
|
14
|
-
4. [Phase 1: Content Ideation & Strategy](#phase-1-content-ideation--strategy)
|
|
15
|
-
5. [Phase 2: Content Generation](#phase-2-content-generation)
|
|
16
|
-
6. [Phase 3: Multi-Platform Publishing](#phase-3-multi-platform-publishing)
|
|
17
|
-
7. [Phase 4: Content Optimization & Analytics](#phase-4-content-optimization--analytics)
|
|
18
|
-
8. [Where AI Excels](#where-ai-excels)
|
|
19
|
-
9. [Where Human Input is Critical](#where-human-input-is-critical)
|
|
20
|
-
10. [Common Pitfalls & How to Avoid Them](#common-pitfalls--how-to-avoid-them)
|
|
21
|
-
11. [Content Types & Templates](#content-types--templates)
|
|
22
|
-
12. [Multi-Channel Strategy](#multi-channel-strategy)
|
|
23
|
-
13. [Measuring Success](#measuring-success)
|
|
24
|
-
14. [Case Studies](#case-studies)
|
|
25
|
-
15. [Best Practices](#best-practices)
|
|
26
|
-
16. [Getting Started Checklist](#getting-started-checklist)
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Introduction
|
|
31
|
-
|
|
32
|
-
### The Modern Content Marketing Challenge
|
|
33
|
-
|
|
34
|
-
Content marketers face unprecedented challenges in 2025:
|
|
35
|
-
|
|
36
|
-
**Volume Pressure**: Audiences expect fresh content daily across multiple platforms
|
|
37
|
-
**Quality Standards**: Generic content gets ignored; depth and value are mandatory
|
|
38
|
-
**Platform Diversity**: Blog, LinkedIn, Twitter, YouTube, podcasts, newsletters, docs
|
|
39
|
-
**SEO Complexity**: Search algorithms prioritize E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness)
|
|
40
|
-
**Resource Constraints**: Small teams, tight budgets, competing priorities
|
|
41
|
-
|
|
42
|
-
**Traditional Content Marketing Process**:
|
|
43
|
-
```
|
|
44
|
-
Ideation (4-8 hours)
|
|
45
|
-
→ Research (8-12 hours)
|
|
46
|
-
→ Writing (8-16 hours)
|
|
47
|
-
→ Editing (4-8 hours)
|
|
48
|
-
→ SEO Optimization (2-4 hours)
|
|
49
|
-
→ Publishing (1-2 hours per platform)
|
|
50
|
-
→ Distribution (2-4 hours)
|
|
51
|
-
|
|
52
|
-
Total: 30-55 hours per piece of long-form content
|
|
53
|
-
Output: 1-2 pieces per week maximum
|
|
54
|
-
Platforms: Usually 1-2 (blog + LinkedIn)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**The MyAIDev Method Approach**:
|
|
58
|
-
```
|
|
59
|
-
Ideation (30 min with AI)
|
|
60
|
-
→ Generation (1-2 hours with AI)
|
|
61
|
-
→ Human Refinement (2-4 hours)
|
|
62
|
-
→ Multi-Platform Publishing (15 min automated)
|
|
63
|
-
|
|
64
|
-
Total: 4-7 hours per piece
|
|
65
|
-
Output: 8-12 pieces per week possible
|
|
66
|
-
Platforms: 5+ platforms simultaneously
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### What This Guide Covers
|
|
70
|
-
|
|
71
|
-
This guide is specifically designed for:
|
|
72
|
-
|
|
73
|
-
✅ **Content Marketers**: Blog strategy, SEO, lead generation
|
|
74
|
-
✅ **Growth Marketers**: Content-driven acquisition strategies
|
|
75
|
-
✅ **Developer Relations**: Technical tutorials, documentation, community content
|
|
76
|
-
✅ **Product Marketers**: Feature announcements, product education, case studies
|
|
77
|
-
✅ **Social Media Managers**: Multi-platform content distribution
|
|
78
|
-
✅ **Content Strategists**: Editorial planning, content operations
|
|
79
|
-
✅ **Founders/Solopreneurs**: Building thought leadership with limited time
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Understanding the Content Marketing Landscape
|
|
84
|
-
|
|
85
|
-
### Content Marketing Goals (2025)
|
|
86
|
-
|
|
87
|
-
Modern content marketing serves multiple strategic objectives:
|
|
88
|
-
|
|
89
|
-
#### 1. **Awareness & Discovery (Top of Funnel)**
|
|
90
|
-
- SEO-optimized blog posts ranking for commercial keywords
|
|
91
|
-
- Thought leadership pieces establishing authority
|
|
92
|
-
- Educational content answering audience questions
|
|
93
|
-
- Social media content driving brand visibility
|
|
94
|
-
|
|
95
|
-
#### 2. **Consideration & Education (Middle of Funnel)**
|
|
96
|
-
- Product comparison articles
|
|
97
|
-
- In-depth tutorials and guides
|
|
98
|
-
- Case studies and success stories
|
|
99
|
-
- Webinars and video content
|
|
100
|
-
|
|
101
|
-
#### 3. **Conversion & Retention (Bottom of Funnel)**
|
|
102
|
-
- Product documentation and API guides
|
|
103
|
-
- Onboarding tutorials
|
|
104
|
-
- Feature deep-dives
|
|
105
|
-
- Best practices and advanced guides
|
|
106
|
-
|
|
107
|
-
#### 4. **Community & Advocacy**
|
|
108
|
-
- User-generated content amplification
|
|
109
|
-
- Community forum content
|
|
110
|
-
- Newsletter content
|
|
111
|
-
- Social proof and testimonials
|
|
112
|
-
|
|
113
|
-
### Content Types & Distribution Matrix
|
|
114
|
-
|
|
115
|
-
| Content Type | Platforms | Frequency | Effort (Traditional) | Effort (MyAIDev) |
|
|
116
|
-
|--------------|-----------|-----------|---------------------|------------------|
|
|
117
|
-
| **Long-form Blog** (2000+ words) | Blog, Medium, LinkedIn Article | Weekly | 30-40 hours | 5-7 hours |
|
|
118
|
-
| **Technical Tutorial** (1500+ words) | Blog, Dev.to, GitHub | Bi-weekly | 20-30 hours | 4-6 hours |
|
|
119
|
-
| **Product Update** (800 words) | Blog, Product Hunt, LinkedIn | Monthly | 10-15 hours | 2-3 hours |
|
|
120
|
-
| **Documentation** (1000+ words) | Docs site, GitHub | As needed | 15-25 hours | 3-5 hours |
|
|
121
|
-
| **Social Posts** (200-500 words) | LinkedIn, Twitter, Facebook | Daily | 2-4 hours | 15-30 min |
|
|
122
|
-
| **Newsletter** (1000 words) | Email, Substack | Weekly | 8-12 hours | 2-3 hours |
|
|
123
|
-
| **Case Study** (1500 words) | Website, PDF, SlideShare | Quarterly | 40-60 hours | 8-12 hours |
|
|
124
|
-
| **Video Script** (1000 words) | YouTube, Vimeo | Bi-weekly | 15-20 hours | 3-5 hours |
|
|
125
|
-
|
|
126
|
-
### The ROI of Content Marketing
|
|
127
|
-
|
|
128
|
-
**Traditional Content Marketing Metrics** (Pre-AI):
|
|
129
|
-
- Content Output: 2-4 pieces/week
|
|
130
|
-
- Publishing Platforms: 1-2
|
|
131
|
-
- SEO Ranking Time: 6-12 months
|
|
132
|
-
- Content Team Size: 3-5 people
|
|
133
|
-
- Cost per Piece: $500-2,000
|
|
134
|
-
- Lead Cost: $150-300
|
|
135
|
-
|
|
136
|
-
**AI-Enhanced Content Marketing** (With MyAIDev Method):
|
|
137
|
-
- Content Output: 8-15 pieces/week
|
|
138
|
-
- Publishing Platforms: 5+
|
|
139
|
-
- SEO Ranking Time: 3-6 months (more volume = faster)
|
|
140
|
-
- Content Team Size: 1-2 people
|
|
141
|
-
- Cost per Piece: $50-200
|
|
142
|
-
- Lead Cost: $30-80
|
|
143
|
-
|
|
144
|
-
**Time to Value**:
|
|
145
|
-
- Traditional: 6-12 months to see significant ROI
|
|
146
|
-
- MyAIDev Method: 2-4 months to see significant ROI
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## The MyAIDev Content Creation Pipeline
|
|
151
|
-
|
|
152
|
-
### Overview
|
|
153
|
-
|
|
154
|
-
The MyAIDev Method provides a **4-phase content creation workflow** that mirrors professional editorial processes while leveraging AI for efficiency:
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
Phase 1: IDEATION & STRATEGY
|
|
158
|
-
├─ Keyword research
|
|
159
|
-
├─ Topic clustering
|
|
160
|
-
├─ Competitive analysis
|
|
161
|
-
├─ Content calendar planning
|
|
162
|
-
└─ SEO opportunity identification
|
|
163
|
-
|
|
164
|
-
Phase 2: CONTENT GENERATION
|
|
165
|
-
├─ AI-assisted writing
|
|
166
|
-
├─ SEO optimization
|
|
167
|
-
├─ Tone & brand alignment
|
|
168
|
-
├─ Factual verification
|
|
169
|
-
└─ Human editing & refinement
|
|
170
|
-
|
|
171
|
-
Phase 3: MULTI-PLATFORM PUBLISHING
|
|
172
|
-
├─ Format adaptation
|
|
173
|
-
├─ Platform-specific optimization
|
|
174
|
-
├─ Automated publishing
|
|
175
|
-
├─ Cross-linking strategy
|
|
176
|
-
└─ Distribution scheduling
|
|
177
|
-
|
|
178
|
-
Phase 4: OPTIMIZATION & ANALYTICS
|
|
179
|
-
├─ Performance monitoring
|
|
180
|
-
├─ SEO ranking tracking
|
|
181
|
-
├─ Content iteration
|
|
182
|
-
├─ A/B testing
|
|
183
|
-
└─ Continuous improvement
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Workflow Architecture
|
|
187
|
-
|
|
188
|
-
```mermaid
|
|
189
|
-
graph TB
|
|
190
|
-
Ideation[Phase 1: Ideation]
|
|
191
|
-
Generation[Phase 2: Generation]
|
|
192
|
-
Publishing[Phase 3: Publishing]
|
|
193
|
-
Optimization[Phase 4: Optimization]
|
|
194
|
-
|
|
195
|
-
Ideation-->|Content Brief|Generation
|
|
196
|
-
Generation-->|Draft Content|HumanReview[Human Review]
|
|
197
|
-
HumanReview-->|Approved|Publishing
|
|
198
|
-
Publishing-->|Multi-Platform|Analytics[Analytics]
|
|
199
|
-
Analytics-->|Insights|Optimization
|
|
200
|
-
Optimization-->|Learnings|Ideation
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Tools in the Pipeline
|
|
204
|
-
|
|
205
|
-
**MyAIDev Method Tools Used**:
|
|
206
|
-
1. **Content Writer Agent** (`/content-writer`) - AI-powered content generation
|
|
207
|
-
2. **Publishing Agents** - Multi-platform distribution
|
|
208
|
-
- WordPress: `/wordpress-publisher`
|
|
209
|
-
- PayloadCMS: `/payloadcms-publisher`
|
|
210
|
-
- Docusaurus: `/docusaurus-publisher`
|
|
211
|
-
- Mintlify: `/mintlify-publisher`
|
|
212
|
-
- Astro: `/astro-publisher`
|
|
213
|
-
3. **Coordination Agent** (`/content-coordinator`) - Workflow orchestration
|
|
214
|
-
|
|
215
|
-
**External Tools Integration**:
|
|
216
|
-
- SEO: Ahrefs, SEMrush, Google Search Console
|
|
217
|
-
- Analytics: Google Analytics 4, Mixpanel
|
|
218
|
-
- Social: Buffer, Hootsuite (for social distribution)
|
|
219
|
-
- Email: Mailchimp, ConvertKit (for newsletters)
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Phase 1: Content Ideation & Strategy
|
|
224
|
-
|
|
225
|
-
### The Ideation Challenge
|
|
226
|
-
|
|
227
|
-
**Traditional Approach**:
|
|
228
|
-
- Brainstorming sessions: 2-4 hours
|
|
229
|
-
- Keyword research: 4-8 hours
|
|
230
|
-
- Competitor analysis: 4-6 hours
|
|
231
|
-
- Topic validation: 2-4 hours
|
|
232
|
-
- Total: **12-22 hours** for content strategy
|
|
233
|
-
|
|
234
|
-
**MyAIDev Method Approach**:
|
|
235
|
-
- AI-assisted ideation: 30 minutes
|
|
236
|
-
- Keyword clustering: 15 minutes
|
|
237
|
-
- Topic validation: 15 minutes
|
|
238
|
-
- Total: **1 hour** for content strategy
|
|
239
|
-
|
|
240
|
-
### Step 1: Keyword Research & Topic Discovery
|
|
241
|
-
|
|
242
|
-
#### Using AI for Keyword Research
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
# Start a conversation with Claude Code for keyword research
|
|
246
|
-
|
|
247
|
-
User: "I'm targeting B2B SaaS companies who need authentication solutions.
|
|
248
|
-
Help me identify high-value content topics based on:
|
|
249
|
-
- Search volume and commercial intent
|
|
250
|
-
- Current market trends
|
|
251
|
-
- Competitor gaps
|
|
252
|
-
- Our product strengths (JWT, OAuth, SSO)"
|
|
253
|
-
|
|
254
|
-
Claude: [Analyzes and provides topic clusters]
|
|
255
|
-
|
|
256
|
-
# Output: Structured topic list with:
|
|
257
|
-
# - Primary keywords
|
|
258
|
-
# - Search volume estimates
|
|
259
|
-
# - Content angles
|
|
260
|
-
# - Funnel stage mapping
|
|
261
|
-
# - Competition assessment
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**AI-Generated Topic Clusters** (Example Output):
|
|
265
|
-
|
|
266
|
-
```markdown
|
|
267
|
-
## Authentication & Security Content Strategy
|
|
268
|
-
|
|
269
|
-
### Cluster 1: JWT Authentication (High Search Volume, High Intent)
|
|
270
|
-
**Primary Keywords**:
|
|
271
|
-
- "jwt authentication tutorial" (2,400/mo, Medium difficulty)
|
|
272
|
-
- "jwt vs session" (1,900/mo, Low difficulty)
|
|
273
|
-
- "jwt refresh tokens" (1,300/mo, Medium difficulty)
|
|
274
|
-
|
|
275
|
-
**Content Ideas**:
|
|
276
|
-
1. "Complete Guide to JWT Authentication in 2025" (Pillar content)
|
|
277
|
-
2. "JWT vs Session Authentication: When to Use Each" (Comparison)
|
|
278
|
-
3. "Implementing JWT Refresh Tokens: Best Practices" (Technical)
|
|
279
|
-
4. "Common JWT Security Vulnerabilities (And How to Fix Them)" (Security)
|
|
280
|
-
|
|
281
|
-
**Funnel Stage**: Top & Middle (Awareness + Consideration)
|
|
282
|
-
**Estimated Traffic Potential**: 15,000+ visits/month
|
|
283
|
-
**Competition**: Medium (achievable with quality content)
|
|
284
|
-
|
|
285
|
-
### Cluster 2: OAuth Implementation (Medium-High Intent)
|
|
286
|
-
**Primary Keywords**:
|
|
287
|
-
- "oauth 2.0 tutorial" (3,200/mo, High difficulty)
|
|
288
|
-
- "oauth vs jwt" (890/mo, Medium difficulty)
|
|
289
|
-
- "oauth best practices" (720/mo, Low difficulty)
|
|
290
|
-
|
|
291
|
-
**Content Ideas**:
|
|
292
|
-
1. "OAuth 2.0 Explained: A Visual Guide for Developers"
|
|
293
|
-
2. "OAuth vs JWT: Understanding the Difference"
|
|
294
|
-
3. "Building Secure OAuth Flows: Developer Checklist"
|
|
295
|
-
|
|
296
|
-
**Funnel Stage**: Middle (Consideration + Education)
|
|
297
|
-
**Estimated Traffic Potential**: 8,000+ visits/month
|
|
298
|
-
|
|
299
|
-
### Cluster 3: SSO Solutions (High Commercial Intent)
|
|
300
|
-
**Primary Keywords**:
|
|
301
|
-
- "sso implementation guide" (1,100/mo, Medium difficulty)
|
|
302
|
-
- "saml vs oauth" (950/mo, Medium difficulty)
|
|
303
|
-
- "enterprise sso" (670/mo, High difficulty)
|
|
304
|
-
|
|
305
|
-
**Content Ideas**:
|
|
306
|
-
1. "Enterprise SSO Implementation: Complete Guide"
|
|
307
|
-
2. "SAML vs OAuth vs OpenID Connect: Which to Choose?"
|
|
308
|
-
3. "Building SSO for Multi-Tenant SaaS Applications"
|
|
309
|
-
|
|
310
|
-
**Funnel Stage**: Bottom (Conversion)
|
|
311
|
-
**Estimated Traffic Potential**: 5,000+ visits/month
|
|
312
|
-
**Competition**: High (requires excellent quality)
|
|
313
|
-
|
|
314
|
-
## Content Calendar Recommendation
|
|
315
|
-
|
|
316
|
-
**Month 1**: Focus on JWT Cluster (Foundation)
|
|
317
|
-
- Week 1: "Complete Guide to JWT Authentication"
|
|
318
|
-
- Week 2: "JWT vs Session Authentication"
|
|
319
|
-
- Week 3: "JWT Security Vulnerabilities"
|
|
320
|
-
- Week 4: "Implementing JWT Refresh Tokens"
|
|
321
|
-
|
|
322
|
-
**Month 2**: OAuth Education
|
|
323
|
-
**Month 3**: SSO for Enterprise
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
### Step 2: Competitive Content Analysis
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
# Analyze competitor content gaps
|
|
330
|
-
|
|
331
|
-
User: "Analyze top 5 ranking articles for 'jwt authentication tutorial'
|
|
332
|
-
and identify content gaps, weaknesses, and opportunities"
|
|
333
|
-
|
|
334
|
-
Claude: [Performs competitive analysis]
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**AI-Generated Competitive Analysis**:
|
|
338
|
-
|
|
339
|
-
```markdown
|
|
340
|
-
## Competitive Analysis: "JWT Authentication Tutorial"
|
|
341
|
-
|
|
342
|
-
### Top 5 Ranking Content (Analysis)
|
|
343
|
-
|
|
344
|
-
**1. Auth0 Blog - "JWT Introduction"**
|
|
345
|
-
- Strengths: Brand authority, technical accuracy, code examples
|
|
346
|
-
- Weaknesses: Too vendor-specific, lacks security best practices
|
|
347
|
-
- Word Count: 1,200 words
|
|
348
|
-
- Last Updated: 2022 (Outdated)
|
|
349
|
-
- **Opportunity**: More comprehensive, framework-agnostic, security-focused
|
|
350
|
-
|
|
351
|
-
**2. DigitalOcean Tutorial**
|
|
352
|
-
- Strengths: Step-by-step, beginner-friendly, multiple frameworks
|
|
353
|
-
- Weaknesses: Shallow security coverage, no advanced topics
|
|
354
|
-
- Word Count: 1,800 words
|
|
355
|
-
- **Opportunity**: Deeper technical depth, advanced patterns
|
|
356
|
-
|
|
357
|
-
**3. JWT.io Documentation**
|
|
358
|
-
- Strengths: Authoritative source, library references
|
|
359
|
-
- Weaknesses: Dry, technical, not tutorial-focused
|
|
360
|
-
- **Opportunity**: Tutorial-style with practical examples
|
|
361
|
-
|
|
362
|
-
**4. Medium Article**
|
|
363
|
-
- Strengths: Easy to read, good visuals
|
|
364
|
-
- Weaknesses: Basic only, no production considerations
|
|
365
|
-
- **Opportunity**: Production-ready implementation guide
|
|
366
|
-
|
|
367
|
-
**5. FreeCodeCamp Tutorial**
|
|
368
|
-
- Strengths: Comprehensive, beginner-friendly
|
|
369
|
-
- Weaknesses: Node.js only, missing other frameworks
|
|
370
|
-
- **Opportunity**: Multi-framework (Next.js, Python, Go, Ruby)
|
|
371
|
-
|
|
372
|
-
## Content Gap Opportunities
|
|
373
|
-
|
|
374
|
-
### Missing Topics (High Value)
|
|
375
|
-
1. ✅ JWT Security: Common vulnerabilities and fixes (CRITICAL GAP)
|
|
376
|
-
2. ✅ Production-ready implementations with error handling
|
|
377
|
-
3. ✅ JWT with multiple frameworks comparison
|
|
378
|
-
4. ✅ Refresh token rotation strategies
|
|
379
|
-
5. ✅ JWT vs Session performance benchmarks (DATA GAP)
|
|
380
|
-
|
|
381
|
-
### Content Differentiation Strategy
|
|
382
|
-
**Our Unique Angle**: "Production-Ready JWT Authentication Guide"
|
|
383
|
-
- Framework-agnostic best practices
|
|
384
|
-
- Security-first approach (OWASP compliance)
|
|
385
|
-
- Performance benchmarks with data
|
|
386
|
-
- Real-world architecture patterns
|
|
387
|
-
- Advanced topics: refresh tokens, blacklisting, key rotation
|
|
388
|
-
|
|
389
|
-
**Target Word Count**: 2,500-3,000 words (more comprehensive than competitors)
|
|
390
|
-
**Target Ranking**: Position 1-3 within 6 months
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
### Step 3: Editorial Calendar Planning
|
|
394
|
-
|
|
395
|
-
```bash
|
|
396
|
-
# Create quarterly content calendar
|
|
397
|
-
|
|
398
|
-
User: "Create a Q1 2025 content calendar focusing on authentication
|
|
399
|
-
and security topics. Include topic, keyword target, funnel stage,
|
|
400
|
-
publish date, and platform distribution strategy."
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
**AI-Generated Editorial Calendar**:
|
|
404
|
-
|
|
405
|
-
```markdown
|
|
406
|
-
## Q1 2025 Content Calendar - Authentication & Security
|
|
407
|
-
|
|
408
|
-
### January 2025
|
|
409
|
-
|
|
410
|
-
**Week 1 (Jan 6)**
|
|
411
|
-
- **Title**: "Complete Guide to JWT Authentication in 2025"
|
|
412
|
-
- **Keyword**: "jwt authentication tutorial" (2,400/mo)
|
|
413
|
-
- **Funnel Stage**: Top of Funnel (Awareness)
|
|
414
|
-
- **Word Count**: 2,800
|
|
415
|
-
- **Platforms**: WordPress (primary), Dev.to, Medium
|
|
416
|
-
- **Goal**: 500+ visits/month by March
|
|
417
|
-
|
|
418
|
-
**Week 2 (Jan 13)**
|
|
419
|
-
- **Title**: "JWT vs Session Authentication: When to Use Each"
|
|
420
|
-
- **Keyword**: "jwt vs session" (1,900/mo)
|
|
421
|
-
- **Funnel Stage**: Middle of Funnel (Consideration)
|
|
422
|
-
- **Word Count**: 1,800
|
|
423
|
-
- **Platforms**: WordPress, LinkedIn Article
|
|
424
|
-
- **Goal**: Internal linking to Week 1 article, 300+ visits/month
|
|
425
|
-
|
|
426
|
-
**Week 3 (Jan 20)**
|
|
427
|
-
- **Title**: "Common JWT Security Vulnerabilities (And How to Fix Them)"
|
|
428
|
-
- **Keyword**: "jwt security" (890/mo)
|
|
429
|
-
- **Funnel Stage**: Middle of Funnel (Education)
|
|
430
|
-
- **Word Count**: 2,200
|
|
431
|
-
- **Platforms**: WordPress, Dev.to, Documentation site
|
|
432
|
-
- **Goal**: Establish security authority, 400+ visits/month
|
|
433
|
-
|
|
434
|
-
**Week 4 (Jan 27)**
|
|
435
|
-
- **Title**: "Implementing JWT Refresh Tokens: Best Practices"
|
|
436
|
-
- **Keyword**: "jwt refresh tokens" (1,300/mo)
|
|
437
|
-
- **Funnel Stage**: Middle to Bottom (Implementation)
|
|
438
|
-
- **Word Count**: 2,000
|
|
439
|
-
- **Platforms**: WordPress, GitHub (as code example)
|
|
440
|
-
- **Goal**: Lead generation (code examples with CTAs)
|
|
441
|
-
|
|
442
|
-
### February 2025
|
|
443
|
-
|
|
444
|
-
**Week 1 (Feb 3)**
|
|
445
|
-
- **Title**: "OAuth 2.0 Explained: A Visual Guide for Developers"
|
|
446
|
-
- **Keyword**: "oauth 2.0 tutorial" (3,200/mo)
|
|
447
|
-
- **Funnel Stage**: Top of Funnel
|
|
448
|
-
- **Word Count**: 3,000
|
|
449
|
-
- **Platforms**: WordPress, Dev.to, LinkedIn
|
|
450
|
-
|
|
451
|
-
**Week 2 (Feb 10)**
|
|
452
|
-
- **Title**: "OAuth vs JWT: Understanding the Difference"
|
|
453
|
-
- **Keyword**: "oauth vs jwt" (890/mo)
|
|
454
|
-
- **Funnel Stage**: Middle of Funnel
|
|
455
|
-
- **Word Count**: 1,600
|
|
456
|
-
- **Platforms**: WordPress, Documentation
|
|
457
|
-
|
|
458
|
-
[... continues for full quarter]
|
|
459
|
-
|
|
460
|
-
## Monthly Themes
|
|
461
|
-
- **January**: JWT Foundations
|
|
462
|
-
- **February**: OAuth Deep-Dive
|
|
463
|
-
- **March**: Enterprise SSO & Advanced Topics
|
|
464
|
-
|
|
465
|
-
## Cross-Linking Strategy
|
|
466
|
-
- Each new article links to 2-3 previous articles (internal SEO)
|
|
467
|
-
- Pillar content updated monthly with links to new supporting articles
|
|
468
|
-
- Topic clusters properly interlinked for SEO authority
|
|
469
|
-
|
|
470
|
-
## Distribution Channels
|
|
471
|
-
- **Primary**: WordPress blog (canonical source)
|
|
472
|
-
- **Secondary**: Dev.to, Medium (syndicated with canonical link)
|
|
473
|
-
- **Documentation**: Docusaurus/Mintlify (technical deep-dives)
|
|
474
|
-
- **Social**: LinkedIn (excerpts), Twitter (key insights)
|
|
475
|
-
- **Email**: Weekly newsletter (roundup of new content)
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
### Where AI Excels in Ideation
|
|
479
|
-
|
|
480
|
-
✅ **Speed**: Generate 50+ topic ideas in 5 minutes
|
|
481
|
-
✅ **Data Analysis**: Process competitor content at scale
|
|
482
|
-
✅ **Pattern Recognition**: Identify content gaps across markets
|
|
483
|
-
✅ **Keyword Clustering**: Organize topics by search intent
|
|
484
|
-
✅ **Trend Identification**: Spot emerging topics before they peak
|
|
485
|
-
✅ **Content Mapping**: Align topics to funnel stages systematically
|
|
486
|
-
|
|
487
|
-
### Where Human Input is Critical
|
|
488
|
-
|
|
489
|
-
🧠 **Brand Alignment**: AI can't know your unique positioning
|
|
490
|
-
🧠 **Audience Insights**: Deep customer understanding comes from experience
|
|
491
|
-
🧠 **Strategic Priorities**: Business goals should drive content strategy
|
|
492
|
-
🧠 **Controversial Topics**: Editorial judgment on sensitive subjects
|
|
493
|
-
🧠 **Creative Angles**: Unique perspectives that differentiate your brand
|
|
494
|
-
🧠 **Quality Assessment**: Final call on topic quality and relevance
|
|
495
|
-
|
|
496
|
-
---
|
|
497
|
-
|
|
498
|
-
## Phase 2: Content Generation
|
|
499
|
-
|
|
500
|
-
### The Content Generation Workflow
|
|
501
|
-
|
|
502
|
-
**Step-by-Step Process**:
|
|
503
|
-
|
|
504
|
-
```
|
|
505
|
-
1. Create Content Brief → 2. AI Generation → 3. Human Editing → 4. Quality Review → 5. Approval
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
### Step 1: Create Content Brief
|
|
509
|
-
|
|
510
|
-
Before generating content, create a detailed brief:
|
|
511
|
-
|
|
512
|
-
```markdown
|
|
513
|
-
# Content Brief Template
|
|
514
|
-
|
|
515
|
-
## Article Details
|
|
516
|
-
- **Title**: "Complete Guide to JWT Authentication in 2025"
|
|
517
|
-
- **Target Keyword**: jwt authentication tutorial
|
|
518
|
-
- **Word Count**: 2,500-3,000
|
|
519
|
-
- **Tone**: Technical but accessible
|
|
520
|
-
- **Audience**: Intermediate developers
|
|
521
|
-
- **Funnel Stage**: Top of Funnel (Awareness + Education)
|
|
522
|
-
|
|
523
|
-
## Objectives
|
|
524
|
-
- Rank #1-3 for "jwt authentication tutorial"
|
|
525
|
-
- Generate 500+ organic visits/month
|
|
526
|
-
- Establish authority on authentication topics
|
|
527
|
-
- Generate 20+ qualified leads/month
|
|
528
|
-
|
|
529
|
-
## Key Topics to Cover
|
|
530
|
-
1. What is JWT (JSON Web Token)?
|
|
531
|
-
2. How JWT authentication works (with diagrams)
|
|
532
|
-
3. JWT structure breakdown (header, payload, signature)
|
|
533
|
-
4. Implementing JWT in Node.js (code example)
|
|
534
|
-
5. Implementing JWT in Python (code example)
|
|
535
|
-
6. JWT security best practices
|
|
536
|
-
7. Common JWT vulnerabilities
|
|
537
|
-
8. JWT vs Session authentication comparison
|
|
538
|
-
9. When to use JWT vs alternatives
|
|
539
|
-
10. Production considerations
|
|
540
|
-
|
|
541
|
-
## Must-Include Elements
|
|
542
|
-
- [ ] Working code examples (at least 2 frameworks)
|
|
543
|
-
- [ ] Security checklist
|
|
544
|
-
- [ ] Visual diagrams (architecture, flow)
|
|
545
|
-
- [ ] Performance benchmarks (if available)
|
|
546
|
-
- [ ] Internal links to related articles
|
|
547
|
-
- [ ] External authoritative sources
|
|
548
|
-
- [ ] Call-to-action (product demo, documentation)
|
|
549
|
-
|
|
550
|
-
## SEO Requirements
|
|
551
|
-
- Primary keyword in H1
|
|
552
|
-
- Primary keyword in first 100 words
|
|
553
|
-
- LSI keywords: oauth, session authentication, token-based auth, bearer token
|
|
554
|
-
- Meta description: 150-160 characters
|
|
555
|
-
- 5-8 internal links
|
|
556
|
-
- 3-5 external authoritative links
|
|
557
|
-
- Alt text for all images
|
|
558
|
-
|
|
559
|
-
## Brand Voice Guidelines
|
|
560
|
-
- Professional but not corporate
|
|
561
|
-
- Educational, not salesy
|
|
562
|
-
- Code examples with clear explanations
|
|
563
|
-
- Acknowledge complexity but make it accessible
|
|
564
|
-
- Build trust through transparency
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
### Step 2: AI-Powered Content Generation
|
|
568
|
-
|
|
569
|
-
```bash
|
|
570
|
-
# Generate content using MyAIDev Method
|
|
571
|
-
|
|
572
|
-
/content-writer "Complete Guide to JWT Authentication in 2025" \
|
|
573
|
-
--word_count 2800 \
|
|
574
|
-
--tone technical \
|
|
575
|
-
--audience "intermediate developers" \
|
|
576
|
-
--seo_keywords "jwt authentication tutorial,json web tokens,jwt security" \
|
|
577
|
-
--include_code_examples true \
|
|
578
|
-
--frameworks "nodejs,python" \
|
|
579
|
-
--depth comprehensive
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
**What the AI Generates** (Example Output):
|
|
583
|
-
|
|
584
|
-
```markdown
|
|
585
|
-
---
|
|
586
|
-
title: "Complete Guide to JWT Authentication in 2025"
|
|
587
|
-
description: "Master JWT authentication with practical examples, security best practices, and production-ready implementations for Node.js and Python applications."
|
|
588
|
-
keywords: "jwt authentication tutorial, json web tokens, jwt security, token-based authentication"
|
|
589
|
-
author: "Your Name"
|
|
590
|
-
date: "2025-01-06"
|
|
591
|
-
tags: ["authentication", "jwt", "security", "nodejs", "python"]
|
|
592
|
-
meta_description: "Learn JWT authentication with step-by-step tutorials, security best practices, and production-ready code examples for modern web applications."
|
|
593
|
-
---
|
|
594
|
-
|
|
595
|
-
# Complete Guide to JWT Authentication in 2025
|
|
596
|
-
|
|
597
|
-
JWT (JSON Web Token) authentication has become the standard for securing modern web applications. In this comprehensive guide, you'll learn everything about JWT authentication—from basic concepts to production-ready implementations with security best practices.
|
|
598
|
-
|
|
599
|
-
## Table of Contents
|
|
600
|
-
|
|
601
|
-
1. [What is JWT Authentication?](#what-is-jwt-authentication)
|
|
602
|
-
2. [How JWT Works: Step-by-Step](#how-jwt-works)
|
|
603
|
-
3. [JWT Structure Explained](#jwt-structure)
|
|
604
|
-
4. [Implementing JWT in Node.js](#nodejs-implementation)
|
|
605
|
-
5. [Implementing JWT in Python](#python-implementation)
|
|
606
|
-
6. [JWT Security Best Practices](#security-best-practices)
|
|
607
|
-
7. [Common Vulnerabilities](#common-vulnerabilities)
|
|
608
|
-
8. [JWT vs Session Authentication](#jwt-vs-session)
|
|
609
|
-
9. [Production Considerations](#production-considerations)
|
|
610
|
-
10. [Conclusion](#conclusion)
|
|
611
|
-
|
|
612
|
-
## What is JWT Authentication?
|
|
613
|
-
|
|
614
|
-
JWT (JSON Web Token) is an open standard (RFC 7519) for securely transmitting information between parties as a JSON object. In authentication, JWTs provide a stateless, scalable way to verify user identity without server-side sessions.
|
|
615
|
-
|
|
616
|
-
**Key Benefits**:
|
|
617
|
-
- **Stateless**: No server-side session storage required
|
|
618
|
-
- **Scalable**: Perfect for microservices and distributed systems
|
|
619
|
-
- **Mobile-Friendly**: Easy to use in mobile applications
|
|
620
|
-
- **Cross-Domain**: Works seamlessly across different domains
|
|
621
|
-
|
|
622
|
-
**When to Use JWT**:
|
|
623
|
-
✅ Microservices architecture
|
|
624
|
-
✅ API authentication
|
|
625
|
-
✅ Mobile applications
|
|
626
|
-
✅ Single Page Applications (SPAs)
|
|
627
|
-
✅ Cross-domain authentication
|
|
628
|
-
|
|
629
|
-
**When NOT to Use JWT**:
|
|
630
|
-
❌ Traditional server-rendered web apps (sessions often better)
|
|
631
|
-
❌ Very sensitive applications requiring instant token revocation
|
|
632
|
-
❌ When server-side state management is preferred
|
|
633
|
-
|
|
634
|
-
## How JWT Works: Step-by-Step
|
|
635
|
-
|
|
636
|
-
Here's the complete JWT authentication flow:
|
|
637
|
-
|
|
638
|
-
```
|
|
639
|
-
1. User Login
|
|
640
|
-
├─ Client sends credentials (email/password)
|
|
641
|
-
└─ Server validates credentials
|
|
642
|
-
|
|
643
|
-
2. Token Generation
|
|
644
|
-
├─ Server creates JWT with user data
|
|
645
|
-
├─ Server signs JWT with secret key
|
|
646
|
-
└─ Server returns JWT to client
|
|
647
|
-
|
|
648
|
-
3. Token Storage
|
|
649
|
-
└─ Client stores JWT (localStorage, httpOnly cookie, memory)
|
|
650
|
-
|
|
651
|
-
4. Authenticated Requests
|
|
652
|
-
├─ Client includes JWT in Authorization header
|
|
653
|
-
├─ Server verifies JWT signature
|
|
654
|
-
├─ Server extracts user data from JWT
|
|
655
|
-
└─ Server processes request
|
|
656
|
-
|
|
657
|
-
5. Token Refresh (Optional)
|
|
658
|
-
├─ Access token expires (15-30 min)
|
|
659
|
-
├─ Client uses refresh token to get new access token
|
|
660
|
-
└─ Cycle continues
|
|
661
|
-
```
|
|
662
|
-
|
|
663
|
-
**Visual Diagram**:
|
|
664
|
-
|
|
665
|
-
```mermaid
|
|
666
|
-
sequenceDiagram
|
|
667
|
-
participant Client
|
|
668
|
-
participant Server
|
|
669
|
-
participant Database
|
|
670
|
-
|
|
671
|
-
Client->>Server: POST /login (credentials)
|
|
672
|
-
Server->>Database: Validate credentials
|
|
673
|
-
Database-->>Server: User valid
|
|
674
|
-
Server->>Server: Generate JWT
|
|
675
|
-
Server-->>Client: Return JWT
|
|
676
|
-
Client->>Client: Store JWT
|
|
677
|
-
Client->>Server: GET /protected (JWT in header)
|
|
678
|
-
Server->>Server: Verify JWT signature
|
|
679
|
-
Server->>Server: Extract user data
|
|
680
|
-
Server-->>Client: Protected resource
|
|
681
|
-
```
|
|
682
|
-
|
|
683
|
-
## JWT Structure Explained
|
|
684
|
-
|
|
685
|
-
A JWT consists of three parts separated by dots (.):
|
|
686
|
-
|
|
687
|
-
```
|
|
688
|
-
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
|
689
|
-
|
|
690
|
-
[Header].[Payload].[Signature]
|
|
691
|
-
```
|
|
692
|
-
|
|
693
|
-
### 1. Header
|
|
694
|
-
```json
|
|
695
|
-
{
|
|
696
|
-
"alg": "HS256",
|
|
697
|
-
"typ": "JWT"
|
|
698
|
-
}
|
|
699
|
-
```
|
|
700
|
-
- **alg**: Signing algorithm (HS256, RS256, etc.)
|
|
701
|
-
- **typ**: Token type (always "JWT")
|
|
702
|
-
|
|
703
|
-
### 2. Payload
|
|
704
|
-
```json
|
|
705
|
-
{
|
|
706
|
-
"sub": "1234567890",
|
|
707
|
-
"name": "John Doe",
|
|
708
|
-
"iat": 1516239022,
|
|
709
|
-
"exp": 1516242622
|
|
710
|
-
}
|
|
711
|
-
```
|
|
712
|
-
- **sub**: Subject (user ID)
|
|
713
|
-
- **iat**: Issued at (timestamp)
|
|
714
|
-
- **exp**: Expiration time
|
|
715
|
-
- Custom claims: Any additional data
|
|
716
|
-
|
|
717
|
-
### 3. Signature
|
|
718
|
-
```
|
|
719
|
-
HMACSHA256(
|
|
720
|
-
base64UrlEncode(header) + "." +
|
|
721
|
-
base64UrlEncode(payload),
|
|
722
|
-
secret
|
|
723
|
-
)
|
|
724
|
-
```
|
|
725
|
-
- Ensures token hasn't been tampered with
|
|
726
|
-
- Verifies token authenticity
|
|
727
|
-
|
|
728
|
-
## Implementing JWT in Node.js
|
|
729
|
-
|
|
730
|
-
### Installation
|
|
731
|
-
|
|
732
|
-
```bash
|
|
733
|
-
npm install jsonwebtoken express bcrypt dotenv
|
|
734
|
-
```
|
|
735
|
-
|
|
736
|
-
### Complete Implementation
|
|
737
|
-
|
|
738
|
-
```javascript
|
|
739
|
-
// server.js
|
|
740
|
-
import express from 'express';
|
|
741
|
-
import jwt from 'jsonwebtoken';
|
|
742
|
-
import bcrypt from 'bcrypt';
|
|
743
|
-
import dotenv from 'dotenv';
|
|
744
|
-
|
|
745
|
-
dotenv.config();
|
|
746
|
-
|
|
747
|
-
const app = express();
|
|
748
|
-
app.use(express.json());
|
|
749
|
-
|
|
750
|
-
const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key-change-this';
|
|
751
|
-
const JWT_EXPIRES_IN = '15m';
|
|
752
|
-
const REFRESH_TOKEN_EXPIRES_IN = '7d';
|
|
753
|
-
|
|
754
|
-
// In-memory user store (use database in production)
|
|
755
|
-
const users = [
|
|
756
|
-
{
|
|
757
|
-
id: 1,
|
|
758
|
-
email: 'user@example.com',
|
|
759
|
-
passwordHash: '$2b$10$...' // bcrypt hash
|
|
760
|
-
}
|
|
761
|
-
];
|
|
762
|
-
|
|
763
|
-
// --- Helper Functions ---
|
|
764
|
-
|
|
765
|
-
function generateAccessToken(userId) {
|
|
766
|
-
return jwt.sign(
|
|
767
|
-
{ userId, type: 'access' },
|
|
768
|
-
JWT_SECRET,
|
|
769
|
-
{ expiresIn: JWT_EXPIRES_IN }
|
|
770
|
-
);
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
function generateRefreshToken(userId) {
|
|
774
|
-
return jwt.sign(
|
|
775
|
-
{ userId, type: 'refresh' },
|
|
776
|
-
JWT_SECRET,
|
|
777
|
-
{ expiresIn: REFRESH_TOKEN_EXPIRES_IN }
|
|
778
|
-
);
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
// --- Middleware ---
|
|
782
|
-
|
|
783
|
-
function authenticateToken(req, res, next) {
|
|
784
|
-
const authHeader = req.headers['authorization'];
|
|
785
|
-
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
|
|
786
|
-
|
|
787
|
-
if (!token) {
|
|
788
|
-
return res.status(401).json({ error: 'Access token required' });
|
|
789
|
-
}
|
|
790
|
-
|
|
791
|
-
jwt.verify(token, JWT_SECRET, (err, decoded) => {
|
|
792
|
-
if (err) {
|
|
793
|
-
return res.status(403).json({ error: 'Invalid or expired token' });
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
if (decoded.type !== 'access') {
|
|
797
|
-
return res.status(403).json({ error: 'Invalid token type' });
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
req.userId = decoded.userId;
|
|
801
|
-
next();
|
|
802
|
-
});
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
// --- Routes ---
|
|
806
|
-
|
|
807
|
-
// Register
|
|
808
|
-
app.post('/api/auth/register', async (req, res) => {
|
|
809
|
-
try {
|
|
810
|
-
const { email, password } = req.body;
|
|
811
|
-
|
|
812
|
-
// Validate input
|
|
813
|
-
if (!email || !password) {
|
|
814
|
-
return res.status(400).json({ error: 'Email and password required' });
|
|
815
|
-
}
|
|
816
|
-
|
|
817
|
-
// Check if user exists
|
|
818
|
-
const existingUser = users.find(u => u.email === email);
|
|
819
|
-
if (existingUser) {
|
|
820
|
-
return res.status(409).json({ error: 'User already exists' });
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
// Hash password
|
|
824
|
-
const passwordHash = await bcrypt.hash(password, 10);
|
|
825
|
-
|
|
826
|
-
// Create user
|
|
827
|
-
const newUser = {
|
|
828
|
-
id: users.length + 1,
|
|
829
|
-
email,
|
|
830
|
-
passwordHash
|
|
831
|
-
};
|
|
832
|
-
users.push(newUser);
|
|
833
|
-
|
|
834
|
-
// Generate tokens
|
|
835
|
-
const accessToken = generateAccessToken(newUser.id);
|
|
836
|
-
const refreshToken = generateRefreshToken(newUser.id);
|
|
837
|
-
|
|
838
|
-
res.status(201).json({
|
|
839
|
-
user: { id: newUser.id, email: newUser.email },
|
|
840
|
-
accessToken,
|
|
841
|
-
refreshToken
|
|
842
|
-
});
|
|
843
|
-
} catch (error) {
|
|
844
|
-
console.error('Registration error:', error);
|
|
845
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
846
|
-
}
|
|
847
|
-
});
|
|
848
|
-
|
|
849
|
-
// Login
|
|
850
|
-
app.post('/api/auth/login', async (req, res) => {
|
|
851
|
-
try {
|
|
852
|
-
const { email, password } = req.body;
|
|
853
|
-
|
|
854
|
-
// Find user
|
|
855
|
-
const user = users.find(u => u.email === email);
|
|
856
|
-
if (!user) {
|
|
857
|
-
return res.status(401).json({ error: 'Invalid credentials' });
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
// Verify password
|
|
861
|
-
const validPassword = await bcrypt.compare(password, user.passwordHash);
|
|
862
|
-
if (!validPassword) {
|
|
863
|
-
return res.status(401).json({ error: 'Invalid credentials' });
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
// Generate tokens
|
|
867
|
-
const accessToken = generateAccessToken(user.id);
|
|
868
|
-
const refreshToken = generateRefreshToken(user.id);
|
|
869
|
-
|
|
870
|
-
res.json({
|
|
871
|
-
user: { id: user.id, email: user.email },
|
|
872
|
-
accessToken,
|
|
873
|
-
refreshToken
|
|
874
|
-
});
|
|
875
|
-
} catch (error) {
|
|
876
|
-
console.error('Login error:', error);
|
|
877
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
878
|
-
}
|
|
879
|
-
});
|
|
880
|
-
|
|
881
|
-
// Refresh Token
|
|
882
|
-
app.post('/api/auth/refresh', (req, res) => {
|
|
883
|
-
const { refreshToken } = req.body;
|
|
884
|
-
|
|
885
|
-
if (!refreshToken) {
|
|
886
|
-
return res.status(401).json({ error: 'Refresh token required' });
|
|
887
|
-
}
|
|
888
|
-
|
|
889
|
-
jwt.verify(refreshToken, JWT_SECRET, (err, decoded) => {
|
|
890
|
-
if (err) {
|
|
891
|
-
return res.status(403).json({ error: 'Invalid refresh token' });
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
if (decoded.type !== 'refresh') {
|
|
895
|
-
return res.status(403).json({ error: 'Invalid token type' });
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
// Generate new access token
|
|
899
|
-
const accessToken = generateAccessToken(decoded.userId);
|
|
900
|
-
|
|
901
|
-
res.json({ accessToken });
|
|
902
|
-
});
|
|
903
|
-
});
|
|
904
|
-
|
|
905
|
-
// Protected Route Example
|
|
906
|
-
app.get('/api/protected', authenticateToken, (req, res) => {
|
|
907
|
-
const user = users.find(u => u.id === req.userId);
|
|
908
|
-
|
|
909
|
-
res.json({
|
|
910
|
-
message: 'This is a protected resource',
|
|
911
|
-
user: { id: user.id, email: user.email }
|
|
912
|
-
});
|
|
913
|
-
});
|
|
914
|
-
|
|
915
|
-
// Start server
|
|
916
|
-
const PORT = process.env.PORT || 3000;
|
|
917
|
-
app.listen(PORT, () => {
|
|
918
|
-
console.log(`Server running on port ${PORT}`);
|
|
919
|
-
});
|
|
920
|
-
```
|
|
921
|
-
|
|
922
|
-
### Testing the Implementation
|
|
923
|
-
|
|
924
|
-
```bash
|
|
925
|
-
# Register user
|
|
926
|
-
curl -X POST http://localhost:3000/api/auth/register \
|
|
927
|
-
-H "Content-Type: application/json" \
|
|
928
|
-
-d '{"email":"user@example.com","password":"securepassword"}'
|
|
929
|
-
|
|
930
|
-
# Response:
|
|
931
|
-
# {
|
|
932
|
-
# "user": {"id": 1, "email": "user@example.com"},
|
|
933
|
-
# "accessToken": "eyJhbGc...",
|
|
934
|
-
# "refreshToken": "eyJhbGc..."
|
|
935
|
-
# }
|
|
936
|
-
|
|
937
|
-
# Access protected resource
|
|
938
|
-
curl http://localhost:3000/api/protected \
|
|
939
|
-
-H "Authorization: Bearer eyJhbGc..."
|
|
940
|
-
|
|
941
|
-
# Response:
|
|
942
|
-
# {
|
|
943
|
-
# "message": "This is a protected resource",
|
|
944
|
-
# "user": {"id": 1, "email": "user@example.com"}
|
|
945
|
-
# }
|
|
946
|
-
|
|
947
|
-
# Refresh access token
|
|
948
|
-
curl -X POST http://localhost:3000/api/auth/refresh \
|
|
949
|
-
-H "Content-Type: application/json" \
|
|
950
|
-
-d '{"refreshToken":"eyJhbGc..."}'
|
|
951
|
-
```
|
|
952
|
-
|
|
953
|
-
## Implementing JWT in Python
|
|
954
|
-
|
|
955
|
-
[... Python implementation would follow similar structure ...]
|
|
956
|
-
|
|
957
|
-
## JWT Security Best Practices
|
|
958
|
-
|
|
959
|
-
### 1. Use Strong Secrets
|
|
960
|
-
|
|
961
|
-
```javascript
|
|
962
|
-
// ❌ WRONG
|
|
963
|
-
const JWT_SECRET = 'secret';
|
|
964
|
-
|
|
965
|
-
// ✅ RIGHT
|
|
966
|
-
const JWT_SECRET = process.env.JWT_SECRET; // From environment
|
|
967
|
-
// Generate: openssl rand -base64 32
|
|
968
|
-
```
|
|
969
|
-
|
|
970
|
-
### 2. Short Expiration Times
|
|
971
|
-
|
|
972
|
-
```javascript
|
|
973
|
-
// ✅ Recommended
|
|
974
|
-
const ACCESS_TOKEN_EXPIRY = '15m'; // 15 minutes
|
|
975
|
-
const REFRESH_TOKEN_EXPIRY = '7d'; // 7 days
|
|
976
|
-
```
|
|
977
|
-
|
|
978
|
-
### 3. Use HTTPS Only
|
|
979
|
-
|
|
980
|
-
```javascript
|
|
981
|
-
// ✅ Production configuration
|
|
982
|
-
app.use((req, res, next) => {
|
|
983
|
-
if (process.env.NODE_ENV === 'production' && !req.secure) {
|
|
984
|
-
return res.redirect('https://' + req.headers.host + req.url);
|
|
985
|
-
}
|
|
986
|
-
next();
|
|
987
|
-
});
|
|
988
|
-
```
|
|
989
|
-
|
|
990
|
-
### 4. HttpOnly Cookies (Alternative to localStorage)
|
|
991
|
-
|
|
992
|
-
```javascript
|
|
993
|
-
// ✅ More secure than localStorage
|
|
994
|
-
res.cookie('accessToken', token, {
|
|
995
|
-
httpOnly: true,
|
|
996
|
-
secure: true, // HTTPS only
|
|
997
|
-
sameSite: 'strict',
|
|
998
|
-
maxAge: 15 * 60 * 1000 // 15 minutes
|
|
999
|
-
});
|
|
1000
|
-
```
|
|
1001
|
-
|
|
1002
|
-
### 5. Implement Token Rotation
|
|
1003
|
-
|
|
1004
|
-
```javascript
|
|
1005
|
-
// Refresh token rotation
|
|
1006
|
-
app.post('/api/auth/refresh', async (req, res) => {
|
|
1007
|
-
const { refreshToken } = req.body;
|
|
1008
|
-
|
|
1009
|
-
// Verify old refresh token
|
|
1010
|
-
const decoded = jwt.verify(refreshToken, JWT_SECRET);
|
|
1011
|
-
|
|
1012
|
-
// Generate NEW access AND refresh tokens
|
|
1013
|
-
const newAccessToken = generateAccessToken(decoded.userId);
|
|
1014
|
-
const newRefreshToken = generateRefreshToken(decoded.userId);
|
|
1015
|
-
|
|
1016
|
-
// Invalidate old refresh token
|
|
1017
|
-
await blacklistToken(refreshToken);
|
|
1018
|
-
|
|
1019
|
-
res.json({
|
|
1020
|
-
accessToken: newAccessToken,
|
|
1021
|
-
refreshToken: newRefreshToken
|
|
1022
|
-
});
|
|
1023
|
-
});
|
|
1024
|
-
```
|
|
1025
|
-
|
|
1026
|
-
### Security Checklist
|
|
1027
|
-
|
|
1028
|
-
- [ ] Use strong, random secrets (32+ characters)
|
|
1029
|
-
- [ ] Short access token expiration (15-30 min)
|
|
1030
|
-
- [ ] Implement refresh token rotation
|
|
1031
|
-
- [ ] Use HTTPS in production
|
|
1032
|
-
- [ ] Store tokens securely (httpOnly cookies preferred)
|
|
1033
|
-
- [ ] Validate token on every request
|
|
1034
|
-
- [ ] Implement token blacklisting for logout
|
|
1035
|
-
- [ ] Rate limit authentication endpoints
|
|
1036
|
-
- [ ] Log authentication events
|
|
1037
|
-
- [ ] Use RS256 for public/private key scenarios
|
|
1038
|
-
|
|
1039
|
-
[... Article continues with remaining sections: Common Vulnerabilities, JWT vs Session, Production Considerations, Conclusion ...]
|
|
1040
|
-
|
|
1041
|
-
## Conclusion
|
|
1042
|
-
|
|
1043
|
-
JWT authentication provides a scalable, stateless solution for modern web applications. By following the security best practices outlined in this guide and implementing proper token management, you can build secure, production-ready authentication systems.
|
|
1044
|
-
|
|
1045
|
-
**Key Takeaways**:
|
|
1046
|
-
- JWT is ideal for stateless, distributed systems
|
|
1047
|
-
- Always use short expiration times (15-30 min for access tokens)
|
|
1048
|
-
- Implement refresh token rotation for security
|
|
1049
|
-
- Never store sensitive data in JWT payload
|
|
1050
|
-
- Use HTTPS and httpOnly cookies in production
|
|
1051
|
-
|
|
1052
|
-
**Next Steps**:
|
|
1053
|
-
- Implement JWT in your application using the code examples
|
|
1054
|
-
- Review the [security checklist](#security-checklist) before production
|
|
1055
|
-
- Learn about [OAuth 2.0 vs JWT](link-to-internal-article)
|
|
1056
|
-
- Explore our [authentication API documentation](link-to-docs)
|
|
1057
|
-
|
|
1058
|
-
---
|
|
1059
|
-
|
|
1060
|
-
**Need help implementing JWT authentication?** [Try our authentication service free](CTA-link) or [read our documentation](docs-link).
|
|
1061
|
-
```
|
|
1062
|
-
|
|
1063
|
-
### Step 3: Human Editing & Refinement
|
|
1064
|
-
|
|
1065
|
-
**What Humans Should Focus On**:
|
|
1066
|
-
|
|
1067
|
-
1. **Factual Accuracy**
|
|
1068
|
-
- Verify all technical claims
|
|
1069
|
-
- Test code examples
|
|
1070
|
-
- Check for outdated information
|
|
1071
|
-
- Validate statistics and data
|
|
1072
|
-
|
|
1073
|
-
2. **Brand Voice Alignment**
|
|
1074
|
-
- Adjust tone to match your brand
|
|
1075
|
-
- Add personal anecdotes if appropriate
|
|
1076
|
-
- Ensure terminology consistency
|
|
1077
|
-
- Remove generic AI phrases
|
|
1078
|
-
|
|
1079
|
-
3. **Unique Value Addition**
|
|
1080
|
-
- Add proprietary insights
|
|
1081
|
-
- Include real customer examples
|
|
1082
|
-
- Share lessons learned
|
|
1083
|
-
- Provide unique perspectives
|
|
1084
|
-
|
|
1085
|
-
4. **SEO Optimization**
|
|
1086
|
-
- Verify keyword placement
|
|
1087
|
-
- Optimize headings
|
|
1088
|
-
- Add internal links
|
|
1089
|
-
- Create compelling meta description
|
|
1090
|
-
|
|
1091
|
-
5. **Visual Enhancement**
|
|
1092
|
-
- Add screenshots if needed
|
|
1093
|
-
- Create custom diagrams
|
|
1094
|
-
- Optimize images for SEO
|
|
1095
|
-
- Add code syntax highlighting
|
|
1096
|
-
|
|
1097
|
-
**Editing Checklist**:
|
|
1098
|
-
|
|
1099
|
-
```markdown
|
|
1100
|
-
## Pre-Publish Quality Check
|
|
1101
|
-
|
|
1102
|
-
### Content Quality
|
|
1103
|
-
- [ ] All code examples tested and working
|
|
1104
|
-
- [ ] No factual errors or outdated information
|
|
1105
|
-
- [ ] Unique insights added (not just AI-generated)
|
|
1106
|
-
- [ ] Brand voice consistent throughout
|
|
1107
|
-
- [ ] No generic/obvious AI writing patterns
|
|
1108
|
-
|
|
1109
|
-
### SEO Optimization
|
|
1110
|
-
- [ ] Primary keyword in H1, first 100 words, URL
|
|
1111
|
-
- [ ] LSI keywords naturally included
|
|
1112
|
-
- [ ] 5-8 internal links to relevant content
|
|
1113
|
-
- [ ] 3-5 external authoritative links
|
|
1114
|
-
- [ ] Meta description 150-160 characters
|
|
1115
|
-
- [ ] Alt text for all images
|
|
1116
|
-
|
|
1117
|
-
### Technical Elements
|
|
1118
|
-
- [ ] Code examples syntax highlighted
|
|
1119
|
-
- [ ] All links working (no 404s)
|
|
1120
|
-
- [ ] Images optimized (<200KB each)
|
|
1121
|
-
- [ ] Mobile-responsive formatting
|
|
1122
|
-
- [ ] Table of contents with anchor links
|
|
1123
|
-
|
|
1124
|
-
### Engagement Elements
|
|
1125
|
-
- [ ] Compelling introduction (hook)
|
|
1126
|
-
- [ ] Clear value proposition in first paragraph
|
|
1127
|
-
- [ ] Scannable with headings and bullet points
|
|
1128
|
-
- [ ] Actionable takeaways
|
|
1129
|
-
- [ ] Clear call-to-action
|
|
1130
|
-
|
|
1131
|
-
### Legal & Compliance
|
|
1132
|
-
- [ ] No plagiarized content
|
|
1133
|
-
- [ ] Proper attribution for external sources
|
|
1134
|
-
- [ ] Copyright-free or licensed images
|
|
1135
|
-
- [ ] Compliant with brand guidelines
|
|
1136
|
-
```
|
|
1137
|
-
|
|
1138
|
-
### Where AI Excels in Content Generation
|
|
1139
|
-
|
|
1140
|
-
✅ **First Draft Speed**: Generate 2,500 words in 2-3 minutes
|
|
1141
|
-
✅ **Structure**: Logical flow and organization
|
|
1142
|
-
✅ **SEO Foundation**: Keyword integration, heading hierarchy
|
|
1143
|
-
✅ **Code Examples**: Functional code snippets
|
|
1144
|
-
✅ **Comprehensive Coverage**: Thorough topic exploration
|
|
1145
|
-
✅ **Consistent Tone**: Maintain style throughout long content
|
|
1146
|
-
✅ **Grammar & Clarity**: Proper language mechanics
|
|
1147
|
-
|
|
1148
|
-
### Where Human Input is Critical
|
|
1149
|
-
|
|
1150
|
-
🧠 **Factual Verification**: AI can generate plausible but wrong information
|
|
1151
|
-
🧠 **Unique Insights**: Real experience and proprietary knowledge
|
|
1152
|
-
🧠 **Brand Voice**: Subtle nuances that define your brand
|
|
1153
|
-
🧠 **Controversial Topics**: Editorial judgment and risk assessment
|
|
1154
|
-
🧠 **Quality Assessment**: Final judgment on publish-worthiness
|
|
1155
|
-
🧠 **Visual Storytelling**: Creating impactful diagrams and visuals
|
|
1156
|
-
🧠 **Audience Empathy**: Understanding what resonates with YOUR audience
|
|
1157
|
-
|
|
1158
|
-
---
|
|
1159
|
-
|
|
1160
|
-
## Phase 3: Multi-Platform Publishing
|
|
1161
|
-
|
|
1162
|
-
### The Publishing Challenge
|
|
1163
|
-
|
|
1164
|
-
**Traditional Approach**:
|
|
1165
|
-
- Manual copy-paste to each platform: 30-45 min per platform
|
|
1166
|
-
- Reformat content for platform requirements: 15-30 min
|
|
1167
|
-
- Add platform-specific metadata: 10-15 min
|
|
1168
|
-
- Total: **55-90 minutes per platform × 5 platforms = 5-8 hours**
|
|
1169
|
-
|
|
1170
|
-
**MyAIDev Method**:
|
|
1171
|
-
- Automated multi-platform publishing: 15 minutes total
|
|
1172
|
-
- Consistent formatting across platforms
|
|
1173
|
-
- SEO-optimized for each platform
|
|
1174
|
-
- Cross-linking strategy automated
|
|
1175
|
-
|
|
1176
|
-
### Step 1: Primary Platform Publishing (WordPress/PayloadCMS)
|
|
1177
|
-
|
|
1178
|
-
```bash
|
|
1179
|
-
# Publish to WordPress (primary blog)
|
|
1180
|
-
/wordpress-publisher "complete-guide-jwt-authentication.md" \
|
|
1181
|
-
--status published \
|
|
1182
|
-
--category "Tutorials" \
|
|
1183
|
-
--tags "authentication,jwt,security,nodejs,python"
|
|
1184
|
-
|
|
1185
|
-
# What happens automatically:
|
|
1186
|
-
# ✅ Converts markdown to Gutenberg blocks
|
|
1187
|
-
# ✅ Uploads code examples with syntax highlighting
|
|
1188
|
-
# ✅ Sets SEO metadata (Yoast/RankMath)
|
|
1189
|
-
# ✅ Adds canonical URL
|
|
1190
|
-
# ✅ Publishes immediately
|
|
1191
|
-
# ✅ Returns published URL
|
|
1192
|
-
```
|
|
1193
|
-
|
|
1194
|
-
**WordPress Output**:
|
|
1195
|
-
```
|
|
1196
|
-
✓ Published successfully!
|
|
1197
|
-
URL: https://yourblog.com/complete-guide-jwt-authentication
|
|
1198
|
-
Post ID: 1234
|
|
1199
|
-
SEO Score: 92/100 (Yoast)
|
|
1200
|
-
Estimated reading time: 12 minutes
|
|
1201
|
-
```
|
|
1202
|
-
|
|
1203
|
-
### Step 2: Syndication to Developer Platforms
|
|
1204
|
-
|
|
1205
|
-
```bash
|
|
1206
|
-
# Syndicate to Dev.to
|
|
1207
|
-
# (Manual currently - copy markdown, adjust frontmatter)
|
|
1208
|
-
|
|
1209
|
-
# Dev.to frontmatter format:
|
|
1210
|
-
---
|
|
1211
|
-
title: "Complete Guide to JWT Authentication in 2025"
|
|
1212
|
-
published: true
|
|
1213
|
-
description: "Master JWT authentication with practical examples"
|
|
1214
|
-
tags: authentication, jwt, security, nodejs
|
|
1215
|
-
canonical_url: https://yourblog.com/complete-guide-jwt-authentication
|
|
1216
|
-
cover_image: https://yourblog.com/images/jwt-guide-cover.jpg
|
|
1217
|
-
---
|
|
1218
|
-
|
|
1219
|
-
# Then paste content body...
|
|
1220
|
-
```
|
|
1221
|
-
|
|
1222
|
-
**Alternative - Custom Automation**:
|
|
1223
|
-
```bash
|
|
1224
|
-
# Create custom publishing script for Dev.to
|
|
1225
|
-
# Using Dev.to API: https://developers.forem.com/api
|
|
1226
|
-
|
|
1227
|
-
curl -X POST https://dev.to/api/articles \
|
|
1228
|
-
-H "Content-Type: application/json" \
|
|
1229
|
-
-H "api-key: YOUR_DEV_TO_API_KEY" \
|
|
1230
|
-
-d '{
|
|
1231
|
-
"article": {
|
|
1232
|
-
"title": "Complete Guide to JWT Authentication in 2025",
|
|
1233
|
-
"published": true,
|
|
1234
|
-
"body_markdown": "... markdown content ...",
|
|
1235
|
-
"tags": ["authentication", "jwt", "security", "nodejs"],
|
|
1236
|
-
"canonical_url": "https://yourblog.com/complete-guide-jwt-authentication"
|
|
1237
|
-
}
|
|
1238
|
-
}'
|
|
1239
|
-
```
|
|
1240
|
-
|
|
1241
|
-
### Step 3: Documentation Site Publishing
|
|
1242
|
-
|
|
1243
|
-
```bash
|
|
1244
|
-
# Publish technical deep-dive to Docusaurus
|
|
1245
|
-
/docusaurus-publisher "jwt-authentication-reference.md" \
|
|
1246
|
-
--type docs \
|
|
1247
|
-
--sidebar-position 3
|
|
1248
|
-
|
|
1249
|
-
# Publish to Mintlify (API documentation style)
|
|
1250
|
-
/mintlify-publisher "jwt-api-reference.md" \
|
|
1251
|
-
--nav-section "Authentication"
|
|
1252
|
-
```
|
|
1253
|
-
|
|
1254
|
-
### Step 4: Social Media Distribution
|
|
1255
|
-
|
|
1256
|
-
**LinkedIn Article** (Manual - Higher Engagement):
|
|
1257
|
-
```
|
|
1258
|
-
1. Create LinkedIn article version (1,200-1,500 words)
|
|
1259
|
-
2. Extract key insights for main feed post
|
|
1260
|
-
3. Schedule distribution across week
|
|
1261
|
-
|
|
1262
|
-
LinkedIn Post Template:
|
|
1263
|
-
"🔐 Complete Guide to JWT Authentication (2025)
|
|
1264
|
-
|
|
1265
|
-
After implementing JWT auth for 100+ production apps, here are the 5 critical security practices most developers miss:
|
|
1266
|
-
|
|
1267
|
-
1. [Key insight from article]
|
|
1268
|
-
2. [Key insight from article]
|
|
1269
|
-
3. [Key insight from article]
|
|
1270
|
-
4. [Key insight from article]
|
|
1271
|
-
5. [Key insight from article]
|
|
1272
|
-
|
|
1273
|
-
Full guide (with code examples): [link to canonical article]
|
|
1274
|
-
|
|
1275
|
-
#Authentication #WebDevelopment #Security #JWT"
|
|
1276
|
-
```
|
|
1277
|
-
|
|
1278
|
-
**Twitter Thread** (Automated via Buffer/Hootsuite):
|
|
1279
|
-
```
|
|
1280
|
-
🧵 Thread on JWT Authentication (10 tweets)
|
|
1281
|
-
|
|
1282
|
-
Tweet 1: Hook + value proposition
|
|
1283
|
-
Tweet 2-9: Key insights
|
|
1284
|
-
Tweet 10: CTA with link
|
|
1285
|
-
```
|
|
1286
|
-
|
|
1287
|
-
### Step 5: Email Newsletter
|
|
1288
|
-
|
|
1289
|
-
```bash
|
|
1290
|
-
# Extract newsletter version
|
|
1291
|
-
# Use AI to create 500-word summary
|
|
1292
|
-
|
|
1293
|
-
User: "Convert the JWT authentication article into a 500-word
|
|
1294
|
-
newsletter email with 3 key takeaways and a CTA to read the full article"
|
|
1295
|
-
```
|
|
1296
|
-
|
|
1297
|
-
**AI-Generated Newsletter**:
|
|
1298
|
-
```markdown
|
|
1299
|
-
Subject: JWT Authentication Explained (The Right Way)
|
|
1300
|
-
|
|
1301
|
-
Hey [First Name],
|
|
1302
|
-
|
|
1303
|
-
Most developers implement JWT authentication wrong.
|
|
1304
|
-
|
|
1305
|
-
The result? Security vulnerabilities that put user data at risk.
|
|
1306
|
-
|
|
1307
|
-
I just published a comprehensive guide on JWT authentication that covers everything from basic concepts to production-ready implementations.
|
|
1308
|
-
|
|
1309
|
-
Here are the 3 most critical takeaways:
|
|
1310
|
-
|
|
1311
|
-
**1. Short Expiration Times Are Non-Negotiable**
|
|
1312
|
-
Access tokens should expire in 15-30 minutes, not hours or days. I've seen production apps with 7-day access tokens—that's a massive security risk.
|
|
1313
|
-
|
|
1314
|
-
Use refresh token rotation to maintain user sessions without compromising security.
|
|
1315
|
-
|
|
1316
|
-
**2. Never Store Sensitive Data in JWT Payload**
|
|
1317
|
-
JWTs are encoded, NOT encrypted. Anyone can decode and read the payload. Store only non-sensitive identifiers (user ID, roles) and fetch sensitive data server-side.
|
|
1318
|
-
|
|
1319
|
-
**3. HttpOnly Cookies > localStorage**
|
|
1320
|
-
Storing JWTs in localStorage makes them vulnerable to XSS attacks. Use httpOnly cookies with secure and sameSite flags in production.
|
|
1321
|
-
|
|
1322
|
-
**Full Guide Includes**:
|
|
1323
|
-
✅ Working code examples (Node.js & Python)
|
|
1324
|
-
✅ Complete security checklist
|
|
1325
|
-
✅ Production deployment guide
|
|
1326
|
-
✅ Common vulnerability fixes
|
|
1327
|
-
|
|
1328
|
-
[Read the full guide →](link)
|
|
1329
|
-
|
|
1330
|
-
P.S. Having authentication issues? Reply to this email—I read every response and often help debug specific problems.
|
|
1331
|
-
|
|
1332
|
-
Best,
|
|
1333
|
-
[Your Name]
|
|
1334
|
-
```
|
|
1335
|
-
|
|
1336
|
-
### Multi-Platform Publishing Matrix
|
|
1337
|
-
|
|
1338
|
-
| Platform | Format | Timing | Purpose | Effort |
|
|
1339
|
-
|----------|--------|--------|---------|--------|
|
|
1340
|
-
| **WordPress Blog** | Full article | Day 1 | Canonical source, SEO | 2 min (automated) |
|
|
1341
|
-
| **Dev.to** | Full article | Day 1 | Developer audience, syndication | 5 min (manual) |
|
|
1342
|
-
| **Medium** | Full article | Day 2 | Broader audience, syndication | 5 min (manual) |
|
|
1343
|
-
| **Docusaurus** | Technical deep-dive | Day 1 | Documentation, internal | 2 min (automated) |
|
|
1344
|
-
| **LinkedIn Article** | Condensed (1,500w) | Day 3 | Professional network | 10 min |
|
|
1345
|
-
| **LinkedIn Post** | Key insights | Day 3 | Engagement, clicks | 5 min |
|
|
1346
|
-
| **Twitter Thread** | 10-tweet summary | Day 4 | Viral potential | 10 min |
|
|
1347
|
-
| **Email Newsletter** | 500-word summary | Week 1 | Subscribers, loyalty | 5 min |
|
|
1348
|
-
| **YouTube Script** | Video version | Week 2 | Video audience | 20 min |
|
|
1349
|
-
|
|
1350
|
-
**Total Publishing Time**: 64 minutes (vs 5-8 hours traditional)
|
|
1351
|
-
|
|
1352
|
-
### Where AI Excels in Publishing
|
|
1353
|
-
|
|
1354
|
-
✅ **Format Conversion**: Markdown → Gutenberg blocks, HTML, MDX
|
|
1355
|
-
✅ **Metadata Generation**: SEO titles, descriptions, tags
|
|
1356
|
-
✅ **Platform Optimization**: Adjust content for each platform's requirements
|
|
1357
|
-
✅ **Automated Upload**: Direct API integration for supported platforms
|
|
1358
|
-
✅ **Cross-Linking**: Internal link strategy across platforms
|
|
1359
|
-
✅ **Consistency**: Ensure canonical URLs and attribution
|
|
1360
|
-
|
|
1361
|
-
### Where Human Input is Critical
|
|
1362
|
-
|
|
1363
|
-
🧠 **Platform Selection**: Choose the right platforms for your audience
|
|
1364
|
-
🧠 **Timing Strategy**: When to publish to each platform for maximum reach
|
|
1365
|
-
🧠 **Engagement**: Respond to comments and engage with audience
|
|
1366
|
-
🧠 **A/B Testing**: Experiment with headlines and CTAs
|
|
1367
|
-
🧠 **Community Management**: Build relationships on each platform
|
|
1368
|
-
|
|
1369
|
-
---
|
|
1370
|
-
|
|
1371
|
-
## Phase 4: Content Optimization & Analytics
|
|
1372
|
-
|
|
1373
|
-
### Measuring Content Performance
|
|
1374
|
-
|
|
1375
|
-
**Key Metrics to Track**:
|
|
1376
|
-
|
|
1377
|
-
1. **SEO Metrics**
|
|
1378
|
-
- Organic traffic (Google Analytics)
|
|
1379
|
-
- Keyword rankings (Ahrefs, SEMrush)
|
|
1380
|
-
- Backlinks acquired
|
|
1381
|
-
- Domain authority impact
|
|
1382
|
-
- Click-through rate (Search Console)
|
|
1383
|
-
|
|
1384
|
-
2. **Engagement Metrics**
|
|
1385
|
-
- Time on page
|
|
1386
|
-
- Bounce rate
|
|
1387
|
-
- Scroll depth
|
|
1388
|
-
- Social shares
|
|
1389
|
-
- Comments and discussions
|
|
1390
|
-
|
|
1391
|
-
3. **Conversion Metrics**
|
|
1392
|
-
- Lead captures (email signups)
|
|
1393
|
-
- Demo requests
|
|
1394
|
-
- Free trial signups
|
|
1395
|
-
- Content-attributed revenue
|
|
1396
|
-
- Customer acquisition cost (CAC)
|
|
1397
|
-
|
|
1398
|
-
4. **Content Quality Metrics**
|
|
1399
|
-
- Readability score
|
|
1400
|
-
- SEO score (Yoast, RankMath)
|
|
1401
|
-
- Content comprehensiveness
|
|
1402
|
-
- Freshness (last updated)
|
|
1403
|
-
|
|
1404
|
-
### Content Optimization Workflow
|
|
1405
|
-
|
|
1406
|
-
```bash
|
|
1407
|
-
# After 30 days, analyze performance
|
|
1408
|
-
|
|
1409
|
-
User: "Analyze the performance of our JWT authentication article.
|
|
1410
|
-
Identify optimization opportunities based on:
|
|
1411
|
-
- Search Console data (CTR, average position)
|
|
1412
|
-
- Google Analytics (traffic, engagement)
|
|
1413
|
-
- Ranking keywords and gaps
|
|
1414
|
-
- User feedback and comments"
|
|
1415
|
-
|
|
1416
|
-
Claude: [Performs analysis and provides recommendations]
|
|
1417
|
-
```
|
|
1418
|
-
|
|
1419
|
-
**AI-Generated Optimization Report**:
|
|
1420
|
-
|
|
1421
|
-
```markdown
|
|
1422
|
-
## Content Performance Analysis: JWT Authentication Guide
|
|
1423
|
-
|
|
1424
|
-
### Publication Date: January 6, 2025
|
|
1425
|
-
### Analysis Date: February 6, 2025 (30 days)
|
|
1426
|
-
|
|
1427
|
-
---
|
|
1428
|
-
|
|
1429
|
-
## Performance Summary
|
|
1430
|
-
|
|
1431
|
-
**Traffic**:
|
|
1432
|
-
- Total visits: 2,847
|
|
1433
|
-
- Organic: 2,234 (78%)
|
|
1434
|
-
- Direct: 312 (11%)
|
|
1435
|
-
- Social: 201 (7%)
|
|
1436
|
-
- Referral: 100 (4%)
|
|
1437
|
-
|
|
1438
|
-
**Engagement**:
|
|
1439
|
-
- Average time on page: 8 min 32 sec (excellent)
|
|
1440
|
-
- Bounce rate: 42% (good)
|
|
1441
|
-
- Scroll depth: 68% (above average)
|
|
1442
|
-
- Social shares: 142 (LinkedIn: 89, Twitter: 41, Dev.to: 12)
|
|
1443
|
-
|
|
1444
|
-
**Conversions**:
|
|
1445
|
-
- Email signups: 47 (1.65% conversion rate)
|
|
1446
|
-
- Demo requests: 12 (0.42% conversion rate)
|
|
1447
|
-
- Total value: $1,920 (estimated)
|
|
1448
|
-
|
|
1449
|
-
---
|
|
1450
|
-
|
|
1451
|
-
## SEO Performance
|
|
1452
|
-
|
|
1453
|
-
### Ranking Keywords (Top 10)
|
|
1454
|
-
|
|
1455
|
-
| Keyword | Position | Search Volume | Clicks | CTR |
|
|
1456
|
-
|---------|----------|---------------|--------|-----|
|
|
1457
|
-
| jwt authentication tutorial | #4 | 2,400/mo | 156 | 6.5% |
|
|
1458
|
-
| json web token guide | #2 | 890/mo | 128 | 14.4% |
|
|
1459
|
-
| jwt security best practices | #3 | 720/mo | 98 | 13.6% |
|
|
1460
|
-
| how jwt works | #7 | 1,200/mo | 67 | 5.6% |
|
|
1461
|
-
| jwt vs session | #5 | 1,900/mo | 89 | 4.7% |
|
|
1462
|
-
|
|
1463
|
-
### Keyword Opportunities (NOT ranking yet)
|
|
1464
|
-
|
|
1465
|
-
| Keyword | Volume | Difficulty | Opportunity |
|
|
1466
|
-
|---------|--------|------------|-------------|
|
|
1467
|
-
| jwt refresh token rotation | 540/mo | Low | HIGH - Add dedicated section |
|
|
1468
|
-
| jwt blacklist strategy | 320/mo | Low | HIGH - Brief mention currently |
|
|
1469
|
-
| jwt performance benchmark | 210/mo | Medium | MEDIUM - Add performance data |
|
|
1470
|
-
|
|
1471
|
-
---
|
|
1472
|
-
|
|
1473
|
-
## Optimization Recommendations
|
|
1474
|
-
|
|
1475
|
-
### Priority 1: Improve Primary Keyword Ranking (HIGH IMPACT)
|
|
1476
|
-
|
|
1477
|
-
**Current**: Position #4 for "jwt authentication tutorial" (2,400/mo)
|
|
1478
|
-
**Goal**: Position #1-2 (estimated +300% traffic)
|
|
1479
|
-
|
|
1480
|
-
**Actions**:
|
|
1481
|
-
1. ✅ Add "Best" or "Complete" to title → "The Complete JWT Authentication Tutorial (2025)"
|
|
1482
|
-
- Reason: Top 3 results all use superlatives
|
|
1483
|
-
|
|
1484
|
-
2. ✅ Add FAQ section with schema markup
|
|
1485
|
-
- Questions from "People Also Ask":
|
|
1486
|
-
- "What is JWT and how does it work?"
|
|
1487
|
-
- "Is JWT secure?"
|
|
1488
|
-
- "When should I use JWT?"
|
|
1489
|
-
|
|
1490
|
-
3. ✅ Expand refresh token section (currently 200 words → target 800 words)
|
|
1491
|
-
- Add: Token rotation strategies
|
|
1492
|
-
- Add: Blacklisting implementation
|
|
1493
|
-
- Add: Security comparison table
|
|
1494
|
-
|
|
1495
|
-
4. ✅ Add video embed (YouTube)
|
|
1496
|
-
- Create 5-minute video explaining JWT flow
|
|
1497
|
-
- Google favors pages with video for tutorials
|
|
1498
|
-
|
|
1499
|
-
5. ✅ Build backlinks from authoritative sites
|
|
1500
|
-
- Target: 5-10 relevant backlinks in next 60 days
|
|
1501
|
-
- Strategy: Guest posts, resource page outreach
|
|
1502
|
-
|
|
1503
|
-
**Estimated Impact**: +400-600 organic visits/month
|
|
1504
|
-
|
|
1505
|
-
---
|
|
1506
|
-
|
|
1507
|
-
### Priority 2: Capture Long-Tail Keywords (MEDIUM IMPACT)
|
|
1508
|
-
|
|
1509
|
-
**Add dedicated sections for these unranked keywords**:
|
|
1510
|
-
|
|
1511
|
-
1. **JWT Refresh Token Rotation** (540/mo, Low difficulty)
|
|
1512
|
-
- Current mention: 1 paragraph
|
|
1513
|
-
- Recommended: Dedicated 600-word section with code examples
|
|
1514
|
-
- Add: Rotation strategies comparison table
|
|
1515
|
-
|
|
1516
|
-
2. **JWT Blacklist Strategy** (320/mo, Low difficulty)
|
|
1517
|
-
- Current: Not mentioned
|
|
1518
|
-
- Add: 500-word section on token invalidation
|
|
1519
|
-
- Include: Redis-based blacklist implementation
|
|
1520
|
-
|
|
1521
|
-
3. **JWT Performance Benchmark** (210/mo, Medium difficulty)
|
|
1522
|
-
- Current: No performance data
|
|
1523
|
-
- Add: Benchmark comparison (JWT vs Session)
|
|
1524
|
-
- Include: Load test results table
|
|
1525
|
-
|
|
1526
|
-
**Estimated Impact**: +200-300 organic visits/month
|
|
1527
|
-
|
|
1528
|
-
---
|
|
1529
|
-
|
|
1530
|
-
### Priority 3: Improve Engagement (MEDIUM IMPACT)
|
|
1531
|
-
|
|
1532
|
-
**Current Issues**:
|
|
1533
|
-
- 42% bounce rate (32% leave without scrolling)
|
|
1534
|
-
- Only 68% scroll to bottom
|
|
1535
|
-
|
|
1536
|
-
**Recommendations**:
|
|
1537
|
-
|
|
1538
|
-
1. ✅ Improve introduction (first 200 words)
|
|
1539
|
-
- Add compelling statistic or story
|
|
1540
|
-
- Clearer value proposition
|
|
1541
|
-
- Stronger hook
|
|
1542
|
-
|
|
1543
|
-
2. ✅ Add interactive code playground
|
|
1544
|
-
- Embed RunKit or CodeSandbox
|
|
1545
|
-
- Let users test JWT generation/verification
|
|
1546
|
-
- Reduces bounce, increases time on page
|
|
1547
|
-
|
|
1548
|
-
3. ✅ Add "Key Takeaways" box at top
|
|
1549
|
-
- 3-4 bullet points summarizing value
|
|
1550
|
-
- Increases engagement for scanners
|
|
1551
|
-
|
|
1552
|
-
4. ✅ Improve internal linking
|
|
1553
|
-
- Current: 3 internal links
|
|
1554
|
-
- Target: 8-10 internal links
|
|
1555
|
-
- Link to related authentication articles
|
|
1556
|
-
|
|
1557
|
-
**Estimated Impact**:
|
|
1558
|
-
- Bounce rate: 42% → 35%
|
|
1559
|
-
- Time on page: 8:32 → 10:30
|
|
1560
|
-
- Conversions: +15-20%
|
|
1561
|
-
|
|
1562
|
-
---
|
|
1563
|
-
|
|
1564
|
-
### Priority 4: Conversion Optimization (HIGH VALUE)
|
|
1565
|
-
|
|
1566
|
-
**Current Conversion Rate**: 1.65% (email), 0.42% (demo)
|
|
1567
|
-
**Industry Benchmark**: 2-3% (email), 0.5-1% (demo)
|
|
1568
|
-
|
|
1569
|
-
**Recommendations**:
|
|
1570
|
-
|
|
1571
|
-
1. ✅ Add content upgrade offer
|
|
1572
|
-
- "Download: JWT Security Checklist (PDF)"
|
|
1573
|
-
- Place after security section
|
|
1574
|
-
- Estimated: +50-80 email signups/month
|
|
1575
|
-
|
|
1576
|
-
2. ✅ Improve CTA placement
|
|
1577
|
-
- Current: 1 CTA at bottom
|
|
1578
|
-
- Add: Mid-content CTA after "Node.js implementation"
|
|
1579
|
-
- Add: Exit-intent popup
|
|
1580
|
-
|
|
1581
|
-
3. ✅ Create related resource hub
|
|
1582
|
-
- "Everything you need to implement JWT"
|
|
1583
|
-
- Links to: Documentation, code templates, video series
|
|
1584
|
-
- Keeps users on site, builds trust
|
|
1585
|
-
|
|
1586
|
-
**Estimated Impact**:
|
|
1587
|
-
- Email signups: +60-100/month
|
|
1588
|
-
- Demo requests: +8-15/month
|
|
1589
|
-
- Revenue impact: +$1,500-2,500/month
|
|
1590
|
-
|
|
1591
|
-
---
|
|
1592
|
-
|
|
1593
|
-
## Implementation Timeline
|
|
1594
|
-
|
|
1595
|
-
### Week 1-2: Quick Wins
|
|
1596
|
-
- [ ] Update title to "Complete JWT Authentication Tutorial"
|
|
1597
|
-
- [ ] Add FAQ section with schema markup
|
|
1598
|
-
- [ ] Expand refresh token section (800 words)
|
|
1599
|
-
- [ ] Add content upgrade CTA
|
|
1600
|
-
|
|
1601
|
-
### Week 3-4: Medium Effort
|
|
1602
|
-
- [ ] Create and embed YouTube video (5-10 min)
|
|
1603
|
-
- [ ] Add JWT refresh token rotation section
|
|
1604
|
-
- [ ] Add blacklist strategy section
|
|
1605
|
-
- [ ] Improve introduction and key takeaways box
|
|
1606
|
-
|
|
1607
|
-
### Month 2: High Effort
|
|
1608
|
-
- [ ] Conduct performance benchmarks
|
|
1609
|
-
- [ ] Add interactive code playground
|
|
1610
|
-
- [ ] Build 5-10 backlinks
|
|
1611
|
-
- [ ] Create related resource hub
|
|
3
|
+
**MyAIDev Method** — 13 skills for end-to-end content production + 1 maintenance skill
|
|
1612
4
|
|
|
1613
5
|
---
|
|
1614
6
|
|
|
1615
|
-
##
|
|
7
|
+
## Pipeline at a Glance
|
|
1616
8
|
|
|
1617
|
-
**Traffic**:
|
|
1618
|
-
- Current: 2,847 visits/month
|
|
1619
|
-
- Projected: 4,200-5,500 visits/month (+48-93%)
|
|
1620
|
-
|
|
1621
|
-
**Rankings**:
|
|
1622
|
-
- "jwt authentication tutorial": #4 → #1-2
|
|
1623
|
-
- "jwt refresh token rotation": Unranked → #3-5
|
|
1624
|
-
- "jwt blacklist strategy": Unranked → #4-7
|
|
1625
|
-
|
|
1626
|
-
**Conversions**:
|
|
1627
|
-
- Email signups: 47/mo → 110-150/mo
|
|
1628
|
-
- Demo requests: 12/mo → 22-30/mo
|
|
1629
|
-
- Revenue impact: $1,920/mo → $4,400-6,000/mo
|
|
1630
|
-
|
|
1631
|
-
**ROI**:
|
|
1632
|
-
- Time investment: 12-16 hours
|
|
1633
|
-
- Revenue increase: +$2,500-4,000/month
|
|
1634
|
-
- ROI: 1,500-2,500%
|
|
1635
9
|
```
|
|
10
|
+
SETUP ──► PRE-PRODUCTION ──► PRODUCTION ──► PUBLISH
|
|
11
|
+
2 skills 2 skills 3 skills 6 skills
|
|
1636
12
|
|
|
1637
|
-
|
|
13
|
+
┌─────────────────────────────────────┐
|
|
14
|
+
│ myai-content-production-coordinator │
|
|
15
|
+
│ (orchestrates the entire pipeline) │
|
|
16
|
+
└─────────────────────────────────────┘
|
|
1638
17
|
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
Month 2: Analyze → Optimize (Priority 1-2 items)
|
|
1642
|
-
Month 3: Build backlinks → Update content
|
|
1643
|
-
Month 4: Add new sections → Refresh
|
|
1644
|
-
Month 5-6: Monitor rankings → Maintain position
|
|
1645
|
-
Month 7+: Quarterly refresh → Keep content current
|
|
18
|
+
CONTENT MAINTENANCE (separate skill pack)
|
|
19
|
+
1 skill: content-enrichment
|
|
1646
20
|
```
|
|
1647
21
|
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
✅ **Data Analysis**: Process GA4, Search Console data at scale
|
|
1651
|
-
✅ **Keyword Gap Analysis**: Identify ranking opportunities
|
|
1652
|
-
✅ **Content Recommendations**: Suggest specific improvements
|
|
1653
|
-
✅ **Competitor Analysis**: Compare to top-ranking content
|
|
1654
|
-
✅ **Performance Tracking**: Monitor metrics over time
|
|
1655
|
-
✅ **A/B Test Analysis**: Interpret test results
|
|
1656
|
-
|
|
1657
|
-
### Where Human Input is Critical
|
|
1658
|
-
|
|
1659
|
-
🧠 **Strategic Decisions**: Which optimizations to prioritize
|
|
1660
|
-
🧠 **Creative Solutions**: Unique angles to outrank competitors
|
|
1661
|
-
🧠 **Quality Judgment**: When content is "good enough"
|
|
1662
|
-
🧠 **Resource Allocation**: Time and budget decisions
|
|
1663
|
-
🧠 **Experimentation**: Try unconventional optimization strategies
|
|
22
|
+
The Content Creation Skillpack turns a topic into a published, SEO-optimized, visually rich article across five platforms — orchestrated end-to-end by the **myai-content-production-coordinator**. The **Content Maintenance Skillpack** handles enrichment of existing content.
|
|
1664
23
|
|
|
1665
24
|
---
|
|
1666
25
|
|
|
1667
|
-
##
|
|
1668
|
-
|
|
1669
|
-
### Content Creation Strengths
|
|
1670
|
-
|
|
1671
|
-
AI is exceptionally good at:
|
|
1672
|
-
|
|
1673
|
-
#### 1. **Speed and Volume**
|
|
1674
|
-
- **Generate 2,500 words in 2-3 minutes** (vs 8-16 hours human)
|
|
1675
|
-
- **Create multiple content variations** for A/B testing
|
|
1676
|
-
- **Produce content at scale** (10+ articles per week possible)
|
|
1677
|
-
|
|
1678
|
-
**Example Use Case**:
|
|
1679
|
-
```bash
|
|
1680
|
-
# Generate 5 variations of the same article for A/B testing
|
|
1681
|
-
/content-writer "JWT Authentication Guide" --word_count 2500 --variations 5 --angle "security-focused"
|
|
1682
|
-
/content-writer "JWT Authentication Guide" --word_count 2500 --variations 5 --angle "beginner-friendly"
|
|
1683
|
-
/content-writer "JWT Authentication Guide" --word_count 2500 --variations 5 --angle "performance-focused"
|
|
1684
|
-
```
|
|
1685
|
-
|
|
1686
|
-
Result: 15 article variations in 15 minutes for testing which angle performs best.
|
|
1687
|
-
|
|
1688
|
-
#### 2. **Structural Excellence**
|
|
1689
|
-
- **Logical flow** and well-organized content
|
|
1690
|
-
- **Proper heading hierarchy** (H1-H6)
|
|
1691
|
-
- **Clear topic transitions**
|
|
1692
|
-
- **Consistent formatting**
|
|
1693
|
-
- **Table of contents** generation
|
|
1694
|
-
|
|
1695
|
-
#### 3. **SEO Fundamentals**
|
|
1696
|
-
- **Keyword integration** without keyword stuffing
|
|
1697
|
-
- **Meta description** generation
|
|
1698
|
-
- **LSI keyword** inclusion
|
|
1699
|
-
- **Internal linking** suggestions
|
|
1700
|
-
- **Alt text** for images
|
|
1701
|
-
|
|
1702
|
-
#### 4. **Technical Accuracy (with verification)**
|
|
1703
|
-
- **Code examples** that compile and run
|
|
1704
|
-
- **API documentation** structure
|
|
1705
|
-
- **Technical concepts** explanation
|
|
1706
|
-
- **Best practices** from training data
|
|
1707
|
-
|
|
1708
|
-
⚠️ **Critical Note**: Always verify technical accuracy - AI can confidently generate plausible but wrong information.
|
|
1709
|
-
|
|
1710
|
-
#### 5. **Content Repurposing**
|
|
1711
|
-
- **Format conversion**: Blog → LinkedIn article → Twitter thread → Email newsletter
|
|
1712
|
-
- **Length adaptation**: 2,500-word article → 500-word summary
|
|
1713
|
-
- **Tone adjustment**: Technical → Conversational
|
|
1714
|
-
- **Audience targeting**: Developer → Manager version
|
|
1715
|
-
|
|
1716
|
-
**Example**:
|
|
1717
|
-
```bash
|
|
1718
|
-
# Original: Technical blog post (2,500 words)
|
|
1719
|
-
/content-writer "JWT Authentication Tutorial"
|
|
1720
|
-
|
|
1721
|
-
# Repurpose for LinkedIn (1,200 words, professional tone)
|
|
1722
|
-
User: "Convert this into a LinkedIn article, 1,200 words, focus on business value"
|
|
1723
|
-
|
|
1724
|
-
# Repurpose for Twitter (thread, 10 tweets)
|
|
1725
|
-
User: "Create a Twitter thread from this article, 10 tweets, each with key insight"
|
|
1726
|
-
|
|
1727
|
-
# Repurpose for email (500 words, conversational)
|
|
1728
|
-
User: "Create email newsletter version, 500 words, casual tone, CTA to read full article"
|
|
1729
|
-
```
|
|
1730
|
-
|
|
1731
|
-
Result: 1 article → 4 content pieces in 15 minutes.
|
|
26
|
+
## Table of Contents
|
|
1732
27
|
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
28
|
+
1. [Onboarding](#onboarding)
|
|
29
|
+
2. [Skills Reference](#skills-reference)
|
|
30
|
+
3. [Directory Structure](#directory-structure)
|
|
31
|
+
4. [How It Works](#how-it-works)
|
|
32
|
+
5. [Configuration Files](#configuration-files)
|
|
33
|
+
6. [Content Queue Format](#content-queue-format)
|
|
34
|
+
7. [Flags & Parameters](#flags--parameters)
|
|
35
|
+
8. [Usage Examples](#usage-examples)
|
|
1738
36
|
|
|
1739
37
|
---
|
|
1740
38
|
|
|
1741
|
-
##
|
|
1742
|
-
|
|
1743
|
-
### What AI Cannot Replace
|
|
1744
|
-
|
|
1745
|
-
Despite AI's impressive capabilities, humans are essential for:
|
|
1746
|
-
|
|
1747
|
-
#### 1. **Factual Verification & Quality Control**
|
|
39
|
+
## Onboarding
|
|
1748
40
|
|
|
1749
|
-
|
|
41
|
+
### Step 1: Run `company-config`
|
|
1750
42
|
|
|
1751
|
-
|
|
1752
|
-
```markdown
|
|
1753
|
-
AI Generated (WRONG):
|
|
1754
|
-
"JWT tokens are encrypted using AES-256 encryption, ensuring that
|
|
1755
|
-
even if intercepted, the payload cannot be read without the secret key."
|
|
43
|
+
Collects your company profile, products, and services through an interactive questionnaire. Run once at project setup.
|
|
1756
44
|
|
|
1757
|
-
Reality:
|
|
1758
|
-
JWTs are BASE64-ENCODED, not encrypted. Anyone can decode and read
|
|
1759
|
-
the payload. Only the SIGNATURE is cryptographically secured.
|
|
1760
45
|
```
|
|
1761
|
-
|
|
1762
|
-
**Human Responsibility**:
|
|
1763
|
-
- ✅ Verify all technical claims
|
|
1764
|
-
- ✅ Test all code examples
|
|
1765
|
-
- ✅ Check statistics and data sources
|
|
1766
|
-
- ✅ Validate best practices against current standards
|
|
1767
|
-
- ✅ Catch logical inconsistencies
|
|
1768
|
-
|
|
1769
|
-
**Best Practice**: Never publish AI-generated technical content without verification.
|
|
1770
|
-
|
|
1771
|
-
#### 2. **Unique Insights & Proprietary Knowledge**
|
|
1772
|
-
|
|
1773
|
-
**What AI Cannot Do**:
|
|
1774
|
-
- Share YOUR company's unique approach
|
|
1775
|
-
- Provide YOUR customer's real experiences
|
|
1776
|
-
- Offer YOUR hard-won lessons learned
|
|
1777
|
-
- Present YOUR proprietary data
|
|
1778
|
-
- Convey YOUR brand's personality
|
|
1779
|
-
|
|
1780
|
-
**Example**:
|
|
1781
|
-
|
|
1782
|
-
❌ **AI-Generated (Generic)**:
|
|
1783
|
-
```markdown
|
|
1784
|
-
"Many companies struggle with authentication implementation.
|
|
1785
|
-
Best practices include using strong passwords and two-factor authentication."
|
|
46
|
+
/company-config
|
|
1786
47
|
```
|
|
1787
48
|
|
|
1788
|
-
|
|
1789
|
-
```markdown
|
|
1790
|
-
"After implementing JWT auth for 127 SaaS companies, we discovered
|
|
1791
|
-
that 83% made the same critical mistake: storing sensitive PII in the
|
|
1792
|
-
JWT payload. This led to GDPR violations in 34 cases when tokens were
|
|
1793
|
-
accidentally logged to third-party services.
|
|
49
|
+
The skill asks questions one at a time across three parts:
|
|
1794
50
|
|
|
1795
|
-
|
|
1796
|
-
|
|
51
|
+
| Part | Questions | Output |
|
|
52
|
+
|------|-----------|--------|
|
|
53
|
+
| Brand Profile | Full name, company name, URL, description, contact info | `brand-config.json` |
|
|
54
|
+
| Products | Product list with descriptions, pricing plans | `product-config.json` |
|
|
55
|
+
| Services | Service list, target audience segments | `service-config.json` |
|
|
1797
56
|
|
|
1798
|
-
|
|
1799
|
-
- Specific data (127 companies, 83%, 34 cases)
|
|
1800
|
-
- Real consequences (GDPR violations)
|
|
1801
|
-
- Proprietary solution (our checklist)
|
|
1802
|
-
- Authority and credibility
|
|
57
|
+
If you provide a company URL, the skill fetches your site and proposes a draft for products, services, and description — confirm or override.
|
|
1803
58
|
|
|
1804
|
-
|
|
59
|
+
### Step 2: Run `content-rules-config`
|
|
1805
60
|
|
|
1806
|
-
|
|
1807
|
-
- Which topics align with business goals?
|
|
1808
|
-
- What controversial positions should we take?
|
|
1809
|
-
- How aggressive should our competitor comparisons be?
|
|
1810
|
-
- When to pivot content strategy based on market changes?
|
|
1811
|
-
- Which audience segments to prioritize?
|
|
61
|
+
Interactive wizard that generates your brand voice, style guidelines, SEO rules, and prohibited terms.
|
|
1812
62
|
|
|
1813
|
-
**Example Strategic Decision**:
|
|
1814
63
|
```
|
|
1815
|
-
|
|
1816
|
-
(Based on search volume)
|
|
1817
|
-
|
|
1818
|
-
Human Strategic Decision: "Focus on JWT vs OAuth only.
|
|
1819
|
-
SAML is legacy and doesn't align with our product roadmap.
|
|
1820
|
-
Plus, our target audience (modern SaaS developers) rarely uses SAML."
|
|
64
|
+
/content-rules-config
|
|
1821
65
|
```
|
|
1822
66
|
|
|
1823
|
-
|
|
67
|
+
Four modes are available:
|
|
1824
68
|
|
|
1825
|
-
|
|
69
|
+
| Mode | Flag | What it does |
|
|
70
|
+
|------|------|-------------|
|
|
71
|
+
| Full Setup | *(default)* | Complete wizard: voice, audience, style, formatting, SEO, topics, visuals, prohibited terms |
|
|
72
|
+
| Quick Setup | `--quick` | Essential questions only with smart defaults |
|
|
73
|
+
| Update | `--update` | Modify specific sections of an existing `content-rules.md` |
|
|
74
|
+
| Preview | `--preview` | Display current rules summary |
|
|
1826
75
|
|
|
1827
|
-
|
|
1828
|
-
- Humor and personality
|
|
1829
|
-
- Controversial opinions (when appropriate)
|
|
1830
|
-
- Emotional connection
|
|
1831
|
-
- Cultural references
|
|
1832
|
-
- Subtle brand differentiation
|
|
76
|
+
You can provide 1–5 reference URLs or file paths of existing content that represents your desired style. The skill analyzes them, derives a style profile, and pre-fills the wizard.
|
|
1833
77
|
|
|
1834
|
-
|
|
78
|
+
Output: `content-rules.md` — the single source of truth for all brand voice, style, and content rules.
|
|
1835
79
|
|
|
1836
|
-
|
|
1837
|
-
```markdown
|
|
1838
|
-
"Authentication is an important aspect of web application security.
|
|
1839
|
-
It's essential to implement proper authentication to protect user data."
|
|
1840
|
-
```
|
|
80
|
+
### Step 3: Produce Content
|
|
1841
81
|
|
|
1842
|
-
|
|
1843
|
-
```markdown
|
|
1844
|
-
"Let's be honest: authentication is the vegetables of web development.
|
|
1845
|
-
Nobody gets excited about it, but skip it and your app becomes a security disaster.
|
|
82
|
+
With config files in place, run the coordinator:
|
|
1846
83
|
|
|
1847
|
-
The good news? Modern auth doesn't have to be a nightmare..."
|
|
1848
84
|
```
|
|
85
|
+
# Single new article
|
|
86
|
+
/myai-content-production-coordinator "Your Topic Here"
|
|
1849
87
|
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
**AI Cannot Create** (yet):
|
|
1853
|
-
- Custom diagrams and illustrations
|
|
1854
|
-
- Screenshots and screen recordings
|
|
1855
|
-
- Infographics
|
|
1856
|
-
- Video content
|
|
1857
|
-
- Interactive demos
|
|
1858
|
-
|
|
1859
|
-
**Human Creates**:
|
|
1860
|
-
- Architecture diagrams specific to your use case
|
|
1861
|
-
- Step-by-step screenshot tutorials
|
|
1862
|
-
- Custom code playground embeddings
|
|
1863
|
-
- Video walkthroughs
|
|
88
|
+
# Enrich an existing article
|
|
89
|
+
/myai-content-production-coordinator --enrich content-output/old-article.md --full
|
|
1864
90
|
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
#### 6. **Controversial or Sensitive Topics**
|
|
1868
|
-
|
|
1869
|
-
**Requires Human Judgment**:
|
|
1870
|
-
- Industry criticism
|
|
1871
|
-
- Competitor comparisons
|
|
1872
|
-
- Political or social issues
|
|
1873
|
-
- Regulatory commentary
|
|
1874
|
-
- Emerging ethical concerns
|
|
1875
|
-
|
|
1876
|
-
**Example**:
|
|
1877
|
-
```
|
|
1878
|
-
Topic: "Why [Competitor] Gets Authentication Wrong"
|
|
1879
|
-
|
|
1880
|
-
AI: Will likely produce safe, generic comparison
|
|
1881
|
-
Human: Decides if direct criticism aligns with brand, legal review, potential backlash
|
|
91
|
+
# Batch mode — process all pending stubs
|
|
92
|
+
/myai-content-production-coordinator --batch
|
|
1882
93
|
```
|
|
1883
94
|
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
**AI Cannot**:
|
|
1887
|
-
- Truly understand your audience's pain points
|
|
1888
|
-
- Predict which examples will resonate
|
|
1889
|
-
- Know which tone will build trust
|
|
1890
|
-
- Sense when to use humor vs seriousness
|
|
1891
|
-
|
|
1892
|
-
**Human Knows**:
|
|
1893
|
-
- Your audience's specific frustrations
|
|
1894
|
-
- Industry inside jokes and references
|
|
1895
|
-
- Cultural sensitivities
|
|
1896
|
-
- When to educate vs when to inspire
|
|
95
|
+
The coordinator reads all config files and dispatches every downstream skill automatically.
|
|
1897
96
|
|
|
1898
97
|
---
|
|
1899
98
|
|
|
1900
|
-
##
|
|
1901
|
-
|
|
1902
|
-
### Pitfall 1: Publishing AI Content Without Editing
|
|
99
|
+
## Skills Reference
|
|
1903
100
|
|
|
1904
|
-
|
|
101
|
+
### Setup (2 skills)
|
|
1905
102
|
|
|
1906
|
-
|
|
1907
|
-
- Repetitive phrases ("it's important to note that...")
|
|
1908
|
-
- Overly formal or academic tone
|
|
1909
|
-
- Generic examples without specificity
|
|
1910
|
-
- Lack of unique insights or data
|
|
1911
|
-
- Obvious patterns (always 3 bullet points, always 5 steps)
|
|
1912
|
-
- No personality or brand voice
|
|
103
|
+
#### `company-config`
|
|
1913
104
|
|
|
1914
|
-
|
|
1915
|
-
```markdown
|
|
1916
|
-
AI Generated (Obvious):
|
|
1917
|
-
"In today's digital landscape, authentication has become increasingly important.
|
|
1918
|
-
It's worth noting that many developers struggle with implementation.
|
|
1919
|
-
Here are 5 important considerations:
|
|
1920
|
-
1. Security is important
|
|
1921
|
-
2. Performance is important
|
|
1922
|
-
3. Scalability is important..."
|
|
1923
|
-
```
|
|
1924
|
-
|
|
1925
|
-
**Solution**:
|
|
1926
|
-
✅ Always edit AI content before publishing
|
|
1927
|
-
✅ Add specific examples and data
|
|
1928
|
-
✅ Inject brand personality
|
|
1929
|
-
✅ Remove generic phrases
|
|
1930
|
-
✅ Add proprietary insights
|
|
1931
|
-
|
|
1932
|
-
**Time Investment**: 2-4 hours of editing per 2,500-word article
|
|
105
|
+
One-time company onboarding. Collects brand profile, products, and services — saved as config files for all other skills to consume.
|
|
1933
106
|
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
107
|
+
- **Tools**: Read, Write, Bash, Glob, AskUserQuestion
|
|
108
|
+
- **Outputs**: `brand-config.json`, `product-config.json`, `service-config.json`
|
|
109
|
+
- **When to run**: Once at project setup, or when company details change
|
|
1937
110
|
|
|
1938
|
-
|
|
111
|
+
If any output file already exists, the skill asks whether to update or start fresh.
|
|
1939
112
|
|
|
1940
|
-
|
|
1941
|
-
```markdown
|
|
1942
|
-
AI Generated (WRONG):
|
|
1943
|
-
"SHA-256 encryption is used to encrypt JWT payloads, making them secure
|
|
1944
|
-
even if the token is intercepted. The secret key is required to decrypt
|
|
1945
|
-
the payload and access the user information."
|
|
1946
|
-
|
|
1947
|
-
Reality:
|
|
1948
|
-
- JWTs use BASE64 ENCODING, not encryption
|
|
1949
|
-
- SHA-256 is used for SIGNING, not encrypting
|
|
1950
|
-
- Anyone can decode the payload without the secret
|
|
1951
|
-
- The secret validates the signature, not decrypts data
|
|
1952
|
-
```
|
|
113
|
+
#### `content-rules-config`
|
|
1953
114
|
|
|
1954
|
-
|
|
1955
|
-
- Damages credibility
|
|
1956
|
-
- Confuses readers
|
|
1957
|
-
- Creates security vulnerabilities if followed
|
|
1958
|
-
- Harms SEO (Google penalizes misinformation)
|
|
115
|
+
Generates `content-rules.md` from an interactive wizard. Covers brand identity, target audience, writing style, formatting, SEO requirements, topic boundaries, visual preferences, and prohibited terms.
|
|
1959
116
|
|
|
1960
|
-
**
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
✅ Cross-reference with official documentation
|
|
1964
|
-
✅ Have technical experts review before publishing
|
|
1965
|
-
✅ Cite authoritative sources
|
|
117
|
+
- **Tools**: Read, Write, Glob, Grep, AskUserQuestion, WebFetch
|
|
118
|
+
- **Output**: `content-rules.md`
|
|
119
|
+
- **When to run**: Once at project setup, or when brand voice / style guidelines change
|
|
1966
120
|
|
|
1967
|
-
|
|
1968
|
-
```markdown
|
|
1969
|
-
## Verification Checklist
|
|
1970
|
-
- [ ] All code examples tested and working
|
|
1971
|
-
- [ ] Technical claims verified against official docs
|
|
1972
|
-
- [ ] Statistics sourced and cited
|
|
1973
|
-
- [ ] No hallucinated features or capabilities
|
|
1974
|
-
- [ ] External expert review (for complex topics)
|
|
1975
|
-
```
|
|
121
|
+
Can analyze existing blog posts or articles you provide to derive style rules automatically.
|
|
1976
122
|
|
|
1977
123
|
---
|
|
1978
124
|
|
|
1979
|
-
###
|
|
125
|
+
### Pre-Production (2 skills)
|
|
1980
126
|
|
|
1981
|
-
|
|
127
|
+
#### `myai-content-ideation`
|
|
1982
128
|
|
|
1983
|
-
**
|
|
1984
|
-
```markdown
|
|
1985
|
-
AI Over-Optimized (BAD):
|
|
1986
|
-
"JWT authentication tutorial: Learn JWT authentication with this JWT
|
|
1987
|
-
authentication tutorial. JWT authentication is important for JWT
|
|
1988
|
-
authentication security. In this JWT authentication tutorial, we'll
|
|
1989
|
-
cover JWT authentication best practices for JWT authentication
|
|
1990
|
-
implementation."
|
|
1991
|
-
|
|
1992
|
-
Keyword density: 8% (WAY too high - Google penalty threshold)
|
|
1993
|
-
```
|
|
129
|
+
Researches a topic area, discovers strategic **Themes**, and produces ideation briefs, article plans, and content stubs.
|
|
1994
130
|
|
|
1995
|
-
**
|
|
1996
|
-
-
|
|
1997
|
-
-
|
|
1998
|
-
-
|
|
1999
|
-
-
|
|
131
|
+
- **Tools**: Read, Write, WebSearch, WebFetch
|
|
132
|
+
- **Internal agent** — dispatched by `content-writer` and the production coordinator
|
|
133
|
+
- **Outputs**:
|
|
134
|
+
- `content-themes.json` — persistent Themes file (appended across runs)
|
|
135
|
+
- `.content-session/ideation.md` — per-session ideation brief
|
|
136
|
+
- `.content-session/plan.md` — article structure and keyword placement plan
|
|
137
|
+
- `content-queue/{jobDir}/` — content stubs (one per Theme)
|
|
2000
138
|
|
|
2001
|
-
**
|
|
2002
|
-
✅ Target 1-2% keyword density maximum
|
|
2003
|
-
✅ Use LSI (Latent Semantic Indexing) keywords naturally
|
|
2004
|
-
✅ Write for humans first, SEO second
|
|
2005
|
-
✅ Focus on comprehensive topic coverage, not keyword repetition
|
|
139
|
+
**What is a Theme?** A strategic content grouping with a title, description, strategy, and 2–5 reference URLs. Themes are not article outlines — they're strategic angles that multiple articles can be written under.
|
|
2006
140
|
|
|
2007
|
-
|
|
2008
|
-
```markdown
|
|
2009
|
-
"Authentication is a critical component of modern web applications.
|
|
2010
|
-
This comprehensive guide covers JWT implementation, from basic concepts
|
|
2011
|
-
to production-ready security patterns. You'll learn how to implement
|
|
2012
|
-
token-based authentication in Node.js and Python with real-world examples."
|
|
141
|
+
Six built-in ideation strategies:
|
|
2013
142
|
|
|
2014
|
-
|
|
2015
|
-
|
|
143
|
+
| Strategy | When to use |
|
|
144
|
+
|----------|-------------|
|
|
145
|
+
| Gap Analysis | Clear gap in existing coverage |
|
|
146
|
+
| Current Trends | Intersects recent developments or timely events |
|
|
147
|
+
| Related Subject | Bridges an adjacent domain for cross-disciplinary value |
|
|
148
|
+
| Hub and Spoke | Broad enough for a pillar piece with supporting articles |
|
|
149
|
+
| Unique Angle | Proprietary data, original research, or contrarian takes |
|
|
150
|
+
| Venn Diagram | Two distinct audiences or subjects overlap |
|
|
2016
151
|
|
|
2017
|
-
|
|
152
|
+
#### `myai-proprietary-content-verifier`
|
|
2018
153
|
|
|
2019
|
-
|
|
154
|
+
Pre-production gate that scores content stubs for redundancy against your existing content. Runs **before** the writing phase in batch mode.
|
|
2020
155
|
|
|
2021
|
-
**
|
|
156
|
+
- **Tools**: Read, Write, WebSearch, WebFetch, Glob, Grep
|
|
157
|
+
- **Internal agent** — dispatched by the production coordinator
|
|
158
|
+
- **Output**: Stamps each stub's frontmatter with a `verification` block (score, label, decision, reason)
|
|
2022
159
|
|
|
2023
|
-
|
|
2024
|
-
- Google prioritizes unique, valuable content
|
|
2025
|
-
- Readers leave immediately (high bounce rate)
|
|
2026
|
-
- No backlinks or social shares
|
|
2027
|
-
- Doesn't establish thought leadership
|
|
160
|
+
Scoring (1–5):
|
|
2028
161
|
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
Benefits of JWT:
|
|
2037
|
-
- Stateless
|
|
2038
|
-
- Scalable
|
|
2039
|
-
- Secure
|
|
2040
|
-
|
|
2041
|
-
How to Implement JWT:
|
|
2042
|
-
1. Install library
|
|
2043
|
-
2. Create token
|
|
2044
|
-
3. Verify token"
|
|
2045
|
-
```
|
|
162
|
+
| Score | Label | Criteria |
|
|
163
|
+
|-------|-------|----------|
|
|
164
|
+
| 5 | Excellent | No meaningful overlap. Strong proprietary angle. |
|
|
165
|
+
| 4 | Good | Minimal overlap. Distinctly different angle or audience. |
|
|
166
|
+
| 3 | Acceptable | Moderate overlap but fresh perspective or updated data. |
|
|
167
|
+
| 2 | Weak | Significant overlap. Limited incremental value. |
|
|
168
|
+
| 1 | Junk | Redundant. Already covered thoroughly with the same angle. |
|
|
2046
169
|
|
|
2047
|
-
|
|
170
|
+
Stubs at or above the threshold (default: 3) are `approved`. Below are `rejected`.
|
|
2048
171
|
|
|
2049
|
-
|
|
172
|
+
Redundancy signals and their weights:
|
|
2050
173
|
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
174
|
+
| Signal | Weight |
|
|
175
|
+
|--------|--------|
|
|
176
|
+
| Title/topic match | 30% |
|
|
177
|
+
| Keyword overlap | 25% |
|
|
178
|
+
| Semantic similarity | 25% |
|
|
179
|
+
| Reference overlap | 10% |
|
|
180
|
+
| Live blog match | 10% |
|
|
2055
181
|
|
|
2056
|
-
|
|
2057
|
-
- 22% used weak secrets (<16 characters)
|
|
2058
|
-
- 11% never rotated signing keys
|
|
2059
|
-
- 8% had no expiration times set
|
|
182
|
+
---
|
|
2060
183
|
|
|
2061
|
-
|
|
2062
|
-
```
|
|
184
|
+
### Content Maintenance (1 skill — separate skill pack)
|
|
2063
185
|
|
|
2064
|
-
|
|
2065
|
-
```markdown
|
|
2066
|
-
"One of our customers, a fintech with 2M users, was generating 50K
|
|
2067
|
-
JWTs per second during peak hours. Their original implementation used
|
|
2068
|
-
HS256 (HMAC), which was maxing out CPU at 85%.
|
|
186
|
+
#### `content-enrichment`
|
|
2069
187
|
|
|
2070
|
-
|
|
2071
|
-
[Specific architecture diagram]
|
|
188
|
+
Enriches **existing** articles with real-time data, updated statistics, fresh references, FAQ sections, and schema recommendations. This skill belongs to the **Content Maintenance Skillpack** — use `/myai-configurator content-maintenance` to personalize it.
|
|
2072
189
|
|
|
2073
|
-
|
|
2074
|
-
|
|
190
|
+
- **Tools**: Read, Write, Edit, WebSearch, WebFetch, Task(content-writer), Bash, Glob, Grep
|
|
191
|
+
- **Output**: Modified article in-place with updated frontmatter
|
|
2075
192
|
|
|
2076
|
-
|
|
2077
|
-
```markdown
|
|
2078
|
-
"Unpopular opinion: JWTs are overused.
|
|
193
|
+
Enrichment types (combine with flags or use `--full`):
|
|
2079
194
|
|
|
2080
|
-
|
|
2081
|
-
|
|
195
|
+
| Flag | What it does |
|
|
196
|
+
|------|-------------|
|
|
197
|
+
| `--update-stats` | Find and replace outdated statistics with current data |
|
|
198
|
+
| `--add-references` | Add authoritative source links to unsupported claims |
|
|
199
|
+
| `--add-images` | Generate visual-plan for the visual-generator skill |
|
|
200
|
+
| `--add-faq` | Generate 5–8 FAQ items from article content |
|
|
201
|
+
| `--add-schema` | Suggest JSON-LD structured data |
|
|
202
|
+
| `--full` | All enrichment types |
|
|
203
|
+
| `--dry-run` | Show what would change without modifying |
|
|
2082
204
|
|
|
2083
|
-
[Data-backed argument]
|
|
2084
205
|
|
|
2085
|
-
|
|
2086
|
-
1. [Specific use case]
|
|
2087
|
-
2. [Specific use case]
|
|
206
|
+
For substantial section rewrites, the skill spawns the `content-writer` agent internally.
|
|
2088
207
|
|
|
2089
|
-
|
|
2090
|
-
```
|
|
208
|
+
The production coordinator dispatches this skill for its enrichment lane — it integrates with the creation pipeline but is owned by the maintenance skill pack.
|
|
2091
209
|
|
|
2092
210
|
---
|
|
2093
211
|
|
|
2094
|
-
###
|
|
212
|
+
### Production (3 skills)
|
|
2095
213
|
|
|
2096
|
-
**The Problem**: Treating all publishing platforms the same.
|
|
2097
214
|
|
|
2098
|
-
|
|
215
|
+
#### `content-writer`
|
|
2099
216
|
|
|
2100
|
-
|
|
2101
|
-
|----------|---------------|------|--------|-------|
|
|
2102
|
-
| **WordPress Blog** | 2,000-3,000 words | Professional | Long-form, comprehensive | Many internal links |
|
|
2103
|
-
| **LinkedIn Article** | 1,200-1,800 words | Professional but personal | Scannable with visuals | 2-3 external links |
|
|
2104
|
-
| **Dev.to** | 1,500-2,500 words | Technical, detailed | Code-heavy | External links encouraged |
|
|
2105
|
-
| **Medium** | 1,000-1,500 words | Conversational | Story-driven | Minimal links |
|
|
2106
|
-
| **Twitter Thread** | 200-300 words total | Concise, punchy | 10-15 tweets | 1 final link |
|
|
217
|
+
Writes publication-ready articles using content rules and brand guidelines.
|
|
2107
218
|
|
|
2108
|
-
**
|
|
2109
|
-
|
|
219
|
+
- **Tools**: Read, Write, WebSearch, WebFetch, Task(myai-content-ideation), Bash, Glob, Grep, AskUserQuestion
|
|
220
|
+
- **Output**: Final article saved to `content-output/{slug}.md`
|
|
2110
221
|
|
|
2111
|
-
|
|
2112
|
-
✅ Adapt content for each platform
|
|
2113
|
-
✅ Optimize length and format
|
|
2114
|
-
✅ Adjust tone and style
|
|
2115
|
-
✅ Follow platform-specific SEO practices
|
|
222
|
+
When invoked directly, orchestrates the full pipeline (ideation + writing). When spawned as a sub-agent by the coordinator, uses the provided plan.
|
|
2116
223
|
|
|
2117
|
-
|
|
2118
|
-
```
|
|
2119
|
-
Original: 2,800-word JWT authentication guide
|
|
224
|
+
Execution phases (direct invocation):
|
|
2120
225
|
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
226
|
+
```
|
|
227
|
+
1. INIT → Parse args, read content-rules.md, create session dir
|
|
228
|
+
2. IDEATION → Task(myai-content-ideation) — skip with --no-research
|
|
229
|
+
3. WRITE → Write article using plan + ideation + content rules
|
|
230
|
+
4. ASSEMBLE → Produce final article with frontmatter
|
|
231
|
+
5. OUTPUT → Save to content-output/{slug}.md
|
|
232
|
+
6. CLEANUP → Remove .content-session/
|
|
2126
233
|
```
|
|
2127
234
|
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
### Pitfall 6: No Human Review Process
|
|
235
|
+
Structural templates by content type:
|
|
2131
236
|
|
|
2132
|
-
|
|
237
|
+
| Type | Structure |
|
|
238
|
+
|------|-----------|
|
|
239
|
+
| `blog-post` | Intro (15%) → 3–5 sections (70%) → Conclusion (15%) |
|
|
240
|
+
| `technical-tutorial` | Intro (10%) → Prerequisites (5%) → Steps (65%) → Troubleshooting (10%) → Next Steps (10%) |
|
|
241
|
+
| `how-to-guide` | Problem (15%) → Solution Steps (60%) → Best Practices (15%) → Conclusion (10%) |
|
|
242
|
+
| `listicle` | Intro (10%) → Items (75%) → Summary (15%) |
|
|
243
|
+
| `comparison-guide` | Intro (10%) → Quick Table (5%) → Deep Dives (60%) → Decision Framework (15%) → Conclusion (10%) |
|
|
244
|
+
| `case-study` | Challenge (20%) → Approach (25%) → Implementation (25%) → Results (20%) → Lessons (10%) |
|
|
2133
245
|
|
|
2134
|
-
**Consequences**:
|
|
2135
|
-
- Factual errors go live
|
|
2136
|
-
- Brand voice inconsistencies
|
|
2137
|
-
- Legal issues (copyright, libel)
|
|
2138
|
-
- Missed optimization opportunities
|
|
2139
|
-
- Damaged reputation
|
|
2140
246
|
|
|
2141
|
-
|
|
247
|
+
#### `visual-generator`
|
|
2142
248
|
|
|
2143
|
-
|
|
2144
|
-
Step 1: AI Generation (2-3 min)
|
|
2145
|
-
↓
|
|
2146
|
-
Step 2: Self-Edit (2-3 hours)
|
|
2147
|
-
- Verify facts
|
|
2148
|
-
- Add unique insights
|
|
2149
|
-
- Improve examples
|
|
2150
|
-
- Enhance brand voice
|
|
2151
|
-
↓
|
|
2152
|
-
Step 3: Peer Review (30 min)
|
|
2153
|
-
- Technical accuracy check
|
|
2154
|
-
- Readability assessment
|
|
2155
|
-
- Brand alignment review
|
|
2156
|
-
↓
|
|
2157
|
-
Step 4: SEO Review (15 min)
|
|
2158
|
-
- Keyword optimization check
|
|
2159
|
-
- Internal linking audit
|
|
2160
|
-
- Meta data review
|
|
2161
|
-
↓
|
|
2162
|
-
Step 5: Legal/Compliance (if needed)
|
|
2163
|
-
- Copyright clearance
|
|
2164
|
-
- Claims verification
|
|
2165
|
-
- Regulatory compliance
|
|
2166
|
-
↓
|
|
2167
|
-
Step 6: Final Approval → Publish
|
|
2168
|
-
```
|
|
249
|
+
Generates hero images, diagrams, infographics, and videos using AI generation APIs.
|
|
2169
250
|
|
|
2170
|
-
**
|
|
2171
|
-
-
|
|
2172
|
-
- Subject Matter Expert: Technical review
|
|
2173
|
-
- Editor: Style, brand, flow
|
|
2174
|
-
- SEO Specialist: Optimization review
|
|
2175
|
-
- Legal (for sensitive topics)
|
|
2176
|
-
|
|
2177
|
-
**Minimum Viable Process** (solo creator):
|
|
2178
|
-
1. Generate with AI
|
|
2179
|
-
2. Edit yourself (verify facts, add unique value)
|
|
2180
|
-
3. Run through Grammarly/Hemingway
|
|
2181
|
-
4. SEO check with Yoast/RankMath
|
|
2182
|
-
5. Sleep on it, review next day
|
|
2183
|
-
6. Publish
|
|
251
|
+
- **Tools**: Read, Write, Bash, Task, fal.ai MCP tools
|
|
252
|
+
- **Output**: Image/video files in `content-assets/`, markdown references inserted into articles
|
|
2184
253
|
|
|
2185
|
-
|
|
254
|
+
Supported services:
|
|
2186
255
|
|
|
2187
|
-
|
|
256
|
+
| Service | Type | Best for |
|
|
257
|
+
|---------|------|----------|
|
|
258
|
+
| Gemini 2.5 Flash | Image | Fast, diagrams, general use |
|
|
259
|
+
| Imagen 3 | Image | Premium quality heroes |
|
|
260
|
+
| DALL-E 3 | Image | Creative, artistic |
|
|
261
|
+
| GPT Image 1.5 | Image | Text-heavy visuals |
|
|
262
|
+
| FLUX 2 Pro | Image | Detailed illustrations |
|
|
263
|
+
| Veo 3 | Video | Product demos, tutorials |
|
|
264
|
+
| PaperBanana | Research | Academic diagrams, statistical plots |
|
|
265
|
+
| fal.ai (600+ models) | Image/Video | Specialized tasks via MCP |
|
|
2188
266
|
|
|
2189
|
-
|
|
267
|
+
Visual types: `image` (hero, illustration), `video`, `infographic` (flowchart, sequence-diagram, data, process, comparison, timeline, architecture), `research-visuals` (diagram, plot, evaluation).
|
|
2190
268
|
|
|
2191
|
-
|
|
2192
|
-
- New content takes 6-12 months to rank organically
|
|
2193
|
-
- Without promotion, even great content goes unseen
|
|
2194
|
-
- Initial traffic signals help SEO
|
|
269
|
+
Prerequisites: at least one API key — `GOOGLE_API_KEY`, `OPENAI_API_KEY`, or `FAL_KEY`.
|
|
2195
270
|
|
|
2196
|
-
|
|
271
|
+
#### `myai-content-production-coordinator`
|
|
2197
272
|
|
|
2198
|
-
|
|
2199
|
-
- [ ] Publish to primary platform (WordPress)
|
|
2200
|
-
- [ ] Share on LinkedIn (personal + company page)
|
|
2201
|
-
- [ ] Tweet announcement thread
|
|
2202
|
-
- [ ] Email subscribers (newsletter)
|
|
2203
|
-
- [ ] Post in relevant Slack/Discord communities
|
|
2204
|
-
- [ ] Share in relevant subreddits (if allowed)
|
|
273
|
+
Orchestrates the full content production pipeline from ideation through writing, visual generation, and publishing. The central skill that ties everything together.
|
|
2205
274
|
|
|
2206
|
-
**
|
|
2207
|
-
-
|
|
2208
|
-
- [ ] Publish to Medium with canonical link
|
|
2209
|
-
- [ ] Submit to relevant newsletters (e.g., JavaScript Weekly)
|
|
275
|
+
- **Tools**: Read, Write, WebSearch, WebFetch, Task (all content skills), Bash, Glob, Grep, AskUserQuestion
|
|
276
|
+
- **Output**: Final article + publish report
|
|
2210
277
|
|
|
2211
|
-
|
|
2212
|
-
- [ ] Email influencers who might share
|
|
2213
|
-
- [ ] Reach out to sites mentioned in article
|
|
2214
|
-
- [ ] Comment on related discussions linking back
|
|
278
|
+
Three operating modes:
|
|
2215
279
|
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
280
|
+
| Mode | Invocation | What it does |
|
|
281
|
+
|------|-----------|-------------|
|
|
282
|
+
| New Content | `"<topic>" [flags]` | Ideation → Write → Visuals → Publish |
|
|
283
|
+
| Enrichment | `--enrich <file.md> [flags]` | Snapshot → Enrich → Visuals → Publish |
|
|
284
|
+
| Batch | `--batch [directory] [flags]` | Process all pending stubs in content-queue/ |
|
|
2221
285
|
|
|
2222
|
-
|
|
2223
|
-
- [ ] Update and reshare quarterly
|
|
2224
|
-
- [ ] Build backlinks through outreach
|
|
2225
|
-
- [ ] Create related content linking back
|
|
286
|
+
The coordinator dispatches these agents in sequence:
|
|
2226
287
|
|
|
2227
|
-
**Distribution Checklist**:
|
|
2228
|
-
```markdown
|
|
2229
|
-
## Content Distribution Checklist
|
|
2230
|
-
|
|
2231
|
-
### Owned Channels (Day 1)
|
|
2232
|
-
- [ ] WordPress blog (primary)
|
|
2233
|
-
- [ ] Email newsletter
|
|
2234
|
-
- [ ] LinkedIn personal profile
|
|
2235
|
-
- [ ] LinkedIn company page
|
|
2236
|
-
- [ ] Twitter
|
|
2237
|
-
- [ ] Facebook page (if relevant)
|
|
2238
|
-
- [ ] Instagram (visual summary)
|
|
2239
|
-
|
|
2240
|
-
### Syndication (Day 1-3)
|
|
2241
|
-
- [ ] Dev.to
|
|
2242
|
-
- [ ] Medium
|
|
2243
|
-
- [ ] Hashnode
|
|
2244
|
-
- [ ] Reddit (relevant subreddits)
|
|
2245
|
-
- [ ] Hacker News (if truly newsworthy)
|
|
2246
|
-
|
|
2247
|
-
### Communities (Day 1-7)
|
|
2248
|
-
- [ ] Slack workspaces
|
|
2249
|
-
- [ ] Discord servers
|
|
2250
|
-
- [ ] Industry forums
|
|
2251
|
-
- [ ] Facebook groups
|
|
2252
|
-
|
|
2253
|
-
### Outreach (Week 1-4)
|
|
2254
|
-
- [ ] Influencer outreach
|
|
2255
|
-
- [ ] Backlink outreach
|
|
2256
|
-
- [ ] Guest post opportunities
|
|
2257
|
-
- [ ] Newsletter submissions
|
|
2258
|
-
|
|
2259
|
-
### Paid Promotion (Optional)
|
|
2260
|
-
- [ ] LinkedIn ads
|
|
2261
|
-
- [ ] Twitter ads
|
|
2262
|
-
- [ ] Reddit ads
|
|
2263
|
-
- [ ] Google Ads (for high-intent keywords)
|
|
2264
288
|
```
|
|
289
|
+
New Content:
|
|
290
|
+
1. INIT Read config files, create session
|
|
291
|
+
2. IDEATE → Task(myai-content-ideation)
|
|
292
|
+
3. VERIFY → Task(myai-proprietary-content-verifier) [batch only]
|
|
293
|
+
4. WRITE → Task(content-writer)
|
|
294
|
+
5. VISUALS → Task(myai-visual-generator)
|
|
295
|
+
6. PUBLISH → Task("wordpress-publisher", "astro-publisher", "docusaurus-publisher", "mintlify-publisher", "payloadcms-publisher")
|
|
296
|
+
7. CLEANUP Remove session, report summary
|
|
2265
297
|
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
- Don't know what's working
|
|
2274
|
-
- Don't optimize underperformers
|
|
2275
|
-
- Don't double down on winners
|
|
2276
|
-
- No data-driven decisions
|
|
298
|
+
Enrichment:
|
|
299
|
+
1. INIT Read config files, create session
|
|
300
|
+
2. SNAPSHOT Copy original article
|
|
301
|
+
3. ENRICH → Task(content-enrichment)
|
|
302
|
+
4. VISUALS → Task(myai-visual-generator)
|
|
303
|
+
5. PUBLISH → Task("wordpress-publisher", "astro-publisher", "docusaurus-publisher", "mintlify-publisher", "payloadcms-publisher")
|
|
304
|
+
6. CLEANUP Remove session, report summary
|
|
2277
305
|
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
Month 3: Optimize → Implement improvements
|
|
2284
|
-
Month 4: Measure impact → Assess ROI
|
|
2285
|
-
Repeat: Continuous improvement cycle
|
|
306
|
+
Batch:
|
|
307
|
+
Discover pending stubs → Sort by priority → Group by mode
|
|
308
|
+
├─ New lane: Ideate × N → Verify → Write approved × N → Assemble × N
|
|
309
|
+
├─ Enrich lane: Snapshot → Enrich × N
|
|
310
|
+
└─ Converge: Visuals × N → Publish × N → Batch report
|
|
2286
311
|
```
|
|
2287
312
|
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
**Traffic Metrics**:
|
|
2291
|
-
- Organic traffic (Google Analytics)
|
|
2292
|
-
- Ranking position (Google Search Console, Ahrefs)
|
|
2293
|
-
- Click-through rate from search
|
|
2294
|
-
- Referral traffic sources
|
|
2295
|
-
|
|
2296
|
-
**Engagement Metrics**:
|
|
2297
|
-
- Time on page
|
|
2298
|
-
- Scroll depth
|
|
2299
|
-
- Bounce rate
|
|
2300
|
-
- Pages per session (internal linking effectiveness)
|
|
2301
|
-
- Social shares
|
|
2302
|
-
|
|
2303
|
-
**Conversion Metrics**:
|
|
2304
|
-
- Email signups
|
|
2305
|
-
- Demo requests
|
|
2306
|
-
- Free trial signups
|
|
2307
|
-
- Content-attributed revenue
|
|
2308
|
-
|
|
2309
|
-
**SEO Metrics**:
|
|
2310
|
-
- Keyword rankings
|
|
2311
|
-
- Backlinks acquired
|
|
2312
|
-
- Domain authority impact
|
|
2313
|
-
|
|
2314
|
-
**Set Up Dashboard**:
|
|
2315
|
-
```
|
|
2316
|
-
Weekly Review (15 min):
|
|
2317
|
-
- Traffic trends
|
|
2318
|
-
- Ranking changes
|
|
2319
|
-
- Conversion performance
|
|
2320
|
-
|
|
2321
|
-
Monthly Review (1 hour):
|
|
2322
|
-
- Deep dive into top performers
|
|
2323
|
-
- Identify underperformers
|
|
2324
|
-
- Plan optimization efforts
|
|
2325
|
-
|
|
2326
|
-
Quarterly Review (3 hours):
|
|
2327
|
-
- Strategic content assessment
|
|
2328
|
-
- ROI analysis
|
|
2329
|
-
- Content strategy adjustments
|
|
2330
|
-
```
|
|
313
|
+
Setup verification: if `brand-config.json`, `product-config.json`, `service-config.json`, or `content-rules.md` are missing, the coordinator prompts you to run the setup skills before proceeding.
|
|
2331
314
|
|
|
2332
315
|
---
|
|
2333
316
|
|
|
2334
|
-
|
|
317
|
+
### Publish (6 skills)
|
|
318
|
+
#### `wordpress-publisher`
|
|
2335
319
|
|
|
2336
|
-
|
|
320
|
+
Publishes to WordPress via REST API with Gutenberg block conversion.
|
|
2337
321
|
|
|
2338
|
-
**
|
|
322
|
+
- **Method**: REST API via MCP tools
|
|
323
|
+
- **Requires**: `WORDPRESS_URL`, `WORDPRESS_USERNAME`, `WORDPRESS_PASSWORD` in `.env`
|
|
324
|
+
- **Output**: Published URL
|
|
2339
325
|
|
|
2340
|
-
|
|
2341
|
-
```markdown
|
|
2342
|
-
---
|
|
2343
|
-
title: "[Action Verb] + [Specific Topic] + [Value/Year]"
|
|
2344
|
-
# Examples: "Master JWT Authentication in 2025"
|
|
2345
|
-
# "Build Real-Time Features with Next.js Server Actions"
|
|
2346
|
-
|
|
2347
|
-
meta_description: "[Problem] → [Solution] → [Unique Value] (150-160 chars)"
|
|
2348
|
-
keywords: "primary keyword, secondary keyword, lsi keywords"
|
|
2349
|
-
---
|
|
326
|
+
#### `payloadcms-publisher`
|
|
2350
327
|
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
## Hook (First 100 words)
|
|
2354
|
-
- Attention-grabbing opening
|
|
2355
|
-
- State the problem clearly
|
|
2356
|
-
- Promise specific value
|
|
2357
|
-
- Include primary keyword
|
|
2358
|
-
|
|
2359
|
-
## Table of Contents
|
|
2360
|
-
- Links to all H2 sections
|
|
2361
|
-
- Improves scannability
|
|
2362
|
-
- Helps SEO
|
|
2363
|
-
|
|
2364
|
-
## Introduction (200-300 words)
|
|
2365
|
-
- Elaborate on the problem
|
|
2366
|
-
- Why this topic matters now
|
|
2367
|
-
- What reader will learn
|
|
2368
|
-
- Credentials/authority
|
|
2369
|
-
|
|
2370
|
-
## Main Content Sections (H2)
|
|
2371
|
-
### Section 1: Foundation
|
|
2372
|
-
- Explain core concepts
|
|
2373
|
-
- Use analogies for clarity
|
|
2374
|
-
- Include visuals/diagrams
|
|
2375
|
-
|
|
2376
|
-
### Section 2: Implementation
|
|
2377
|
-
- Step-by-step instructions
|
|
2378
|
-
- Code examples (tested!)
|
|
2379
|
-
- Screenshots/visuals
|
|
2380
|
-
|
|
2381
|
-
### Section 3: Best Practices
|
|
2382
|
-
- Industry standards
|
|
2383
|
-
- Security considerations
|
|
2384
|
-
- Performance optimization
|
|
2385
|
-
|
|
2386
|
-
### Section 4: Common Mistakes
|
|
2387
|
-
- Pitfalls to avoid
|
|
2388
|
-
- Real-world examples
|
|
2389
|
-
- How to fix/prevent
|
|
2390
|
-
|
|
2391
|
-
### Section 5: Advanced Topics
|
|
2392
|
-
- Deep-dive for experienced readers
|
|
2393
|
-
- Edge cases
|
|
2394
|
-
- Production considerations
|
|
2395
|
-
|
|
2396
|
-
## Conclusion
|
|
2397
|
-
- Summarize key takeaways
|
|
2398
|
-
- Next steps for reader
|
|
2399
|
-
- Related resources
|
|
2400
|
-
|
|
2401
|
-
## Call-to-Action
|
|
2402
|
-
- Clear, specific action
|
|
2403
|
-
- Value proposition
|
|
2404
|
-
- Low barrier to entry
|
|
2405
|
-
|
|
2406
|
-
## Related Articles (Internal Links)
|
|
2407
|
-
- 5-8 relevant internal links
|
|
2408
|
-
- Help with SEO and engagement
|
|
2409
|
-
```
|
|
328
|
+
Publishes to PayloadCMS with Lexical rich text conversion.
|
|
2410
329
|
|
|
2411
|
-
**
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
--word_count 2800 \
|
|
2415
|
-
--template "educational-blog" \
|
|
2416
|
-
--tone "technical but accessible" \
|
|
2417
|
-
--audience "intermediate developers" \
|
|
2418
|
-
--include_code_examples true \
|
|
2419
|
-
--seo_optimized true
|
|
2420
|
-
```
|
|
330
|
+
- **Method**: REST API with Lexical conversion
|
|
331
|
+
- **Requires**: `PAYLOADCMS_URL`, PayloadCMS API credentials in `.env`
|
|
332
|
+
- **Output**: Published URL + document ID
|
|
2421
333
|
|
|
2422
|
-
|
|
334
|
+
#### `astro-publisher`
|
|
2423
335
|
|
|
2424
|
-
|
|
336
|
+
Writes to Astro content collections with schema validation.
|
|
2425
337
|
|
|
2426
|
-
**
|
|
338
|
+
- **Method**: File write to content collection + git commit
|
|
339
|
+
- **Detects**: `astro.config.*` in project root
|
|
340
|
+
- **Output**: File path in content collection
|
|
2427
341
|
|
|
2428
|
-
|
|
2429
|
-
```markdown
|
|
2430
|
-
# [Technology] + [Project/Feature]: Complete Guide
|
|
2431
|
-
|
|
2432
|
-
## What You'll Build
|
|
2433
|
-
- Specific deliverable
|
|
2434
|
-
- Expected outcome
|
|
2435
|
-
- Time estimate
|
|
2436
|
-
- Prerequisites
|
|
2437
|
-
|
|
2438
|
-
## Prerequisites
|
|
2439
|
-
- Required knowledge
|
|
2440
|
-
- Required tools
|
|
2441
|
-
- Environment setup
|
|
2442
|
-
|
|
2443
|
-
## Step 1: [Foundation Step]
|
|
2444
|
-
### What we're doing
|
|
2445
|
-
### Why it matters
|
|
2446
|
-
### Code implementation
|
|
2447
|
-
```javascript
|
|
2448
|
-
// Commented code example
|
|
2449
|
-
```
|
|
2450
|
-
### Verification
|
|
2451
|
-
```bash
|
|
2452
|
-
# Command to verify step worked
|
|
2453
|
-
```
|
|
342
|
+
#### `docusaurus-publisher`
|
|
2454
343
|
|
|
2455
|
-
|
|
2456
|
-
[Repeat structure]
|
|
344
|
+
Publishes docs/blog posts to Docusaurus with automatic sidebar configuration.
|
|
2457
345
|
|
|
2458
|
-
|
|
2459
|
-
-
|
|
2460
|
-
-
|
|
2461
|
-
- Troubleshooting
|
|
346
|
+
- **Method**: File write + sidebar config update + git commit
|
|
347
|
+
- **Detects**: `docusaurus.config.*` in project root
|
|
348
|
+
- **Output**: File path + updated sidebar
|
|
2462
349
|
|
|
2463
|
-
|
|
2464
|
-
- Security
|
|
2465
|
-
- Performance
|
|
2466
|
-
- Scalability
|
|
2467
|
-
- Monitoring
|
|
350
|
+
#### `mintlify-publisher`
|
|
2468
351
|
|
|
2469
|
-
|
|
2470
|
-
- Enhancements
|
|
2471
|
-
- Related tutorials
|
|
2472
|
-
- Documentation
|
|
2473
|
-
```
|
|
352
|
+
Publishes to Mintlify with `mint.json` navigation updates.
|
|
2474
353
|
|
|
2475
|
-
**
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
--word_count 3000 \
|
|
2479
|
-
--template "tutorial" \
|
|
2480
|
-
--include_code_examples true \
|
|
2481
|
-
--frameworks "nodejs,websockets,react" \
|
|
2482
|
-
--difficulty "intermediate" \
|
|
2483
|
-
--include_github_repo true
|
|
2484
|
-
```
|
|
354
|
+
- **Method**: File write + `mint.json` navigation update + git commit
|
|
355
|
+
- **Detects**: `mint.json` in project root
|
|
356
|
+
- **Output**: File path + updated navigation
|
|
2485
357
|
|
|
2486
358
|
---
|
|
2487
359
|
|
|
2488
|
-
|
|
360
|
+
## Directory Structure
|
|
2489
361
|
|
|
2490
|
-
**Use Case**: Feature launches, product updates, company news
|
|
2491
|
-
|
|
2492
|
-
**Structure**:
|
|
2493
|
-
```markdown
|
|
2494
|
-
# [Product Name] [Version/Feature]: [Key Benefit]
|
|
2495
|
-
|
|
2496
|
-
## TL;DR (2-3 sentences)
|
|
2497
|
-
- What's new
|
|
2498
|
-
- Who it's for
|
|
2499
|
-
- How to get started
|
|
2500
|
-
|
|
2501
|
-
## The Problem We're Solving
|
|
2502
|
-
- Customer pain point
|
|
2503
|
-
- Current workarounds
|
|
2504
|
-
- Impact of problem
|
|
2505
|
-
|
|
2506
|
-
## Introducing [Feature Name]
|
|
2507
|
-
- High-level overview
|
|
2508
|
-
- Key capabilities
|
|
2509
|
-
- Visual demo (screenshot/video)
|
|
2510
|
-
|
|
2511
|
-
## How It Works
|
|
2512
|
-
- Step-by-step explanation
|
|
2513
|
-
- Architecture diagram
|
|
2514
|
-
- Technical details (for developer audience)
|
|
2515
|
-
|
|
2516
|
-
## Key Benefits
|
|
2517
|
-
1. **Benefit 1**: Specific impact
|
|
2518
|
-
2. **Benefit 2**: Specific impact
|
|
2519
|
-
3. **Benefit 3**: Specific impact
|
|
2520
|
-
|
|
2521
|
-
## Use Cases
|
|
2522
|
-
### Use Case 1: [Scenario]
|
|
2523
|
-
- Before: [Old way]
|
|
2524
|
-
- After: [New way]
|
|
2525
|
-
- Impact: [Measurable improvement]
|
|
2526
|
-
|
|
2527
|
-
[Repeat for 2-3 use cases]
|
|
2528
|
-
|
|
2529
|
-
## Getting Started
|
|
2530
|
-
- Clear activation steps
|
|
2531
|
-
- Code example
|
|
2532
|
-
- Documentation link
|
|
2533
|
-
|
|
2534
|
-
## What's Next
|
|
2535
|
-
- Roadmap preview
|
|
2536
|
-
- Request for feedback
|
|
2537
|
-
- Community resources
|
|
2538
|
-
|
|
2539
|
-
## FAQ
|
|
2540
|
-
- Pricing impact?
|
|
2541
|
-
- Breaking changes?
|
|
2542
|
-
- Migration guide?
|
|
2543
362
|
```
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
363
|
+
project-root/
|
|
364
|
+
│
|
|
365
|
+
│── brand-config.json ← Company identity (from company-config)
|
|
366
|
+
├── product-config.json ← Products & pricing (from company-config)
|
|
367
|
+
├── service-config.json ← Services & audience (from company-config)
|
|
368
|
+
├── content-rules.md ← Brand voice & style (from content-rules-config)
|
|
369
|
+
├── content-themes.json ← Discovered Themes (grows across ideation runs)
|
|
370
|
+
│
|
|
371
|
+
├── content-queue/ ← Pending content stubs (from ideation)
|
|
372
|
+
│ ├── job20260224_01/
|
|
373
|
+
│ │ ├── topic_one.md ← Stub with frontmatter (status: pending)
|
|
374
|
+
│ │ └── topic_two.md
|
|
375
|
+
│ └── manual/ ← Manually created briefs (optional)
|
|
376
|
+
│ └── q1_launch.md
|
|
377
|
+
│
|
|
378
|
+
├── content-output/ ← Finished articles
|
|
379
|
+
│ └── my-article.md
|
|
380
|
+
│
|
|
381
|
+
├── content-assets/ ← Generated visuals
|
|
382
|
+
│ ├── images/
|
|
383
|
+
│ │ └── YYYY-MM-DD/
|
|
384
|
+
│ │ └── hero-description-id.png
|
|
385
|
+
│ └── videos/
|
|
386
|
+
│ └── YYYY-MM-DD/
|
|
387
|
+
│ └── video-description-id.mp4
|
|
388
|
+
│
|
|
389
|
+
├── .content-session/ ← Ephemeral working state (cleaned up after run)
|
|
390
|
+
│ ├── config.json
|
|
391
|
+
│ ├── ideation.md
|
|
392
|
+
│ ├── plan.md
|
|
393
|
+
│ ├── draft.md
|
|
394
|
+
│ ├── visual-report.md
|
|
395
|
+
│ └── final-meta.json
|
|
396
|
+
│
|
|
397
|
+
└── skills/
|
|
398
|
+
├── company-config/SKILL.md ← Setup
|
|
399
|
+
├── content-rules-config/SKILL.md ← Setup
|
|
400
|
+
├── myai-content-ideation/SKILL.md ← Pre-Production
|
|
401
|
+
├── myai-proprietary-content-verifier/SKILL.md ← Pre-Production
|
|
402
|
+
├── content-enrichment/SKILL.md ← Content Maintenance skill pack
|
|
403
|
+
├── myai-visual-generator/SKILL.md ← Production
|
|
404
|
+
├── content-writer/SKILL.md ← Production
|
|
405
|
+
├── myai-content-production-coordinator/SKILL.md ← Production
|
|
406
|
+
├── myai-wordpress-publisher.md ← Publishing
|
|
407
|
+
├── myai-payloadcms-publisher.md ← Publishing
|
|
408
|
+
├── myai-astro-publisher.md ← Publishing
|
|
409
|
+
├── myai-docusaurus-publisher.md ← Publishing
|
|
410
|
+
└── myai-mintlify-publisher.md ← Publishing
|
|
411
|
+
└── myai-configurator/ ← Configurator skill pack
|
|
412
|
+
├── SKILL.md
|
|
413
|
+
├── content-creation-configurator/SKILL.md
|
|
414
|
+
└── content-maintenance-configurator/SKILL.md
|
|
2553
415
|
```
|
|
2554
416
|
|
|
2555
417
|
---
|
|
2556
418
|
|
|
2557
|
-
|
|
419
|
+
## Configuration Files
|
|
2558
420
|
|
|
2559
|
-
|
|
421
|
+
| File | Created by | Consumed by |
|
|
422
|
+
|------|-----------|-------------|
|
|
423
|
+
| `brand-config.json` | company-config | All content skills |
|
|
424
|
+
| `product-config.json` | company-config | content-writer, content-ideation, coordinator |
|
|
425
|
+
| `service-config.json` | company-config | content-writer, content-ideation, coordinator |
|
|
426
|
+
| `content-rules.md` | content-rules-config | content-writer, coordinator, content-enrichment (maintenance pack) |
|
|
427
|
+
| `content-themes.json` | myai-content-ideation | coordinator, content-writer (grows across runs) |
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Content Queue Format
|
|
432
|
+
|
|
433
|
+
The `content-queue/` directory holds stubs — lightweight briefs that the coordinator processes.
|
|
434
|
+
|
|
435
|
+
### New Content Stub (produced by ideation)
|
|
2560
436
|
|
|
2561
|
-
**Structure**:
|
|
2562
437
|
```markdown
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
-
|
|
2578
|
-
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
### Metrics (use real numbers)
|
|
2586
|
-
- [Metric 1]: X% improvement
|
|
2587
|
-
- [Metric 2]: $X saved/earned
|
|
2588
|
-
- [Metric 3]: X time saved
|
|
2589
|
-
|
|
2590
|
-
## Customer Testimonial
|
|
2591
|
-
> "Authentic quote highlighting value"
|
|
2592
|
-
> — [Name, Title, Company]
|
|
2593
|
-
|
|
2594
|
-
## Key Takeaways
|
|
2595
|
-
- Lessons learned
|
|
2596
|
-
- Best practices
|
|
2597
|
-
- Advice for others
|
|
2598
|
-
|
|
2599
|
-
## Implementation Timeline
|
|
2600
|
-
[Visual timeline showing milestones]
|
|
2601
|
-
|
|
2602
|
-
## Call-to-Action
|
|
2603
|
-
- Similar companies: start here
|
|
2604
|
-
- Different scenario: talk to sales
|
|
2605
|
-
```
|
|
2606
|
-
|
|
2607
|
-
**AI Generation Command**:
|
|
2608
|
-
```bash
|
|
2609
|
-
/content-writer "How Acme Corp Reduced Auth Errors by 94% with Our JWT Platform" \
|
|
2610
|
-
--word_count 1500 \
|
|
2611
|
-
--template "case-study" \
|
|
2612
|
-
--include_metrics true \
|
|
2613
|
-
--include_testimonials true \
|
|
2614
|
-
--tone "professional and data-driven"
|
|
2615
|
-
```
|
|
2616
|
-
|
|
438
|
+
---
|
|
439
|
+
title: "Article Title or Topic"
|
|
440
|
+
mode: new
|
|
441
|
+
content_type: blog-post
|
|
442
|
+
status: pending
|
|
443
|
+
priority: normal
|
|
444
|
+
tone: professional
|
|
445
|
+
word_count: 1500
|
|
446
|
+
audience: "developers"
|
|
447
|
+
strategy: "Gap Analysis"
|
|
448
|
+
keywords:
|
|
449
|
+
- "primary keyword"
|
|
450
|
+
- "secondary keyword"
|
|
451
|
+
references:
|
|
452
|
+
- "https://source1.com"
|
|
453
|
+
- "https://source2.com"
|
|
454
|
+
goals:
|
|
455
|
+
- "Primary goal for this article"
|
|
456
|
+
visuals: true
|
|
457
|
+
publish: wordpress
|
|
458
|
+
publish_status: draft
|
|
2617
459
|
---
|
|
2618
460
|
|
|
2619
|
-
|
|
461
|
+
## Theme Context
|
|
2620
462
|
|
|
2621
|
-
|
|
463
|
+
[Description of the strategic angle — from the ideation Theme]
|
|
2622
464
|
|
|
2623
|
-
|
|
2624
|
-
```markdown
|
|
2625
|
-
# [Contrarian/Surprising Take] on [Industry Topic]
|
|
2626
|
-
|
|
2627
|
-
## Hook (First 2 sentences)
|
|
2628
|
-
- Surprising statement
|
|
2629
|
-
- Challenge conventional wisdom
|
|
2630
|
-
- Ask provocative question
|
|
2631
|
-
|
|
2632
|
-
## Personal Story (200 words)
|
|
2633
|
-
- Real experience
|
|
2634
|
-
- Vulnerability
|
|
2635
|
-
- Lesson learned
|
|
2636
|
-
|
|
2637
|
-
## The Insight
|
|
2638
|
-
- What you learned
|
|
2639
|
-
- Why it matters
|
|
2640
|
-
- Data to support
|
|
2641
|
-
|
|
2642
|
-
## Practical Application
|
|
2643
|
-
- How readers can apply
|
|
2644
|
-
- Step-by-step advice
|
|
2645
|
-
- Pitfalls to avoid
|
|
2646
|
-
|
|
2647
|
-
## Discussion Prompt
|
|
2648
|
-
- Ask readers for their experience
|
|
2649
|
-
- Encourage comments
|
|
2650
|
-
- Community building
|
|
2651
|
-
|
|
2652
|
-
## Call-to-Action (Optional)
|
|
2653
|
-
- Keep it soft on LinkedIn
|
|
2654
|
-
- Offer value, not sales
|
|
2655
|
-
```
|
|
465
|
+
## Reference Material
|
|
2656
466
|
|
|
2657
|
-
|
|
2658
|
-
```bash
|
|
2659
|
-
/content-writer "Why I Stopped Using Sessions and Went All-In on JWTs (And Why You Shouldn't)" \
|
|
2660
|
-
--word_count 1200 \
|
|
2661
|
-
--template "linkedin-article" \
|
|
2662
|
-
--tone "conversational and personal" \
|
|
2663
|
-
--include_story true \
|
|
2664
|
-
--audience "technical decision makers"
|
|
467
|
+
[Annotated reference URLs from the Theme]
|
|
2665
468
|
```
|
|
2666
469
|
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
### Email Newsletter Template
|
|
2670
|
-
|
|
2671
|
-
**Use Case**: Weekly/monthly subscriber updates, content roundup
|
|
470
|
+
### Enrichment Brief
|
|
2672
471
|
|
|
2673
|
-
**Structure**:
|
|
2674
472
|
```markdown
|
|
2675
|
-
Subject: [Benefit-driven subject line] (45-65 chars)
|
|
2676
|
-
Preview: [Compelling preview text] (100 chars)
|
|
2677
|
-
|
|
2678
|
-
---
|
|
2679
|
-
|
|
2680
|
-
Hey [First Name],
|
|
2681
|
-
|
|
2682
|
-
## Opening (Personal Connection)
|
|
2683
|
-
- Brief personal note
|
|
2684
|
-
- Current event/trend
|
|
2685
|
-
- Transition to value
|
|
2686
|
-
|
|
2687
|
-
## Main Content
|
|
2688
|
-
### [Topic 1]: [Headline]
|
|
2689
|
-
[150-word summary with key takeaway]
|
|
2690
|
-
[Read more →](link)
|
|
2691
|
-
|
|
2692
|
-
### [Topic 2]: [Headline]
|
|
2693
|
-
[150-word summary]
|
|
2694
|
-
[Read more →](link)
|
|
2695
|
-
|
|
2696
|
-
### [Topic 3]: [Headline]
|
|
2697
|
-
[150-word summary]
|
|
2698
|
-
[Read more →](link)
|
|
2699
|
-
|
|
2700
|
-
## Quick Tips
|
|
2701
|
-
- Tip 1
|
|
2702
|
-
- Tip 2
|
|
2703
|
-
- Tip 3
|
|
2704
|
-
|
|
2705
|
-
## Resources
|
|
2706
|
-
- [Resource 1](link)
|
|
2707
|
-
- [Resource 2](link)
|
|
2708
|
-
|
|
2709
|
-
## Call-to-Action
|
|
2710
|
-
[Single, clear CTA]
|
|
2711
|
-
|
|
2712
473
|
---
|
|
474
|
+
title: "Refresh Kubernetes Security Guide"
|
|
475
|
+
mode: enrich
|
|
476
|
+
status: pending
|
|
477
|
+
priority: normal
|
|
478
|
+
source_file: "content-output/kubernetes-security-guide.md"
|
|
479
|
+
enrich:
|
|
480
|
+
- update-stats
|
|
481
|
+
- add-references
|
|
482
|
+
- add-faq
|
|
483
|
+
visuals: true
|
|
484
|
+
publish: wordpress
|
|
485
|
+
publish_status: draft
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Enrichment Notes
|
|
489
|
+
|
|
490
|
+
[Specific instructions for what to update or add]
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### Manual Brief
|
|
494
|
+
|
|
495
|
+
Same format as a new content stub. Place in `content-queue/manual/` or any subdirectory. The `strategy` field is optional for manual briefs.
|
|
496
|
+
|
|
497
|
+
### Frontmatter Fields
|
|
498
|
+
|
|
499
|
+
| Field | Required | Purpose |
|
|
500
|
+
|-------|----------|---------|
|
|
501
|
+
| `title` | Yes | Topic (new) or description (enrich) |
|
|
502
|
+
| `status` | Yes | `pending`, `in-progress`, `complete`, `failed`, `rejected` |
|
|
503
|
+
| `mode` | No | `new` or `enrich` (default: `new`) |
|
|
504
|
+
| `content_type` | No | blog-post, technical-tutorial, how-to-guide, listicle, comparison-guide, case-study |
|
|
505
|
+
| `priority` | No | `high` > `normal` > `low` (default: `normal`) |
|
|
506
|
+
| `tone` | No | professional, casual, technical, conversational, academic |
|
|
507
|
+
| `word_count` | No | Target length (default: 1500) |
|
|
508
|
+
| `audience` | No | Target reader demographic |
|
|
509
|
+
| `strategy` | No | Ideation strategy from Theme |
|
|
510
|
+
| `keywords` | No | Primary and secondary keywords |
|
|
511
|
+
| `references` | No | URLs the ideation phase should consult |
|
|
512
|
+
| `goals` | No | Specific objectives for this article |
|
|
513
|
+
| `visuals` | No | `true`/`false` (default: `true`) |
|
|
514
|
+
| `publish` | No | wordpress, payloadcms, astro, docusaurus, mintlify |
|
|
515
|
+
| `publish_status` | No | `draft` or `published` (default: `draft`) |
|
|
516
|
+
| `source_file` | Enrich only | Path to existing article to enrich |
|
|
517
|
+
| `enrich` | Enrich only | List: update-stats, add-references, add-faq, add-schema, full |
|
|
518
|
+
| `verification` | Auto | Stamped by the verifier: score, label, decision, reason |
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
## Flags & Parameters
|
|
523
|
+
|
|
524
|
+
### Coordinator Flags
|
|
525
|
+
|
|
526
|
+
| Flag | Purpose | Default |
|
|
527
|
+
|------|---------|---------|
|
|
528
|
+
| `--word-count` | Target article length | 1500 |
|
|
529
|
+
| `--tone` | professional, casual, technical, conversational, academic | professional |
|
|
530
|
+
| `--type` | blog-post, technical-tutorial, how-to-guide, listicle, comparison-guide, case-study | blog-post |
|
|
531
|
+
| `--audience` | Target reader demographic | general |
|
|
532
|
+
| `--keywords` | Comma-separated primary,secondary keywords | auto-detected |
|
|
533
|
+
| `--publish` | wordpress, payloadcms, astro, docusaurus, mintlify | auto-detect |
|
|
534
|
+
| `--publish-status` | draft, published | draft |
|
|
535
|
+
| `--output-dir` | Output directory for final articles | ./content-output |
|
|
536
|
+
| `--no-research` | Skip ideation phase | false |
|
|
537
|
+
| `--no-visuals` | Skip visual generation | false |
|
|
538
|
+
| `--no-publish` | Produce article file only | false |
|
|
539
|
+
| `--threshold` | Min proprietary value score (1–5) for stub approval in batch | 3 |
|
|
540
|
+
| `--batch [dir]` | Process all pending stubs | content-queue/ |
|
|
541
|
+
| `--enrich <file>` | Enrich an existing article | — |
|
|
542
|
+
| `--force` | Skip confirmation prompts (batch) | false |
|
|
543
|
+
| `--parallel` | Max concurrent agents per phase (batch) | 3 |
|
|
544
|
+
| `--verbose` | Detailed progress output | false |
|
|
545
|
+
|
|
546
|
+
### Content Writer Flags
|
|
547
|
+
|
|
548
|
+
| Flag | Purpose | Default |
|
|
549
|
+
|------|---------|---------|
|
|
550
|
+
| `--word-count` | Target article length | 1500 |
|
|
551
|
+
| `--tone` | Voice style | professional |
|
|
552
|
+
| `--type` | Content template | blog-post |
|
|
553
|
+
| `--audience` | Target reader | general |
|
|
554
|
+
| `--keywords` | Primary,secondary keywords | auto-detected |
|
|
555
|
+
| `--publish` | Publish to platform | none |
|
|
556
|
+
| `--output-dir` | Output directory | ./content-output |
|
|
557
|
+
| `--no-research` | Skip ideation | false |
|
|
558
|
+
|
|
559
|
+
### Content Enrichment Flags
|
|
560
|
+
|
|
561
|
+
| Flag | Purpose |
|
|
562
|
+
|------|---------|
|
|
563
|
+
| `--update-stats` | Replace outdated statistics |
|
|
564
|
+
| `--add-references` | Add authoritative sources |
|
|
565
|
+
| `--add-images` | Plan visuals for the article |
|
|
566
|
+
| `--add-faq` | Generate FAQ section |
|
|
567
|
+
| `--add-schema` | Suggest structured data |
|
|
568
|
+
| `--full` | All enrichment types |
|
|
569
|
+
| `--dry-run` | Preview changes without modifying |
|
|
570
|
+
|
|
571
|
+
### Visual Generator Flags
|
|
572
|
+
|
|
573
|
+
| Flag | Purpose | Default |
|
|
574
|
+
|------|---------|---------|
|
|
575
|
+
| `--visual-type` | image, video, infographic, research-visuals | image |
|
|
576
|
+
| `--type` | Sub-type (hero, illustration, flowchart, etc.) | hero |
|
|
577
|
+
| `--service` | Generation service (gemini, imagen, dalle, flux, veo3) | auto |
|
|
578
|
+
| `--quality` | low, medium, high | medium |
|
|
579
|
+
| `--size` | 1024x1024, 1792x1024, 1024x1792 | 1024x1024 |
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
## Usage Examples
|
|
584
|
+
|
|
585
|
+
### New Content — Single Article
|
|
2713
586
|
|
|
2714
|
-
Reply to this email—I read every response.
|
|
2715
|
-
|
|
2716
|
-
[Your Name]
|
|
2717
|
-
|
|
2718
|
-
P.S. [Compelling postscript with additional value or urgency]
|
|
2719
|
-
```
|
|
2720
|
-
|
|
2721
|
-
**AI Generation Command**:
|
|
2722
587
|
```bash
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
--template "email-newsletter" \
|
|
2726
|
-
--tone "friendly and conversational" \
|
|
2727
|
-
--include_cta true
|
|
2728
|
-
```
|
|
2729
|
-
|
|
2730
|
-
---
|
|
2731
|
-
|
|
2732
|
-
## Multi-Channel Strategy
|
|
2733
|
-
|
|
2734
|
-
### The Hub-and-Spoke Content Model
|
|
2735
|
-
|
|
2736
|
-
**Concept**: Create one comprehensive "hub" piece, then distribute "spoke" pieces across channels.
|
|
2737
|
-
|
|
2738
|
-
```
|
|
2739
|
-
[Hub: Blog Post]
|
|
2740
|
-
2,500-word guide
|
|
2741
|
-
|
|
|
2742
|
-
__________________|__________________
|
|
2743
|
-
| | | | |
|
|
2744
|
-
LinkedIn Twitter YouTube Email Reddit
|
|
2745
|
-
Article Thread Video Newsletter Post
|
|
2746
|
-
(1,200w) (10 tweets) (8 min) (500w) (800w)
|
|
2747
|
-
```
|
|
2748
|
-
|
|
2749
|
-
### Example: JWT Authentication Guide
|
|
2750
|
-
|
|
2751
|
-
**Hub Content** (WordPress Blog):
|
|
2752
|
-
- **Title**: "Complete Guide to JWT Authentication in 2025"
|
|
2753
|
-
- **Length**: 2,800 words
|
|
2754
|
-
- **Purpose**: SEO, comprehensive resource, canonical source
|
|
2755
|
-
- **Format**: Long-form educational content with code examples
|
|
588
|
+
# Full pipeline: ideation → write → visuals → publish
|
|
589
|
+
/myai-content-production-coordinator "Kubernetes Best Practices for Production"
|
|
2756
590
|
|
|
2757
|
-
|
|
591
|
+
# Technical tutorial with custom settings
|
|
592
|
+
/myai-content-production-coordinator "Building a RAG Pipeline" \
|
|
593
|
+
--word-count=2500 --type=technical-tutorial --tone=technical
|
|
2758
594
|
|
|
2759
|
-
|
|
2760
|
-
-
|
|
2761
|
-
-
|
|
2762
|
-
- **Angle**: Business value, security ROI
|
|
2763
|
-
- **Audience**: CTOs, engineering managers
|
|
2764
|
-
- **CTA**: Link to full guide on blog
|
|
595
|
+
# Write only — no visuals or publishing
|
|
596
|
+
/myai-content-production-coordinator "React Server Components" \
|
|
597
|
+
--no-visuals --no-publish
|
|
2765
598
|
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
focusing on security mistakes and business impact. Include
|
|
2770
|
-
real examples of security breaches and their cost."
|
|
599
|
+
# Publish to WordPress as draft
|
|
600
|
+
/myai-content-production-coordinator "Docker Security Guide" \
|
|
601
|
+
--publish=wordpress --publish-status=draft
|
|
2771
602
|
```
|
|
2772
603
|
|
|
2773
|
-
|
|
2774
|
-
- **Length**: 12 tweets
|
|
2775
|
-
- **Angle**: Quick tips and insights
|
|
2776
|
-
- **Audience**: Developers, tech Twitter
|
|
2777
|
-
- **CTA**: Final tweet links to blog
|
|
604
|
+
### Enrichment
|
|
2778
605
|
|
|
2779
606
|
```bash
|
|
2780
|
-
#
|
|
2781
|
-
|
|
2782
|
-
Each tweet should have one key insight.
|
|
2783
|
-
Tweet 1: Hook that grabs attention
|
|
2784
|
-
Tweets 2-11: Specific, actionable tips
|
|
2785
|
-
Tweet 12: CTA to read full guide"
|
|
2786
|
-
```
|
|
2787
|
-
|
|
2788
|
-
**Example Thread**:
|
|
2789
|
-
```
|
|
2790
|
-
🔐 Thread: 12 JWT Authentication Insights Every Developer Should Know
|
|
2791
|
-
|
|
2792
|
-
1/ JWTs are NOT encrypted. They're BASE64-ENCODED.
|
|
2793
|
-
|
|
2794
|
-
Anyone can decode your JWT and read the payload.
|
|
2795
|
-
|
|
2796
|
-
Never store sensitive data (SSNs, passwords, credit cards) in JWTs.
|
|
2797
|
-
|
|
2798
|
-
2/ Use short expiration times.
|
|
2799
|
-
|
|
2800
|
-
Access tokens: 15-30 minutes MAX
|
|
2801
|
-
Refresh tokens: 7 days MAX
|
|
2802
|
-
|
|
2803
|
-
Longer = bigger security risk. There's no excuse for 24-hour access tokens.
|
|
2804
|
-
|
|
2805
|
-
3/ The "none" algorithm vulnerability.
|
|
2806
|
-
|
|
2807
|
-
Some JWT libraries accept {"alg": "none"}, bypassing signature verification.
|
|
607
|
+
# Full enrichment: stats, references, FAQ, schema → visuals → publish
|
|
608
|
+
/myai-content-production-coordinator --enrich content-output/old-article.md --full
|
|
2808
609
|
|
|
2809
|
-
|
|
610
|
+
# Selective: update stats and add references only
|
|
611
|
+
/myai-content-production-coordinator --enrich content-output/old-article.md \
|
|
612
|
+
--update-stats --add-references
|
|
2810
613
|
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
Read the full article: [link]
|
|
2816
|
-
|
|
2817
|
-
What JWT mistakes have you made? Reply and let me know! 👇
|
|
2818
|
-
```
|
|
2819
|
-
|
|
2820
|
-
#### 3. YouTube Video Script
|
|
2821
|
-
- **Title**: "JWT Authentication Explained in 10 Minutes"
|
|
2822
|
-
- **Length**: 8-10 minute video
|
|
2823
|
-
- **Angle**: Visual explanation with diagrams
|
|
2824
|
-
- **Audience**: Visual learners, YouTube audience
|
|
2825
|
-
- **CTA**: Description links to blog and code repo
|
|
2826
|
-
|
|
2827
|
-
```bash
|
|
2828
|
-
# Generate video script
|
|
2829
|
-
User: "Create a 10-minute YouTube video script explaining JWT authentication.
|
|
2830
|
-
Include:
|
|
2831
|
-
- Visual hook (first 30 seconds)
|
|
2832
|
-
- Clear explanation with diagram callouts
|
|
2833
|
-
- Live code demo
|
|
2834
|
-
- Common mistakes
|
|
2835
|
-
- CTA to blog for code examples"
|
|
614
|
+
# Enrich without visuals or publishing
|
|
615
|
+
/myai-content-production-coordinator --enrich content-output/guide.md \
|
|
616
|
+
--add-faq --no-visuals --no-publish
|
|
2836
617
|
```
|
|
2837
618
|
|
|
2838
|
-
|
|
2839
|
-
- **Subject**: "The JWT Guide You've Been Waiting For"
|
|
2840
|
-
- **Length**: 500 words
|
|
2841
|
-
- **Angle**: Subscriber-exclusive insights
|
|
2842
|
-
- **CTA**: Read full guide for code examples
|
|
619
|
+
### Batch Mode
|
|
2843
620
|
|
|
2844
621
|
```bash
|
|
2845
|
-
#
|
|
2846
|
-
|
|
2847
|
-
Focus on the 3 most important takeaways.
|
|
2848
|
-
Conversational tone, include CTA to read full article for code examples."
|
|
2849
|
-
```
|
|
622
|
+
# Process default content-queue/ directory
|
|
623
|
+
/myai-content-production-coordinator --batch
|
|
2850
624
|
|
|
2851
|
-
|
|
2852
|
-
-
|
|
2853
|
-
- **Purpose**: Reach developer audience on Dev.to
|
|
2854
|
-
- **SEO**: Canonical link prevents duplicate content issues
|
|
625
|
+
# Custom queue directory
|
|
626
|
+
/myai-content-production-coordinator --batch ./briefs/q1-2026/
|
|
2855
627
|
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
/devto-publisher "complete-guide-jwt-authentication.md" \
|
|
2859
|
-
--canonical "https://yourblog.com/complete-guide-jwt-authentication"
|
|
628
|
+
# Skip confirmation, verbose output, no visuals
|
|
629
|
+
/myai-content-production-coordinator --batch --force --verbose --no-visuals
|
|
2860
630
|
```
|
|
2861
631
|
|
|
2862
|
-
|
|
2863
|
-
- **Title**: "JWT Implementation Reference"
|
|
2864
|
-
- **Length**: 1,500 words (technical deep-dive)
|
|
2865
|
-
- **Angle**: Quick reference for developers
|
|
2866
|
-
- **Purpose**: Support documentation
|
|
632
|
+
### Using Skills Directly
|
|
2867
633
|
|
|
2868
634
|
```bash
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
--sidebar-position 2
|
|
2872
|
-
```
|
|
2873
|
-
|
|
2874
|
-
### Content Distribution Timeline
|
|
2875
|
-
|
|
2876
|
-
**Week 1: Launch Week**
|
|
2877
|
-
- Day 1: Publish to WordPress (canonical)
|
|
2878
|
-
- Day 1: Share LinkedIn article
|
|
2879
|
-
- Day 1: Post Twitter thread
|
|
2880
|
-
- Day 2: Send email newsletter
|
|
2881
|
-
- Day 2: Publish to Dev.to
|
|
2882
|
-
- Day 3: Publish to documentation
|
|
2883
|
-
- Day 4: Share to relevant communities
|
|
2884
|
-
|
|
2885
|
-
**Week 2-4: Sustained Promotion**
|
|
2886
|
-
- Reshare on social with new angles
|
|
2887
|
-
- Answer related questions linking back
|
|
2888
|
-
- Reach out for backlinks
|
|
2889
|
-
- Guest post opportunities
|
|
2890
|
-
|
|
2891
|
-
**Ongoing: Content Amplification**
|
|
2892
|
-
- Update quarterly with new information
|
|
2893
|
-
- Create related content linking back
|
|
2894
|
-
- Build topic cluster around JWT authentication
|
|
2895
|
-
|
|
2896
|
-
---
|
|
2897
|
-
|
|
2898
|
-
## Measuring Success
|
|
2899
|
-
|
|
2900
|
-
### Content Marketing KPIs
|
|
2901
|
-
|
|
2902
|
-
#### SEO Metrics
|
|
2903
|
-
|
|
2904
|
-
**Organic Traffic**
|
|
2905
|
-
- **What**: Visitors from search engines
|
|
2906
|
-
- **Goal**: Increase month-over-month
|
|
2907
|
-
- **Benchmark**: 10-30% MoM growth for new content
|
|
2908
|
-
- **Tool**: Google Analytics
|
|
2909
|
-
|
|
2910
|
-
**Keyword Rankings**
|
|
2911
|
-
- **What**: Position in search results for target keywords
|
|
2912
|
-
- **Goal**: Top 3 for primary keywords
|
|
2913
|
-
- **Benchmark**: #1-3 within 6 months for medium-difficulty keywords
|
|
2914
|
-
- **Tool**: Google Search Console, Ahrefs, SEMrush
|
|
2915
|
-
|
|
2916
|
-
**Click-Through Rate (CTR)**
|
|
2917
|
-
- **What**: % of people who click your result in search
|
|
2918
|
-
- **Goal**: Above average for your position
|
|
2919
|
-
- **Benchmark**: Position #1: 30-35%, #2: 15-20%, #3: 10-15%
|
|
2920
|
-
- **Tool**: Google Search Console
|
|
2921
|
-
|
|
2922
|
-
**Backlinks**
|
|
2923
|
-
- **What**: Other sites linking to your content
|
|
2924
|
-
- **Goal**: Earn high-quality backlinks from authoritative sites
|
|
2925
|
-
- **Benchmark**: 5-10 backlinks per article within 6 months
|
|
2926
|
-
- **Tool**: Ahrefs, Moz
|
|
2927
|
-
|
|
2928
|
-
#### Engagement Metrics
|
|
2929
|
-
|
|
2930
|
-
**Time on Page**
|
|
2931
|
-
- **What**: How long visitors spend reading
|
|
2932
|
-
- **Goal**: Above 3 minutes for long-form content
|
|
2933
|
-
- **Benchmark**:
|
|
2934
|
-
- Long-form (2,000+ words): 6-10 minutes
|
|
2935
|
-
- Medium (1,000-2,000 words): 3-6 minutes
|
|
2936
|
-
- Short (500-1,000 words): 1-3 minutes
|
|
2937
|
-
- **Tool**: Google Analytics
|
|
2938
|
-
|
|
2939
|
-
**Scroll Depth**
|
|
2940
|
-
- **What**: How far down the page visitors scroll
|
|
2941
|
-
- **Goal**: 70%+ reach bottom of article
|
|
2942
|
-
- **Benchmark**:
|
|
2943
|
-
- 25% scroll: 85-90% of visitors
|
|
2944
|
-
- 50% scroll: 65-75%
|
|
2945
|
-
- 75% scroll: 45-60%
|
|
2946
|
-
- 100% scroll: 30-45%
|
|
2947
|
-
- **Tool**: Google Analytics (with event tracking)
|
|
2948
|
-
|
|
2949
|
-
**Bounce Rate**
|
|
2950
|
-
- **What**: % of visitors who leave without interacting
|
|
2951
|
-
- **Goal**: Below 60% for blog posts
|
|
2952
|
-
- **Benchmark**:
|
|
2953
|
-
- Excellent: <40%
|
|
2954
|
-
- Good: 40-55%
|
|
2955
|
-
- Average: 55-65%
|
|
2956
|
-
- Poor: >65%
|
|
2957
|
-
- **Tool**: Google Analytics
|
|
2958
|
-
|
|
2959
|
-
**Social Shares**
|
|
2960
|
-
- **What**: Times content is shared on social media
|
|
2961
|
-
- **Goal**: 50+ shares per article
|
|
2962
|
-
- **Benchmark**: Varies by industry, but 100+ shares = viral
|
|
2963
|
-
- **Tool**: ShareThis, AddThis, manual tracking
|
|
2964
|
-
|
|
2965
|
-
#### Conversion Metrics
|
|
2966
|
-
|
|
2967
|
-
**Email Signups**
|
|
2968
|
-
- **What**: Visitors who subscribe to your newsletter
|
|
2969
|
-
- **Goal**: 2-3% conversion rate
|
|
2970
|
-
- **Benchmark**: 1-2% average, 3-5% excellent
|
|
2971
|
-
- **Value**: $1-5 per subscriber (lifetime value)
|
|
2972
|
-
|
|
2973
|
-
**Demo Requests**
|
|
2974
|
-
- **What**: Visitors requesting product demo
|
|
2975
|
-
- **Goal**: 0.5-1% conversion rate
|
|
2976
|
-
- **Benchmark**: B2B SaaS average: 0.5-2%
|
|
2977
|
-
- **Value**: $100-1,000 per demo request
|
|
2978
|
-
|
|
2979
|
-
**Free Trial Signups**
|
|
2980
|
-
- **What**: Visitors starting free trial
|
|
2981
|
-
- **Goal**: 1-3% conversion rate
|
|
2982
|
-
- **Benchmark**: SaaS average: 2-5%
|
|
2983
|
-
- **Value**: 10-30% trial-to-paid conversion
|
|
2984
|
-
|
|
2985
|
-
**Revenue Attribution**
|
|
2986
|
-
- **What**: Sales directly attributed to content
|
|
2987
|
-
- **Goal**: Positive ROI
|
|
2988
|
-
- **Calculation**:
|
|
2989
|
-
```
|
|
2990
|
-
Content ROI = (Revenue - Content Cost) / Content Cost × 100
|
|
2991
|
-
|
|
2992
|
-
Example:
|
|
2993
|
-
Revenue from content: $12,000
|
|
2994
|
-
Content production cost: $2,000
|
|
2995
|
-
ROI = ($12,000 - $2,000) / $2,000 × 100 = 500% ROI
|
|
2996
|
-
```
|
|
2997
|
-
|
|
2998
|
-
### Content Performance Dashboard
|
|
2999
|
-
|
|
3000
|
-
**Create Monthly Report**:
|
|
3001
|
-
|
|
3002
|
-
```markdown
|
|
3003
|
-
## Content Performance Report - [Month]
|
|
3004
|
-
|
|
3005
|
-
### Top Performing Content
|
|
3006
|
-
|
|
3007
|
-
| Title | Traffic | Conversions | Revenue | ROI |
|
|
3008
|
-
|-------|---------|-------------|---------|-----|
|
|
3009
|
-
| JWT Guide | 4,200 | 87 signups | $8,700 | 435% |
|
|
3010
|
-
| OAuth Tutorial | 3,100 | 62 signups | $6,200 | 310% |
|
|
3011
|
-
| SSO Implementation | 2,400 | 31 signups | $3,100 | 155% |
|
|
3012
|
-
|
|
3013
|
-
### Traffic Summary
|
|
3014
|
-
- Total Organic Traffic: 24,500 visits (+18% MoM)
|
|
3015
|
-
- New Users: 18,200 (+22% MoM)
|
|
3016
|
-
- Returning Users: 6,300 (+8% MoM)
|
|
3017
|
-
|
|
3018
|
-
### SEO Rankings
|
|
3019
|
-
- Keywords in Top 3: 23 (+5)
|
|
3020
|
-
- Keywords in Top 10: 67 (+12)
|
|
3021
|
-
- Total Ranking Keywords: 234 (+28)
|
|
3022
|
-
|
|
3023
|
-
### Engagement
|
|
3024
|
-
- Average Time on Page: 7:23 (+1:12)
|
|
3025
|
-
- Bounce Rate: 38% (-8%)
|
|
3026
|
-
- Pages per Session: 2.8 (+0.4)
|
|
3027
|
-
|
|
3028
|
-
### Conversions
|
|
3029
|
-
- Email Signups: 284 (+47)
|
|
3030
|
-
- Demo Requests: 52 (+18)
|
|
3031
|
-
- Free Trials: 23 (+9)
|
|
3032
|
-
- Content-Attributed Revenue: $28,400 (+$6,200)
|
|
3033
|
-
|
|
3034
|
-
### Top Content Opportunities
|
|
3035
|
-
1. "JWT Guide" ranking #4 for primary keyword
|
|
3036
|
-
- Optimization: Add FAQ schema, build 5 backlinks
|
|
3037
|
-
- Potential: +600 visits/month
|
|
3038
|
-
2. "OAuth Tutorial" missing long-tail keywords
|
|
3039
|
-
- Optimization: Add refresh token section
|
|
3040
|
-
- Potential: +300 visits/month
|
|
3041
|
-
```
|
|
3042
|
-
|
|
3043
|
-
### Setting Content Goals
|
|
3044
|
-
|
|
3045
|
-
**SMART Goals Framework**:
|
|
3046
|
-
|
|
3047
|
-
- **Specific**: "Rank #1 for 'jwt authentication tutorial'"
|
|
3048
|
-
- **Measurable**: "Increase organic traffic from 10K to 25K/month"
|
|
3049
|
-
- **Achievable**: Based on competition and resources
|
|
3050
|
-
- **Relevant**: Aligns with business objectives
|
|
3051
|
-
- **Time-Bound**: "Within 6 months"
|
|
3052
|
-
|
|
3053
|
-
**Example Goals**:
|
|
3054
|
-
|
|
3055
|
-
**Quarter 1 2025**:
|
|
3056
|
-
- Publish 12 long-form articles (1 per week)
|
|
3057
|
-
- Achieve 15,000 organic visits/month (+50% from Q4 2024)
|
|
3058
|
-
- Rank in top 3 for 5 primary keywords
|
|
3059
|
-
- Generate 300 email signups
|
|
3060
|
-
- Attributed revenue: $15,000
|
|
3061
|
-
|
|
3062
|
-
**Quarter 2 2025**:
|
|
3063
|
-
- Publish 15 long-form articles (1.25 per week)
|
|
3064
|
-
- Achieve 30,000 organic visits/month (+100% from Q1)
|
|
3065
|
-
- Rank in top 3 for 12 primary keywords
|
|
3066
|
-
- Generate 600 email signups
|
|
3067
|
-
- Attributed revenue: $45,000
|
|
3068
|
-
|
|
3069
|
-
---
|
|
3070
|
-
|
|
3071
|
-
## Case Studies
|
|
3072
|
-
|
|
3073
|
-
### Case Study 1: SaaS Startup - From 0 to 50K Monthly Visitors
|
|
3074
|
-
|
|
3075
|
-
**Company**: TechAuth (fictional but based on real examples)
|
|
3076
|
-
**Industry**: Developer Tools (Authentication API)
|
|
3077
|
-
**Team**: 2 people (founder + content marketer)
|
|
3078
|
-
|
|
3079
|
-
**Challenge**:
|
|
3080
|
-
- New product launch
|
|
3081
|
-
- Zero brand awareness
|
|
3082
|
-
- Competing with established players (Auth0, Okta)
|
|
3083
|
-
- Limited budget ($2,000/month for content)
|
|
635
|
+
# Write an article without the coordinator
|
|
636
|
+
/content-writer "Getting Started with Docker" --tone=conversational
|
|
3084
637
|
|
|
3085
|
-
|
|
638
|
+
# Generate visuals standalone
|
|
639
|
+
/myai-visual-generator "Modern developer workspace" --type=hero
|
|
3086
640
|
|
|
3087
|
-
|
|
3088
|
-
-
|
|
3089
|
-
-
|
|
3090
|
-
- Set up WordPress blog + Docusaurus docs site
|
|
641
|
+
# Generate infographic
|
|
642
|
+
/myai-visual-generator "Service request lifecycle" \
|
|
643
|
+
--visual-type=infographic --type=flowchart
|
|
3091
644
|
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
# Generated 3 articles per week using AI
|
|
3095
|
-
/content-writer "[Topic]" --word_count 2500 --seo_optimized true
|
|
3096
|
-
|
|
3097
|
-
# Human editing: 3-4 hours per article
|
|
3098
|
-
# Publishing: 15 minutes per article (automated)
|
|
3099
|
-
|
|
3100
|
-
Weekly output: 3 articles = 12 hours human time
|
|
645
|
+
# Enrich an article standalone
|
|
646
|
+
/content-enrichment content-output/old-post.md --full
|
|
3101
647
|
```
|
|
3102
648
|
|
|
3103
|
-
**Multi-Platform Distribution**:
|
|
3104
|
-
- WordPress (canonical)
|
|
3105
|
-
- Dev.to (syndicated)
|
|
3106
|
-
- LinkedIn (condensed versions)
|
|
3107
|
-
- Twitter (threads)
|
|
3108
|
-
- Email newsletter (weekly roundup)
|
|
3109
|
-
|
|
3110
|
-
**Month 3-6: Content Scaling**
|
|
3111
|
-
|
|
3112
|
-
Produced:
|
|
3113
|
-
- 48 long-form blog posts (2,000-3,000 words)
|
|
3114
|
-
- 48 Dev.to syndications
|
|
3115
|
-
- 24 LinkedIn articles
|
|
3116
|
-
- 96 Twitter threads
|
|
3117
|
-
- 12 documentation pages
|
|
3118
|
-
|
|
3119
|
-
Time Investment:
|
|
3120
|
-
- AI generation: ~2 hours/week
|
|
3121
|
-
- Human editing: ~15 hours/week
|
|
3122
|
-
- Publishing: ~1 hour/week
|
|
3123
|
-
- Total: ~18 hours/week (vs 80+ hours traditional)
|
|
3124
|
-
|
|
3125
|
-
**Results After 6 Months**:
|
|
3126
|
-
|
|
3127
|
-
| Metric | Month 1 | Month 6 | Change |
|
|
3128
|
-
|--------|---------|---------|--------|
|
|
3129
|
-
| Organic Traffic | 0 | 52,000/month | +∞ |
|
|
3130
|
-
| Email Subscribers | 0 | 2,400 | +∞ |
|
|
3131
|
-
| Free Trials | 0 | 180 | +∞ |
|
|
3132
|
-
| MRR | $0 | $18,000 | +∞ |
|
|
3133
|
-
| Content ROI | N/A | 650% | - |
|
|
3134
|
-
|
|
3135
|
-
**Key Success Factors**:
|
|
3136
|
-
1. **Consistent publishing**: 2-3 articles/week, never missed
|
|
3137
|
-
2. **SEO-first approach**: Targeted commercial keywords
|
|
3138
|
-
3. **Multi-platform distribution**: Reached developers where they are
|
|
3139
|
-
4. **Quality over quantity**: AI draft + human refinement
|
|
3140
|
-
5. **Topic clustering**: Built authority in authentication niche
|
|
3141
|
-
|
|
3142
|
-
**Lessons Learned**:
|
|
3143
|
-
- First 3 months: Little traffic (normal)
|
|
3144
|
-
- Month 4: Organic traffic started increasing
|
|
3145
|
-
- Month 5-6: Exponential growth as content compounded
|
|
3146
|
-
- Best-performing content: Tutorials with code examples
|
|
3147
|
-
- Worst-performing: Opinion pieces without data
|
|
3148
|
-
|
|
3149
649
|
---
|
|
3150
650
|
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
**Company**: CloudCorp (fictional, enterprise security company)
|
|
3154
|
-
**Industry**: Enterprise Software (Cybersecurity)
|
|
3155
|
-
**Team**: 5 people (content team)
|
|
3156
|
-
|
|
3157
|
-
**Challenge**:
|
|
3158
|
-
- Seen as "old school" compared to modern competitors
|
|
3159
|
-
- Low organic traffic despite brand recognition
|
|
3160
|
-
- Content production bottleneck (1 article/month)
|
|
3161
|
-
- Needed to establish thought leadership
|
|
3162
|
-
|
|
3163
|
-
**Before MyAIDev Method**:
|
|
3164
|
-
- 1 article per month (60 hours production time)
|
|
3165
|
-
- 8,000 organic visits/month
|
|
3166
|
-
- Low engagement (5 min avg time on page)
|
|
3167
|
-
- Minimal social shares
|
|
3168
|
-
|
|
3169
|
-
**After Implementing MyAIDev Method**:
|
|
3170
|
-
|
|
3171
|
-
**New Workflow**:
|
|
3172
|
-
```
|
|
3173
|
-
Week 1: Plan editorial calendar with AI assistance
|
|
3174
|
-
Week 2-5: Produce content
|
|
3175
|
-
- AI generates 4 first drafts (2 hours total)
|
|
3176
|
-
- Subject matter experts review and add insights (12 hours)
|
|
3177
|
-
- Content editor refines (8 hours)
|
|
3178
|
-
- SEO specialist optimizes (4 hours)
|
|
3179
|
-
Total: 26 hours for 4 articles (vs 240 hours traditional)
|
|
3180
|
-
```
|
|
3181
|
-
|
|
3182
|
-
**Multi-Platform Strategy**:
|
|
3183
|
-
- Blog posts on website
|
|
3184
|
-
- Executive bylines on LinkedIn
|
|
3185
|
-
- Technical deep-dives on Medium
|
|
3186
|
-
- Whitepapers on gated landing pages
|
|
3187
|
-
- Documentation updates
|
|
3188
|
-
|
|
3189
|
-
**Results After 12 Months**:
|
|
3190
|
-
|
|
3191
|
-
| Metric | Before | After | Change |
|
|
3192
|
-
|--------|--------|-------|--------|
|
|
3193
|
-
| Articles/Month | 1 | 4 | +300% |
|
|
3194
|
-
| Organic Traffic | 8,000 | 85,000 | +963% |
|
|
3195
|
-
| Email Subscribers | 2,100 | 24,000 | +1,043% |
|
|
3196
|
-
| Demo Requests | 15/mo | 120/mo | +700% |
|
|
3197
|
-
| Avg Deal Size | $50K | $75K | +50% |
|
|
3198
|
-
| Content-Attributed Revenue | $180K/yr | $2.4M/yr | +1,233% |
|
|
3199
|
-
|
|
3200
|
-
**Key Success Factors**:
|
|
3201
|
-
1. **Executive involvement**: C-suite contributed unique insights
|
|
3202
|
-
2. **Data-driven content**: Proprietary research and data
|
|
3203
|
-
3. **Long-form depth**: Average 4,000 words (vs 1,500 industry average)
|
|
3204
|
-
4. **SEO mastery**: Targeted enterprise buyer keywords
|
|
3205
|
-
5. **Gated content strategy**: Whitepapers for lead generation
|
|
3206
|
-
|
|
3207
|
-
**ROI Calculation**:
|
|
3208
|
-
```
|
|
3209
|
-
Investment:
|
|
3210
|
-
- MyAIDev Method setup: $2,000
|
|
3211
|
-
- Team time: 26 hours/week × $100/hour × 52 weeks = $135,200
|
|
3212
|
-
- Total: $137,200
|
|
3213
|
-
|
|
3214
|
-
Return:
|
|
3215
|
-
- New revenue attributed to content: $2.4M
|
|
3216
|
-
- ROI: ($2.4M - $137K) / $137K × 100 = 1,651% ROI
|
|
3217
|
-
```
|
|
3218
|
-
|
|
3219
|
-
---
|
|
651
|
+
## Output Format
|
|
3220
652
|
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
### Content Creation Best Practices
|
|
3224
|
-
|
|
3225
|
-
#### 1. **Always Edit AI Content**
|
|
3226
|
-
- **Minimum**: 2-4 hours of editing per 2,500-word article
|
|
3227
|
-
- **Focus Areas**: Factual accuracy, unique insights, brand voice
|
|
3228
|
-
- **Never Publish**: Unedited AI content
|
|
3229
|
-
|
|
3230
|
-
#### 2. **Verify All Technical Claims**
|
|
3231
|
-
- Test code examples
|
|
3232
|
-
- Check statistics and data sources
|
|
3233
|
-
- Cross-reference with official documentation
|
|
3234
|
-
- Have technical experts review
|
|
3235
|
-
|
|
3236
|
-
#### 3. **Add Unique Value**
|
|
3237
|
-
- Proprietary data and research
|
|
3238
|
-
- Real customer examples
|
|
3239
|
-
- Personal insights and experience
|
|
3240
|
-
- Controversial or differentiated opinions
|
|
3241
|
-
|
|
3242
|
-
#### 4. **Optimize for SEO (But Write for Humans)**
|
|
3243
|
-
- Target 1-2% keyword density
|
|
3244
|
-
- Use LSI keywords naturally
|
|
3245
|
-
- Optimize headings and meta data
|
|
3246
|
-
- Internal linking strategy
|
|
3247
|
-
|
|
3248
|
-
#### 5. **Follow Platform Best Practices**
|
|
3249
|
-
- Adapt content length for each platform
|
|
3250
|
-
- Adjust tone and format
|
|
3251
|
-
- Respect platform-specific SEO rules
|
|
3252
|
-
- Use canonical links for syndication
|
|
3253
|
-
|
|
3254
|
-
#### 6. **Implement Review Process**
|
|
3255
|
-
- Self-edit first
|
|
3256
|
-
- Peer review for accuracy
|
|
3257
|
-
- SEO review
|
|
3258
|
-
- Legal/compliance review (when needed)
|
|
3259
|
-
|
|
3260
|
-
#### 7. **Distribute Actively**
|
|
3261
|
-
- Don't "publish and pray"
|
|
3262
|
-
- Multi-platform distribution strategy
|
|
3263
|
-
- Email subscribers
|
|
3264
|
-
- Engage in communities
|
|
3265
|
-
- Outreach for backlinks
|
|
3266
|
-
|
|
3267
|
-
#### 8. **Measure and Iterate**
|
|
3268
|
-
- Track key metrics weekly
|
|
3269
|
-
- Deep analysis monthly
|
|
3270
|
-
- Optimize underperformers
|
|
3271
|
-
- Double down on winners
|
|
3272
|
-
- Continuous improvement
|
|
3273
|
-
|
|
3274
|
-
#### 9. **Build Content Clusters**
|
|
3275
|
-
- Create topic clusters for SEO
|
|
3276
|
-
- Internal linking between related articles
|
|
3277
|
-
- Pillar content + supporting articles
|
|
3278
|
-
- Establish topical authority
|
|
3279
|
-
|
|
3280
|
-
#### 10. **Keep Content Fresh**
|
|
3281
|
-
- Update quarterly (minimum)
|
|
3282
|
-
- Add new information and examples
|
|
3283
|
-
- Refresh statistics and data
|
|
3284
|
-
- Maintain ranking positions
|
|
653
|
+
Final articles are saved with full frontmatter:
|
|
3285
654
|
|
|
655
|
+
```markdown
|
|
3286
656
|
---
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
- [ ] Define target audience personas
|
|
3303
|
-
|
|
3304
|
-
**Analytics Setup**:
|
|
3305
|
-
- [ ] Install Google Analytics 4
|
|
3306
|
-
- [ ] Set up Google Search Console
|
|
3307
|
-
- [ ] Configure goal tracking (email signups, demo requests)
|
|
3308
|
-
- [ ] Create performance dashboard
|
|
3309
|
-
|
|
3310
|
-
### Phase 2: Content Production (Week 2-4)
|
|
3311
|
-
|
|
3312
|
-
**First 3 Articles**:
|
|
3313
|
-
- [ ] Generate first article with AI
|
|
3314
|
-
- [ ] Edit and refine (add unique insights)
|
|
3315
|
-
- [ ] Verify all technical claims
|
|
3316
|
-
- [ ] Optimize for SEO
|
|
3317
|
-
- [ ] Publish to primary platform
|
|
3318
|
-
- [ ] Distribute to secondary platforms
|
|
3319
|
-
- [ ] Repeat for articles 2 and 3
|
|
3320
|
-
|
|
3321
|
-
**Distribution Channels**:
|
|
3322
|
-
- [ ] Set up Dev.to account
|
|
3323
|
-
- [ ] Set up Medium account
|
|
3324
|
-
- [ ] Optimize LinkedIn profile
|
|
3325
|
-
- [ ] Set up email newsletter (Mailchimp/ConvertKit)
|
|
3326
|
-
- [ ] Join relevant communities (Slack, Discord, Reddit)
|
|
3327
|
-
|
|
3328
|
-
### Phase 3: Optimization (Month 2-3)
|
|
3329
|
-
|
|
3330
|
-
**Performance Analysis**:
|
|
3331
|
-
- [ ] Review traffic data (Google Analytics)
|
|
3332
|
-
- [ ] Check keyword rankings (Google Search Console)
|
|
3333
|
-
- [ ] Analyze engagement metrics (time on page, bounce rate)
|
|
3334
|
-
- [ ] Identify top performers and underperformers
|
|
3335
|
-
|
|
3336
|
-
**Optimization**:
|
|
3337
|
-
- [ ] Update underperforming content
|
|
3338
|
-
- [ ] Build backlinks to top content
|
|
3339
|
-
- [ ] Create content clusters
|
|
3340
|
-
- [ ] A/B test headlines and CTAs
|
|
3341
|
-
|
|
3342
|
-
### Phase 4: Scaling (Month 4+)
|
|
3343
|
-
|
|
3344
|
-
**Increase Volume**:
|
|
3345
|
-
- [ ] Increase to 2-3 articles per week
|
|
3346
|
-
- [ ] Experiment with new content formats (video, podcasts)
|
|
3347
|
-
- [ ] Create gated content (whitepapers, ebooks)
|
|
3348
|
-
- [ ] Build email nurture sequences
|
|
3349
|
-
|
|
3350
|
-
**Team Development** (If applicable):
|
|
3351
|
-
- [ ] Train team on MyAIDev Method workflow
|
|
3352
|
-
- [ ] Define roles (AI generation, editing, SEO, distribution)
|
|
3353
|
-
- [ ] Create style guide and brand voice document
|
|
3354
|
-
- [ ] Implement editorial review process
|
|
3355
|
-
|
|
657
|
+
title: [SEO-optimized title]
|
|
658
|
+
meta_description: [150-160 chars]
|
|
659
|
+
slug: [url-friendly]
|
|
660
|
+
tags: [relevant, tags]
|
|
661
|
+
keywords:
|
|
662
|
+
primary: [main keyword]
|
|
663
|
+
secondary: [supporting, keywords]
|
|
664
|
+
hero_image: [path to hero image]
|
|
665
|
+
word_count: [actual count]
|
|
666
|
+
reading_time: [X minutes]
|
|
667
|
+
content_type: [type used]
|
|
668
|
+
theme: [selected Theme title]
|
|
669
|
+
strategy: [ideation strategy used]
|
|
670
|
+
generated_at: [ISO timestamp]
|
|
671
|
+
published_url: [URL, if published]
|
|
3356
672
|
---
|
|
3357
673
|
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
The MyAIDev Method transforms content marketing from a slow, resource-intensive process into a fast, efficient, scalable system.
|
|
674
|
+
# [Title]
|
|
3361
675
|
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
✅ **AI Excels At**: Speed, structure, SEO basics, code examples, repurposing
|
|
3365
|
-
✅ **Humans Are Critical For**: Verification, unique insights, brand voice, strategic decisions
|
|
3366
|
-
✅ **Avoid Pitfalls**: Publishing unedited AI content, trusting factual accuracy, neglecting distribution
|
|
3367
|
-
✅ **Measure Success**: Track SEO, engagement, and conversion metrics
|
|
3368
|
-
✅ **Iterate Continuously**: Optimize based on performance data
|
|
3369
|
-
|
|
3370
|
-
**The Winning Formula**:
|
|
676
|
+
[Full article content with embedded visual references]
|
|
3371
677
|
```
|
|
3372
|
-
AI Generation (Speed)
|
|
3373
|
-
+ Human Refinement (Quality)
|
|
3374
|
-
+ Multi-Platform Distribution (Reach)
|
|
3375
|
-
+ Data-Driven Optimization (Growth)
|
|
3376
|
-
= 10x Content Marketing Results
|
|
3377
|
-
```
|
|
3378
|
-
|
|
3379
|
-
**Next Steps**:
|
|
3380
|
-
|
|
3381
|
-
1. **Install MyAIDev Method**: `npx myaidev-method@latest init --claude`
|
|
3382
|
-
2. **Create Your First Article**: Use the templates in this guide
|
|
3383
|
-
3. **Publish and Distribute**: Multi-platform strategy
|
|
3384
|
-
4. **Measure and Optimize**: Track metrics, iterate continuously
|
|
3385
|
-
|
|
3386
|
-
**Remember**: The best content strategy is the one you can execute consistently. Start small, measure results, and scale what works.
|
|
3387
|
-
|
|
3388
|
-
---
|
|
3389
|
-
|
|
3390
|
-
**Need Help?**
|
|
3391
|
-
- [MyAIDev Method Documentation](https://github.com/myaione/myaidev-method)
|
|
3392
|
-
- [Content Creation Examples](./DEVELOPER_USE_CASES.md)
|
|
3393
|
-
- [Publishing Guide](./PUBLISHING_GUIDE.md)
|
|
3394
|
-
|
|
3395
|
-
---
|
|
3396
|
-
|
|
3397
|
-
**Document Version**: 1.0.0
|
|
3398
|
-
**Last Updated**: 2025-01-13
|
|
3399
|
-
**Author**: MyAIDev Method Team
|