doc: update after adding placeholders guide
This commit is contained in:
parent
5b0bfa56b9
commit
0a7697c2dd
170
ROADMAP.md
170
ROADMAP.md
|
|
@ -15,11 +15,11 @@
|
||||||
|
|
||||||
## 🎯 Current Status
|
## 🎯 Current Status
|
||||||
|
|
||||||
**Phase:** Pre-launch / Full Stack Deployed
|
**Phase:** Pre-launch / Full Stack Deployed
|
||||||
**Sprint:** Placeholder SEO Sprint ⭐ ACTIVE
|
**Sprint:** Placeholder SEO Sprint ⭐ ACTIVE (Track A remaining)
|
||||||
**Focus:** Capture 31K+ monthly placeholder image searches
|
**Focus:** Capture 31K+ monthly placeholder image searches
|
||||||
**Next Milestone:** Landing page `/placeholder-images` + Docs section live
|
**Next Task:** Create landing page `/placeholder-images`
|
||||||
**Last Updated:** January 2, 2026
|
**Last Updated:** January 5, 2026
|
||||||
|
|
||||||
**See:** [19-placeholder-seo-sprint.md](execution/19-placeholder-seo-sprint.md)
|
**See:** [19-placeholder-seo-sprint.md](execution/19-placeholder-seo-sprint.md)
|
||||||
|
|
||||||
|
|
@ -43,70 +43,67 @@
|
||||||
- [x] **Master API key generated**
|
- [x] **Master API key generated**
|
||||||
- [x] **Caddy reverse proxy configured** for all endpoints
|
- [x] **Caddy reverse proxy configured** for all endpoints
|
||||||
- [x] **DNS records added** (api, cdn, storage subdomains)
|
- [x] **DNS records added** (api, cdn, storage subdomains)
|
||||||
- [ ] **Full API testing** (generation, upload, CDN URLs) — planned by Dec 27
|
- [ ] **Full API testing** (generation, upload, CDN URLs) — planned
|
||||||
|
|
||||||
**See:** [18-production-infrastructure.md](execution/18-production-infrastructure.md)
|
**See:** [18-production-infrastructure.md](execution/18-production-infrastructure.md)
|
||||||
|
|
||||||
### DataForSEO Integration (Dec 26, 2025) ⭐ NEW
|
### DataForSEO Integration (Dec 26, 2025)
|
||||||
- [x] **DataForSEO MCP Server connected** to Claude Code
|
- [x] **DataForSEO MCP Server connected** to Claude Code
|
||||||
- [x] **First keyword research completed** — "placeholder images" cluster
|
- [x] **First keyword research completed** — "placeholder images" cluster
|
||||||
- [x] **Research methodology validated** — $0.14 per full research cycle
|
- [x] **Research methodology validated** — $0.14 per full research cycle
|
||||||
- [x] **Content opportunities identified** — 5 articles with clear targets
|
- [x] **Content opportunities identified** — 5 articles with clear targets
|
||||||
|
|
||||||
**See:** [research/seo-keyword-research-placeholder-images.md](research/seo-keyword-research-placeholder-images.md)
|
### Project Knowledge Integration (Dec 29-30, 2025)
|
||||||
|
|
||||||
### Project Knowledge Integration (Dec 29-30, 2025) ⭐ NEW
|
|
||||||
- [x] **BANATIE-CONTENT-INTEGRATION.md** created in Project Knowledge
|
- [x] **BANATIE-CONTENT-INTEGRATION.md** created in Project Knowledge
|
||||||
- Navigation map for banatie-content repository
|
|
||||||
- Multi-agent system (9 agents), content pipeline, research structure
|
|
||||||
- Strategic input channels defined (inbox, Perplexity threads)
|
|
||||||
- [x] **BANATIE-SERVICE-INTEGRATION.md** created in Project Knowledge
|
- [x] **BANATIE-SERVICE-INTEGRATION.md** created in Project Knowledge
|
||||||
- Navigation map for banatie-service technical repository
|
|
||||||
- Monorepo structure, API docs paths, landing components
|
|
||||||
- Production URLs, deployment commands, key differentiators
|
|
||||||
|
|
||||||
**Purpose:** Enable @men to find authoritative information across repositories during strategy sessions.
|
---
|
||||||
|
|
||||||
### Placeholder Niche Discovery (Jan 2, 2026) ⭐ NEW
|
## ✅ Completed: Placeholder SEO Sprint — Tracks B+C (Jan 2-5, 2026)
|
||||||
- [x] **Deep dive research completed** — 31K+ monthly searches discovered
|
|
||||||
|
### Research Findings (Jan 2, 2026)
|
||||||
|
- [x] **Deep dive completed** — 31K+ monthly searches discovered
|
||||||
- [x] **Zero-KD keywords identified** — 10+ keywords with KD 0-5
|
- [x] **Zero-KD keywords identified** — 10+ keywords with KD 0-5
|
||||||
- [x] **Direct user validation found** — r/ClaudeAI quote about MCP for placeholders
|
- [x] **Direct user validation found** — r/ClaudeAI quote about MCP for placeholders
|
||||||
- [x] **Execution plan created** — 19-placeholder-seo-sprint.md
|
- [x] **Execution plan created** — 19-placeholder-seo-sprint.md
|
||||||
|
|
||||||
**See:** [19-placeholder-seo-sprint.md](execution/19-placeholder-seo-sprint.md)
|
### Track C: Homepage Quick Wins ✅ COMPLETE
|
||||||
|
- [x] **Keywords in metadata** — added placeholder-related keywords
|
||||||
|
- [x] **PromptUrlsSection** — updated to mention placeholders first
|
||||||
|
|
||||||
### Known Issues (Minor)
|
### Track B: Docs Section ✅ COMPLETE
|
||||||
- [ ] Healthcheck: containers show "unhealthy" (no curl in images)
|
- [x] **Live URLs docs enhanced** — added placeholder section with examples
|
||||||
- [ ] Cache permission: landing warns about `.next/cache`
|
- [x] **Guides section created** — `/docs/guides/`
|
||||||
|
- [x] **Placeholder Images guide** — `/docs/guides/placeholder-images/`
|
||||||
|
- Templates (general, photorealistic, illustration, etc.)
|
||||||
|
- Dark mode and color control
|
||||||
|
- Common use cases (avatars, heroes, products)
|
||||||
|
- File-based workflow
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔄 Active Sprint: Placeholder SEO Sprint
|
## 🔄 Active: Placeholder SEO Sprint — Track A
|
||||||
|
|
||||||
### Track A: Landing Page `/placeholder-images` (Priority 1)
|
### Track A: Landing Page `/placeholder-images` ⏳ TODO
|
||||||
- [ ] Verify Live URLs support `?width=X&height=Y` parameters
|
|
||||||
- [ ] Create MVP landing page (text-only, Hero + How It Works + Code + CTA)
|
|
||||||
- [ ] Deploy and submit to GSC
|
|
||||||
- [ ] Enhance with visuals and interactive size grid
|
|
||||||
|
|
||||||
**Target:** 14,800+ monthly searches (KD 17-18)
|
**Goal:** Capture 14,800+ monthly searches for core "placeholder image" keyword
|
||||||
|
|
||||||
### Track B: Docs Section `/docs/placeholders/` (Priority 2)
|
**Target Keywords:**
|
||||||
- [ ] Create `/docs/placeholders/` overview page
|
| Keyword | Volume | KD |
|
||||||
- [ ] Create `/docs/placeholders/dark-mode/` (4,400 vol, KD 2) ← HIGHEST PRIORITY
|
|---------|--------|-----|
|
||||||
- [ ] Create `/docs/placeholders/profiles/` (720 vol, KD 0)
|
| placeholder image | 14,800 | 18 |
|
||||||
- [ ] Create `/docs/placeholders/sizes/` (1,000+ vol combined)
|
| image placeholder | 14,800 | 17 |
|
||||||
|
| ai placeholder images | — | — |
|
||||||
|
| placeholder image generator | 480 | 32 |
|
||||||
|
|
||||||
**Target:** Zero-KD keywords for quick wins
|
**Page Structure:**
|
||||||
|
- Hero with instant demo
|
||||||
|
- How It Works (3 steps)
|
||||||
|
- Interactive size grid
|
||||||
|
- Comparison table (vs placehold.co, picsum)
|
||||||
|
- Production bridge CTA
|
||||||
|
|
||||||
### Track C: Homepage Quick Wins (Immediate)
|
**File:** `apps/landing/src/app/(landings)/placeholder-images/page.tsx`
|
||||||
- [ ] Add placeholder keywords to homepage metadata
|
|
||||||
- [ ] Update PromptUrlsSection subtitle to mention placeholders
|
|
||||||
- [ ] Add internal link to `/placeholder-images`
|
|
||||||
|
|
||||||
### Paused (Resume After Sprint)
|
|
||||||
- [ ] ICP interview preparation
|
|
||||||
- [ ] Content marketing articles for dev.to
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -115,40 +112,25 @@
|
||||||
| URL | Purpose | Status |
|
| URL | Purpose | Status |
|
||||||
|-----|---------|--------|
|
|-----|---------|--------|
|
||||||
| https://banatie.app/ | Landing page | ✅ Live |
|
| https://banatie.app/ | Landing page | ✅ Live |
|
||||||
| https://api.banatie.app/ | API service | 🔄 Deployed (testing pending) |
|
| https://banatie.app/docs/guides/placeholder-images | Placeholder guide | ✅ Live |
|
||||||
| https://cdn.banatie.app/ | Image CDN | 🔄 Deployed (testing pending) |
|
| https://api.banatie.app/ | API service | 🔄 Deployed |
|
||||||
| https://storage.banatie.app/ | MinIO Console | 🔄 Deployed (testing pending) |
|
| https://cdn.banatie.app/ | Image CDN | 🔄 Deployed |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📅 Upcoming: Content Marketing Sprint (January 2025)
|
## 📅 Next Up: Content Marketing Sprint (After Placeholder Landing)
|
||||||
|
|
||||||
**Duration:** 2 weeks intensive
|
### SEO-Driven Content (from keyword research)
|
||||||
**Goal:** Establish thought leadership, drive organic traffic
|
|
||||||
|
|
||||||
### SEO-Driven Content (from keyword research) ⭐ NEW
|
| Priority | Content Type | Target Keyword | Volume | KD |
|
||||||
|
|----------|--------------|----------------|--------|-----|
|
||||||
| Priority | Content Type | Target Keyword | Volume | KD | Platform |
|
| 🥇 | Landing page | placeholder images | 14,800 | 18 |
|
||||||
|----------|--------------|----------------|--------|-----|----------|
|
| 🥈 | Dev tutorial | placeholder images api | 90 | 12 |
|
||||||
| 🥇 | Landing page | placeholder images | 14,800 | 32 | banatie.app |
|
| 🥈 | Tutorial | image placeholder html | 320 | 34 |
|
||||||
| 🥇 | Dev tutorial | placeholder images api | 90 | 12 | dev.to + blog |
|
|
||||||
| 🥈 | Listicle | placeholder image generator | 480 | 32 | dev.to + blog |
|
|
||||||
| 🥈 | Tutorial | image placeholder html | 320 | 34 | blog |
|
|
||||||
| 🥉 | Blog post | random image api | 110 | 17 | blog |
|
|
||||||
|
|
||||||
**See:** [research/seo-keyword-research-placeholder-images.md](research/seo-keyword-research-placeholder-images.md)
|
|
||||||
|
|
||||||
### Additional Planned Content
|
### Additional Planned Content
|
||||||
- Personal articles (dev.to, LinkedIn): 2-3 pieces
|
- Personal articles (dev.to, LinkedIn): 2-3 pieces
|
||||||
- Henry persona articles (dev.to, Hashnode): 4-6 pieces
|
- Henry persona articles: 4-6 pieces
|
||||||
- Nina persona (Instagram, creative): ongoing
|
|
||||||
|
|
||||||
### Platforms
|
|
||||||
- dev.to
|
|
||||||
- Hashnode
|
|
||||||
- daily.dev
|
|
||||||
- LinkedIn
|
|
||||||
- Product Hunt (later)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -178,41 +160,23 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### GATE 3: PMF Validation (Target: Q2-Q3 2025)
|
|
||||||
|
|
||||||
**Success criteria:**
|
|
||||||
- $1-2K MRR achieved
|
|
||||||
- <5% monthly churn
|
|
||||||
- Organic word-of-mouth
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📋 Backlog
|
## 📋 Backlog
|
||||||
|
|
||||||
### Technical
|
### Technical
|
||||||
- [ ] Docs page with API examples
|
- [ ] Docs page with API examples
|
||||||
- [ ] Signup flow automation
|
|
||||||
- [ ] MCP Server implementation
|
- [ ] MCP Server implementation
|
||||||
- [ ] SDK TypeScript/Python
|
- [ ] SDK TypeScript/Python
|
||||||
- [ ] CLI tool
|
- [ ] CLI tool
|
||||||
- [ ] Image transformations
|
|
||||||
|
|
||||||
### Marketing
|
### Marketing
|
||||||
- [ ] Reddit r/cursor launch post
|
- [ ] Reddit r/cursor launch post
|
||||||
- [ ] Discord Cursor community engagement
|
|
||||||
- [ ] Product Hunt launch
|
- [ ] Product Hunt launch
|
||||||
- [ ] Case studies
|
- [ ] Case studies
|
||||||
|
|
||||||
### SEO & Content ⭐ NEW
|
### SEO & Content
|
||||||
- [ ] Research additional keyword clusters
|
- [ ] Research additional keyword clusters
|
||||||
- [ ] Expand content-system to cover website pages
|
|
||||||
- [ ] Competitor keyword gap analysis (fal.ai, runware.ai)
|
- [ ] Competitor keyword gap analysis (fal.ai, runware.ai)
|
||||||
|
|
||||||
### Infrastructure
|
|
||||||
- [ ] Healthcheck fix in Dockerfiles
|
|
||||||
- [ ] Self-hosted Umami migration
|
|
||||||
- [ ] Email service integration
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎯 Success Definitions
|
## 🎯 Success Definitions
|
||||||
|
|
@ -220,31 +184,25 @@
|
||||||
### Current Phase Success
|
### Current Phase Success
|
||||||
- ✅ Full stack deployed and working
|
- ✅ Full stack deployed and working
|
||||||
- ✅ Landing page live with good SEO
|
- ✅ Landing page live with good SEO
|
||||||
- ✅ Keyword research methodology validated ⭐ NEW
|
- ✅ Keyword research methodology validated
|
||||||
|
- ✅ Placeholder docs/guide created
|
||||||
|
- ⏳ Placeholder landing page
|
||||||
- ⏳ ICP validated externally
|
- ⏳ ICP validated externally
|
||||||
- ⏳ First paying customers
|
- ⏳ First paying customers
|
||||||
|
|
||||||
### Q1 2025 Success
|
### Q1 2025 Success
|
||||||
- $500-1K MRR
|
- $500-1K MRR
|
||||||
- 10-20 active users
|
- 10-20 active users
|
||||||
- Clear PMF signals
|
- Top-10 rankings for target keywords
|
||||||
- Top-10 rankings for target keywords ⭐ NEW
|
|
||||||
|
|
||||||
### Q2 2025 Success
|
|
||||||
- $2-3K MRR
|
|
||||||
- Sustainable growth
|
|
||||||
- Content marketing working
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Roadmap Owner:** @men + Oleg
|
**Roadmap Owner:** @men + Oleg
|
||||||
**Last Updated:** January 2, 2026
|
**Last Updated:** January 5, 2026
|
||||||
**Next Review:** End of Placeholder SEO Sprint (mid-January)
|
**Next Review:** After placeholder landing page deployment
|
||||||
**Version:** 4.3 (Placeholder SEO Sprint added Jan 2, 2026)
|
**Version:** 4.4 (Sprint progress updated Jan 5, 2026)
|
||||||
|
|
||||||
**Key Documents:**
|
**Key Documents:**
|
||||||
- [19-placeholder-seo-sprint.md](execution/19-placeholder-seo-sprint.md) - Current sprint plan ⭐ ACTIVE
|
- [19-placeholder-seo-sprint.md](execution/19-placeholder-seo-sprint.md) — Current sprint ⭐
|
||||||
- [research/seo-keyword-research-placeholder-images.md](research/seo-keyword-research-placeholder-images.md) - Keyword research
|
- [research/seo-keyword-research-placeholder-images.md](research/seo-keyword-research-placeholder-images.md) — Keyword research
|
||||||
- [18-production-infrastructure.md](execution/18-production-infrastructure.md) - Deployment details
|
- [18-production-infrastructure.md](execution/18-production-infrastructure.md) — Deployment details
|
||||||
- [13-competitive-analysis.md](strategy/13-competitive-analysis.md) - Competitive landscape
|
|
||||||
- [14-icp-segmentation-unified.md](strategy/14-icp-segmentation-unified.md) - Unified ICP segments
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
# Placeholder SEO Sprint
|
# Placeholder SEO Sprint
|
||||||
|
|
||||||
**Date Created:** January 2, 2026
|
**Date Created:** January 2, 2026
|
||||||
**Status:** Active
|
**Status:** Active — Track A remaining
|
||||||
**Priority:** HIGH — Immediate execution
|
**Priority:** HIGH
|
||||||
**Owner:** Oleg
|
**Owner:** Oleg
|
||||||
**Duration:** 2 weeks
|
**Last Updated:** January 5, 2026
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Context
|
## Sprint Summary
|
||||||
|
|
||||||
@spy research uncovered a major SEO opportunity:
|
@spy research uncovered major SEO opportunity:
|
||||||
|
|
||||||
| Metric | Value |
|
| Metric | Value |
|
||||||
|--------|-------|
|
|--------|-------|
|
||||||
| Total search volume | 31,000+/month |
|
| Total search volume | 31,000+/month |
|
||||||
| Zero-KD keywords | 10+ keywords, 9K+ searches |
|
| Zero-KD keywords | 10+ keywords (profile, ios, dark mode) |
|
||||||
| AI competitors | **ZERO** |
|
| AI competitors | **ZERO** |
|
||||||
| Direct user validation | r/ClaudeAI quote about MCP for placeholders |
|
| Direct user validation | r/ClaudeAI quote about MCP for placeholders |
|
||||||
|
|
||||||
|
|
@ -25,418 +25,147 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Two Parallel Tracks
|
## Research Key Findings
|
||||||
|
|
||||||
### Track A: Landing Page `/placeholder-images` (Primary)
|
### Top Keywords by Priority
|
||||||
|
|
||||||
|
| Keyword | Volume | KD | Status |
|
||||||
|
|---------|--------|-----|--------|
|
||||||
|
| placeholder image | 14,800 | 18 | → Landing page |
|
||||||
|
| image placeholder dark | 4,400 | 2 | ✅ Covered in guide |
|
||||||
|
| app placeholder image | 1,900 | 2 | ✅ Covered in guide |
|
||||||
|
| profile placeholder image | 720 | 0 | ✅ Covered in guide |
|
||||||
|
| placeholder image url | 390 | 21 | ✅ Covered in Live URLs docs |
|
||||||
|
|
||||||
|
### Zero-KD Opportunities (all covered in guide)
|
||||||
|
|
||||||
|
- profile placeholder image — 720 vol, KD 0
|
||||||
|
- ios placeholder image — 590 vol, KD 0
|
||||||
|
- loading image placeholder — 170 vol, KD 0
|
||||||
|
- image placeholder dark — 4,400 vol, KD 2
|
||||||
|
- app placeholder image — 1,900 vol, KD 2
|
||||||
|
|
||||||
|
### Direct User Validation
|
||||||
|
|
||||||
|
From r/ClaudeAI:
|
||||||
|
> "right now my instructions are to just do placeholder image in various sizes... I am wondering if there is an mcp that can create or fetch these images for Claude instead."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Execution Status
|
||||||
|
|
||||||
|
### Track A: Landing Page `/placeholder-images` ⏳ TODO
|
||||||
|
|
||||||
**Goal:** Capture 14,800+ monthly searches for core placeholder keywords
|
**Goal:** Capture 14,800+ monthly searches for core placeholder keywords
|
||||||
|
|
||||||
**Target Keywords:**
|
**Target Keywords:**
|
||||||
|
- placeholder image (14,800)
|
||||||
|
- image placeholder (14,800)
|
||||||
|
- ai placeholder images
|
||||||
|
- placeholder image generator
|
||||||
|
- placeholder image url
|
||||||
|
|
||||||
| Keyword | Volume | KD | Priority |
|
**Page Structure:**
|
||||||
|---------|--------|-----|----------|
|
|
||||||
| placeholder image | 14,800 | 18 | 🥇 |
|
|
||||||
| image placeholder | 14,800 | 17 | 🥇 |
|
|
||||||
| image placeholder dark | 4,400 | 2 | 🥇 |
|
|
||||||
| app placeholder image | 1,900 | 2 | 🥈 |
|
|
||||||
| placeholder image url | 390 | 21 | 🥈 |
|
|
||||||
|
|
||||||
### Track B: Docs Section `/docs/placeholders/` (Secondary)
|
|
||||||
|
|
||||||
**Goal:** Capture long-tail keywords, support conversion journey
|
|
||||||
|
|
||||||
**Target Keywords:**
|
|
||||||
|
|
||||||
| Keyword | Volume | KD | Priority |
|
|
||||||
|---------|--------|-----|----------|
|
|
||||||
| profile placeholder image | 720 | 0 | 🥇 |
|
|
||||||
| ios placeholder image | 590 | 0 | 🥇 |
|
|
||||||
| placeholder image css | 720 | 12 | 🥈 |
|
|
||||||
| placeholder image html | 320 | 26 | 🥈 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Track A: Landing Page
|
|
||||||
|
|
||||||
### Page Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
URL: /placeholder-images
|
|
||||||
Title: "AI Placeholder Images — Generate Contextual Placeholders Instantly"
|
|
||||||
H1: "AI Placeholder Images"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Sections:**
|
|
||||||
|
|
||||||
```
|
```
|
||||||
1. HERO
|
1. HERO
|
||||||
├── H1: "AI Placeholder Images"
|
├── H1: "AI Placeholder Images"
|
||||||
├── Subhead: "Generate contextual placeholders instantly. Not random stock photos."
|
├── Subhead: "Generate contextual placeholders instantly"
|
||||||
├── [Interactive demo: prompt input → live result]
|
└── CTA: "Try It Free"
|
||||||
└── CTA: "Try It Free" / "Get API Key"
|
|
||||||
|
|
||||||
2. HOW IT WORKS (3 steps)
|
2. HOW IT WORKS (3 steps)
|
||||||
├── Step 1: Describe what you need
|
|
||||||
├── Step 2: Get instant URL
|
|
||||||
└── Step 3: Use in your code
|
|
||||||
|
|
||||||
3. LIVE URL DEMO
|
3. SIZE GRID (interactive)
|
||||||
├── Code snippet: <img src="...">
|
|
||||||
├── Common sizes selector (avatar, thumbnail, hero, og)
|
|
||||||
└── Copy URL buttons
|
|
||||||
|
|
||||||
4. COMMON SIZES (interactive grid)
|
|
||||||
├── Avatar (200×200)
|
├── Avatar (200×200)
|
||||||
├── Thumbnail (300×200)
|
├── Thumbnail (300×200)
|
||||||
├── Card (400×300)
|
├── Card (400×300)
|
||||||
├── Hero (1200×630)
|
└── Hero (1200×630)
|
||||||
├── Product (600×600)
|
|
||||||
└── [Click to see example + copy URL]
|
|
||||||
|
|
||||||
5. USE CASES
|
4. COMPARISON TABLE
|
||||||
├── Development mockups
|
| placehold.co | Gray boxes |
|
||||||
├── Client presentations
|
| picsum.photos | Random stock |
|
||||||
├── Prototyping
|
| Banatie | AI-generated, contextual |
|
||||||
└── Design systems
|
|
||||||
|
|
||||||
6. COMPARISON TABLE
|
5. PRODUCTION BRIDGE
|
||||||
| Service | Type | Result |
|
└── "Same images work in production"
|
||||||
|---------|------|--------|
|
|
||||||
| placehold.co | Gray boxes | Generic |
|
|
||||||
| picsum.photos | Random stock | Irrelevant |
|
|
||||||
| Banatie | AI-generated | Contextual |
|
|
||||||
|
|
||||||
7. PRODUCTION READY (conversion bridge)
|
6. FOOTER CTA
|
||||||
├── "These aren't just placeholders"
|
|
||||||
├── "Same images work in production"
|
|
||||||
├── "Or upgrade to full generation"
|
|
||||||
└── CTA: "Get Started with Full API"
|
|
||||||
|
|
||||||
8. FOOTER CTA
|
|
||||||
└── Email signup / Get API Key
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### SEO Requirements
|
**File to create:**
|
||||||
|
- `apps/landing/src/app/(landings)/placeholder-images/page.tsx`
|
||||||
**Metadata:**
|
|
||||||
```
|
|
||||||
title: "AI Placeholder Images — Generate Contextual Placeholders | Banatie"
|
|
||||||
description: "Generate AI placeholder images instantly. Not random stock photos — contextual images from your description. Free Live URLs for development."
|
|
||||||
keywords: [
|
|
||||||
"placeholder image",
|
|
||||||
"image placeholder",
|
|
||||||
"ai placeholder images",
|
|
||||||
"placeholder image generator",
|
|
||||||
"placeholder image url",
|
|
||||||
"image placeholder dark",
|
|
||||||
"app placeholder image"
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
**JSON-LD:**
|
|
||||||
- WebPage schema
|
|
||||||
- HowTo schema (3 steps)
|
|
||||||
- Product schema (for rich snippets)
|
|
||||||
|
|
||||||
**Internal Links:**
|
|
||||||
- → /docs/live-urls/
|
|
||||||
- → /docs/placeholders/ (when created)
|
|
||||||
- → /docs/generation/
|
|
||||||
|
|
||||||
### Technical Requirements
|
|
||||||
|
|
||||||
**Before launch, verify Live URLs support:**
|
|
||||||
- [ ] `?width=X&height=Y` parameters
|
|
||||||
- [ ] `?aspectRatio=X:Y` (already exists)
|
|
||||||
- [ ] Dark mode hint in prompt or parameter
|
|
||||||
- [ ] Common preset sizes
|
|
||||||
|
|
||||||
**If missing:** Priority fix before landing page launch.
|
|
||||||
|
|
||||||
### Deliverable
|
|
||||||
|
|
||||||
**MVP Version (Day 1-2):**
|
|
||||||
- Text-only, minimal graphics
|
|
||||||
- Hero + How It Works + Code Example + CTA
|
|
||||||
- Working interactive demo (if Live URLs ready)
|
|
||||||
|
|
||||||
**Enhanced Version (Day 3-5):**
|
|
||||||
- Size grid with examples
|
|
||||||
- Comparison table
|
|
||||||
- Better visuals
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Track B: Docs Section
|
### Track B: Docs Updates ✅ COMPLETE
|
||||||
|
|
||||||
### Structure
|
| Task | Status | Location |
|
||||||
|
|------|--------|----------|
|
||||||
|
| Live URLs — placeholder section | ✅ Done | `/docs/live-urls/` |
|
||||||
|
| Guides section created | ✅ Done | `/docs/guides/` |
|
||||||
|
| Placeholder Images guide | ✅ Done | `/docs/guides/placeholder-images/` |
|
||||||
|
|
||||||
```
|
**Guide covers:**
|
||||||
/docs/placeholders/ ← Main page (overview)
|
- Quick Start with Live URLs
|
||||||
/docs/placeholders/sizes/ ← Size-specific examples
|
- Templates (general, photorealistic, illustration, etc.)
|
||||||
/docs/placeholders/dark-mode/ ← Dark mode placeholders (4,400 vol, KD 2)
|
- Dark mode and color control
|
||||||
/docs/placeholders/profiles/ ← Avatar/profile placeholders (720 vol, KD 0)
|
- Common use cases (avatars, heroes, products, testimonials)
|
||||||
```
|
- File-based workflow (API download)
|
||||||
|
|
||||||
### Page 1: `/docs/placeholders/` (Overview)
|
|
||||||
|
|
||||||
**Target:** "placeholder image api", "ai placeholder generator"
|
|
||||||
|
|
||||||
**Content:**
|
|
||||||
```markdown
|
|
||||||
# Placeholder Images
|
|
||||||
|
|
||||||
Generate contextual placeholder images with a single URL.
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
[Live URL example]
|
|
||||||
|
|
||||||
## Why AI Placeholders?
|
|
||||||
- Relevant to your content (not random)
|
|
||||||
- Production-ready quality
|
|
||||||
- Instant via URL
|
|
||||||
|
|
||||||
## Common Use Cases
|
|
||||||
- Development mockups
|
|
||||||
- Client demos
|
|
||||||
- Design prototypes
|
|
||||||
|
|
||||||
## Next Steps
|
|
||||||
- [Sizes & Dimensions →](/docs/placeholders/sizes/)
|
|
||||||
- [Dark Mode Placeholders →](/docs/placeholders/dark-mode/)
|
|
||||||
- [Profile Avatars →](/docs/placeholders/profiles/)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Page 2: `/docs/placeholders/dark-mode/`
|
|
||||||
|
|
||||||
**Target:** "image placeholder dark" (4,400 vol, KD 2) ← HIGHEST PRIORITY
|
|
||||||
|
|
||||||
**Content:**
|
|
||||||
```markdown
|
|
||||||
# Dark Mode Placeholder Images
|
|
||||||
|
|
||||||
Generate placeholders optimized for dark mode interfaces.
|
|
||||||
|
|
||||||
## How to Request Dark Mode
|
|
||||||
[URL with dark mode hint]
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
[Grid of dark mode examples]
|
|
||||||
|
|
||||||
## Tips for Dark UI
|
|
||||||
- Use darker backgrounds
|
|
||||||
- Mention "dark theme" in prompt
|
|
||||||
- Avoid bright colors
|
|
||||||
```
|
|
||||||
|
|
||||||
### Page 3: `/docs/placeholders/profiles/`
|
|
||||||
|
|
||||||
**Target:** "profile placeholder image" (720 vol, KD 0) ← ZERO DIFFICULTY
|
|
||||||
|
|
||||||
**Content:**
|
|
||||||
```markdown
|
|
||||||
# Profile & Avatar Placeholders
|
|
||||||
|
|
||||||
Generate realistic avatar placeholders for user profiles.
|
|
||||||
|
|
||||||
## Standard Sizes
|
|
||||||
- 48×48 (small)
|
|
||||||
- 96×96 (medium)
|
|
||||||
- 200×200 (large)
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
[Avatar examples]
|
|
||||||
|
|
||||||
## Diversity
|
|
||||||
Describe demographics in prompt for variety.
|
|
||||||
```
|
|
||||||
|
|
||||||
### Page 4: `/docs/placeholders/sizes/`
|
|
||||||
|
|
||||||
**Target:** "200x200 placeholder image", "placeholder image 600x400"
|
|
||||||
|
|
||||||
**Content:**
|
|
||||||
```markdown
|
|
||||||
# Placeholder Image Sizes
|
|
||||||
|
|
||||||
Common sizes and how to request them.
|
|
||||||
|
|
||||||
## Size Reference
|
|
||||||
| Use Case | Size | URL Parameter |
|
|
||||||
|----------|------|---------------|
|
|
||||||
| Avatar | 200×200 | ?width=200&height=200 |
|
|
||||||
| Thumbnail | 300×200 | ?width=300&height=200 |
|
|
||||||
| Card | 400×300 | ?aspectRatio=4:3 |
|
|
||||||
| Hero | 1200×630 | ?aspectRatio=1200:630 |
|
|
||||||
|
|
||||||
## Custom Sizes
|
|
||||||
[How to specify any size]
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Track C: Homepage Quick Wins
|
### Track C: Homepage Quick Wins ✅ COMPLETE
|
||||||
|
|
||||||
### Current State
|
| Task | Status |
|
||||||
|
|------|--------|
|
||||||
Homepage at banatie.app is indexed. `PromptUrlsSection` already showcases Live URLs — perfect fit for placeholder messaging.
|
| Keywords in metadata | ✅ Added placeholder-related keywords |
|
||||||
|
| PromptUrlsSection subtitle | ✅ Updated to mention placeholders |
|
||||||
### Recommended Changes
|
|
||||||
|
|
||||||
**1. Add keywords to metadata:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
keywords: [
|
|
||||||
'API-first image generation',
|
|
||||||
'AI image API',
|
|
||||||
'image generation for developers',
|
|
||||||
'prompt to image API',
|
|
||||||
'CDN image delivery',
|
|
||||||
// ADD THESE:
|
|
||||||
'placeholder images',
|
|
||||||
'ai placeholder generator',
|
|
||||||
'placeholder image api',
|
|
||||||
],
|
|
||||||
```
|
|
||||||
|
|
||||||
**2. Update PromptUrlsSection subtitle:**
|
|
||||||
|
|
||||||
Current:
|
|
||||||
> "Perfect for static sites, prototypes, and AI coding agents that generate HTML."
|
|
||||||
|
|
||||||
Proposed:
|
|
||||||
> "Perfect for placeholder images, prototypes, static sites, and AI coding agents."
|
|
||||||
|
|
||||||
**3. Add internal link to placeholder page:**
|
|
||||||
|
|
||||||
In PromptUrlsSection, add link:
|
|
||||||
> "See more: [AI Placeholder Images →](/placeholder-images)"
|
|
||||||
|
|
||||||
### Implementation
|
|
||||||
|
|
||||||
These are 10-minute changes. Do together with docs deployment.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Timeline
|
|
||||||
|
|
||||||
### Week 1
|
|
||||||
|
|
||||||
| Day | Track A (Landing) | Track B (Docs) | Track C (Homepage) |
|
|
||||||
|-----|-------------------|----------------|-------------------|
|
|
||||||
| 1 | Verify Live URLs params | — | Add keywords + update subtitle |
|
|
||||||
| 1-2 | Create MVP landing page | — | — |
|
|
||||||
| 3 | Deploy, submit to GSC | Create /docs/placeholders/ | — |
|
|
||||||
| 4-5 | Enhance with visuals | Create dark-mode page | — |
|
|
||||||
|
|
||||||
### Week 2
|
|
||||||
|
|
||||||
| Day | Track A | Track B |
|
|
||||||
|-----|---------|---------|
|
|
||||||
| 6-7 | Monitor GSC, iterate copy | Create profiles page |
|
|
||||||
| 8-10 | A/B test CTAs if traffic | Create sizes page |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Success Metrics
|
## Success Metrics
|
||||||
|
|
||||||
### Week 1 (Immediate)
|
### Completed ✅
|
||||||
- [ ] `/placeholder-images` live and indexed
|
- [x] Placeholder guide live at `/docs/guides/placeholder-images/`
|
||||||
- [ ] `/docs/placeholders/` section live (at least overview + dark-mode)
|
- [x] Live URLs docs enhanced with placeholder examples
|
||||||
- [ ] Homepage keywords updated
|
- [x] Homepage keywords updated
|
||||||
- [ ] All pages in GSC
|
- [x] All pages in sitemap
|
||||||
|
|
||||||
### Month 1
|
### Week 1 Targets
|
||||||
|
- [ ] `/placeholder-images` landing live and indexed
|
||||||
|
- [ ] GSC submission for new pages
|
||||||
|
|
||||||
|
### Month 1 Targets
|
||||||
- [ ] GSC shows impressions for placeholder keywords
|
- [ ] GSC shows impressions for placeholder keywords
|
||||||
- [ ] First organic clicks from placeholder searches
|
- [ ] First organic clicks from placeholder searches
|
||||||
- [ ] At least one signup attributed to placeholder content
|
|
||||||
|
|
||||||
### Month 3
|
### Month 3 Targets
|
||||||
- [ ] Top 20 for "placeholder image" (14,800 vol)
|
- [ ] Top 20 for "placeholder image" (14,800 vol)
|
||||||
- [ ] Top 10 for "image placeholder dark" (4,400 vol, KD 2)
|
- [ ] Top 10 for "image placeholder dark" (4,400 vol, KD 2)
|
||||||
- [ ] Top 5 for zero-KD keywords
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Technical Checklist
|
## Next Steps
|
||||||
|
|
||||||
### Before Landing Page Launch
|
1. **Create landing page** `/placeholder-images`
|
||||||
|
- Use research findings for structure
|
||||||
|
- Include interactive size grid
|
||||||
|
- Show comparison with competitors
|
||||||
|
|
||||||
- [ ] Live URLs support `?width=X&height=Y`
|
2. **Submit to GSC** after deployment
|
||||||
- [ ] Live URLs support `?aspectRatio=X:Y` (verify)
|
|
||||||
- [ ] Test dark mode prompts produce dark images
|
|
||||||
- [ ] CDN caching works for Live URLs
|
|
||||||
- [ ] No rate limit issues for demo
|
|
||||||
|
|
||||||
### SEO Checklist
|
3. **Monitor rankings** for target keywords
|
||||||
|
|
||||||
- [ ] Canonical URLs set
|
|
||||||
- [ ] OG image created or use default
|
|
||||||
- [ ] JSON-LD schemas added
|
|
||||||
- [ ] Internal links from homepage
|
|
||||||
- [ ] Internal links from docs
|
|
||||||
- [ ] sitemap.xml updated
|
|
||||||
- [ ] GSC submission
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Risk Mitigation
|
|
||||||
|
|
||||||
| Risk | Mitigation |
|
|
||||||
|------|------------|
|
|
||||||
| Live URLs not ready | Launch docs first, landing page waits |
|
|
||||||
| Low conversion to full API | Add clear upgrade path messaging |
|
|
||||||
| Competitors copy quickly | Speed — be first, build authority |
|
|
||||||
| Placeholder users expect free | Set expectations early, free tier limits |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Conversion Strategy
|
|
||||||
|
|
||||||
**Key Message Throughout:**
|
|
||||||
|
|
||||||
> "Start with placeholders. Ship with production-ready images."
|
|
||||||
|
|
||||||
**Upgrade Triggers:**
|
|
||||||
1. Hit free tier limit → upgrade prompt
|
|
||||||
2. Need consistency across images → show references feature
|
|
||||||
3. Want higher quality → show production generation
|
|
||||||
4. Need API integration → show full API docs
|
|
||||||
|
|
||||||
**Placement:**
|
|
||||||
- End of every placeholder doc page
|
|
||||||
- Bottom of landing page
|
|
||||||
- In-app after X free generations
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Files to Create
|
|
||||||
|
|
||||||
### Landing
|
|
||||||
- `apps/landing/src/app/(landings)/placeholder-images/page.tsx`
|
|
||||||
|
|
||||||
### Docs
|
|
||||||
- `apps/landing/src/app/(apps)/docs/placeholders/page.tsx`
|
|
||||||
- `apps/landing/src/app/(apps)/docs/placeholders/dark-mode/page.tsx`
|
|
||||||
- `apps/landing/src/app/(apps)/docs/placeholders/profiles/page.tsx`
|
|
||||||
- `apps/landing/src/app/(apps)/docs/placeholders/sizes/page.tsx`
|
|
||||||
|
|
||||||
### Config Updates
|
|
||||||
- `src/config/docs-seo.ts` — add placeholder pages
|
|
||||||
- `src/config/docs-schema.ts` — add schemas if needed
|
|
||||||
- `src/app/sitemap.ts` — add new URLs
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Reference Documents
|
## Reference Documents
|
||||||
|
|
||||||
- Research: `/banatie-content/research/keywords/placeholder-niche-deep-dive-2026-01-02.md`
|
- Research: `/banatie-content/research/keywords/placeholder-niche-deep-dive-2026-01-02.md`
|
||||||
- Content brief: `/banatie-content/0-inbox/placeholder-ai-images.md`
|
- Guide revision task: `/banatie-service/inbox/task-placeholder-guide-revision.md` (if created)
|
||||||
- Docs SEO task: `/banatie-service/docs-seo-task.md`
|
- Docs SEO analysis: `/banatie-content/research/keywords/docs-seo-analysis-2026-01-02.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Document Owner:** @men
|
**Document Owner:** @men
|
||||||
**Last Updated:** January 2, 2026
|
**Last Updated:** January 5, 2026
|
||||||
**Next Review:** End of Week 1
|
**Next Review:** After landing page deployment
|
||||||
**Status:** Ready for execution
|
**Status:** Track B+C complete, Track A in progress
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue