Feature: Complete Admin UI Overhaul, Content Factory Showcase Mode, and Site Management

This commit is contained in:
cawcenter
2025-12-12 18:25:31 -05:00
parent 7a9b7ec86e
commit d8db5f42cf
59 changed files with 6277 additions and 186 deletions

View File

@@ -0,0 +1,312 @@
# 🏭 Spark Content Factory - Implementation Plan
## Overview
Transform the three intelligence files into a fully automated content generation system that creates **hyper-personalized articles** by combining:
- **WHO** (Avatar + Niche)
- **WHERE** (City + Wealth Cluster)
- **WHAT** (Offer Block + Spintax)
---
## 📊 Architecture Diagram
```
┌─────────────────────────────────────────────────────────────────────┐
│ DIRECTUS SCHEMA │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ SITES │────▶│ CAMPAIGNS │────▶│ ARTICLES │ │
│ │ (Your Sites)│ │(What to build│ │(Generated) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ │ ┌──────┴──────┐ │ │
│ │ ▼ ▼ ▼ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ │ AVATARS │ │ NICHES │ │ LOCATIONS │ │
│ │ │ (Who) │ │ (Industry)│ │ (Where) │ │
│ │ └───────────┘ └───────────┘ └───────────┘ │
│ │ │ │ │ │
│ │ └──────┬──────┘ │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ │ │
│ └──────────▶│OFFER BLOCKS │◀─────────────┘ │
│ │(Messaging) │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ SEO ENGINE │ │
│ │• Meta Title │ │
│ │• Meta Desc │ │
│ │• Schema.org │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
---
## 📁 Directus Collections to Create
### 1. **avatars** (FROM: avatar_intelligence.json)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| slug | string | `scaling_founder`, `elite_consultant`, etc. |
| base_name | string | "The Tech Titan / Scaling Founder" |
| wealth_cluster | string | "Tech-Native" |
| psychographics | text | Long description of mindset |
| tech_stack | json | ["Zapier", "Slack", "AWS"] |
| pronoun_male | string | "he" |
| pronoun_female | string | "she" |
| identity_male | string | "bottlenecked technical founder" |
| identity_female | string | "bottlenecked technical founder" |
### 2. **niches** (FROM: avatar_intelligence.json → business_niches)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| name | string | "Vertical SaaS (B2B)" |
| slug | string | "vertical-saas-b2b" |
| avatar | m2o → avatars | Which avatar owns this niche |
| keywords | json | SEO keywords for this niche |
| pain_points | json | Common pains in this niche |
### 3. **wealth_clusters** (FROM: geo_intelligence.json)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| slug | string | `tech_native`, `financial_power` |
| name | string | "The Silicon Valleys" |
| tech_adoption_score | integer | 1-10 |
| primary_need | string | "Advanced Custom Automation & SaaS" |
| matching_avatars | m2m → avatars | Which avatars match this cluster |
### 4. **elite_cities** (FROM: geo_intelligence.json → cities)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| name | string | "Atherton" |
| state | string | "CA" |
| full_name | string | "Atherton, CA" |
| wealth_cluster | m2o → wealth_clusters | Which cluster |
| landmarks | json | Local landmarks for spintax |
### 5. **offer_blocks** (FROM: offer_engine.json)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| slug | string | `block_01_zapier_fix` |
| title | string | "The $1,000 Fix" |
| hook | text | "Stop the bleeding in your {{NICHE}} business." |
| spintax | text | Full spintax template |
| avatar_pains | json | { avatar_slug: [pain1, pain2, pain3] } |
| meta_title_template | string | "{{OFFER}} for {{NICHE}} in {{CITY}}" |
| meta_desc_template | text | SEO description template |
### 6. **content_campaigns** (User creates these)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| site | m2o → sites | Which site to publish to |
| name | string | "Q1 2025 - Tech Founders" |
| target_avatars | m2m → avatars | Which avatars to target |
| target_niches | m2m → niches | Which niches |
| target_cities | m2m → elite_cities | Which cities |
| offer_blocks | m2m → offer_blocks | Which offers to use |
| velocity_mode | select | RAMP_UP, STEADY, SPIKES |
| target_count | integer | How many articles |
### 7. **generated_articles** (Factory output)
| Field | Type | Description |
|-------|------|-------------|
| id | uuid | Primary key |
| site | m2o → sites | Published to this site |
| campaign | m2o → content_campaigns | Source campaign |
| avatar | m2o → avatars | Target avatar |
| niche | m2o → niches | Target niche |
| city | m2o → elite_cities | Target city |
| offer | m2o → offer_blocks | Offer used |
| headline | string | Generated headline |
| meta_title | string | SEO title (60 chars) |
| meta_description | string | SEO desc (160 chars) |
| full_html_body | text | The article content |
| schema_json | json | Schema.org markup |
| sitemap_status | select | ghost, queued, indexed |
| date_published | datetime | Backdate or now |
---
## 🔄 How It All Connects
### Page Generation Flow
```
USER SELECTS:
┌─────────────────────────────────────────────┐
│ Site: la.christopheramaya.work │
│ Avatar: scaling_founder │
│ Niche: Vertical SaaS (B2B) │
│ City: Palo Alto, CA │
│ Offer: The $1,000 Fix │
│ Count: 50 articles │
└─────────────────────────────────────────────┘
FACTORY GENERATES:
┌─────────────────────────────────────────────┐
│ FOR EACH COMBINATION: │
│ │
│ 1. Pull avatar psychographics │
│ 2. Pull niche-specific pains │
│ 3. Pull city landmarks │
│ 4. Pull offer spintax │
│ 5. Replace all {{TOKENS}} │
│ 6. Spin the spintax │
│ 7. Generate SEO meta │
│ 8. Create schema.org JSON │
│ 9. Save to generated_articles │
│ 10. Apply Gaussian scheduling │
└─────────────────────────────────────────────┘
```
### Token Replacement Map
| Token | Source | Example |
|-------|--------|---------|
| `{{NICHE}}` | niches.name | "Vertical SaaS" |
| `{{CITY}}` | elite_cities.name | "Palo Alto" |
| `{{STATE}}` | elite_cities.state | "CA" |
| `{{AVATAR}}` | avatars.identity_male | "bottlenecked technical founder" |
| `{{PRONOUN}}` | avatars.pronoun_male | "he" |
| `{{TECH_STACK}}` | avatars.tech_stack[random] | "Zapier" |
| `{{LANDMARK}}` | elite_cities.landmarks[random] | "Stanford University" |
| `{{AGENCY_NAME}}` | sites.name | "Spark Digital" |
| `{{AGENCY_URL}}` | sites.domain | "sparkdigital.com" |
| `{{CURRENT_YEAR}}` | context | "2024" |
| `{{WEALTH_VIBE}}` | wealth_clusters.primary_need | "Advanced Custom Automation" |
---
## 📋 SEO Meta Generation
For each article, auto-generate:
### Meta Title (60 chars)
```
{{OFFER_TITLE}} for {{NICHE}} Businesses in {{CITY}}, {{STATE}}
```
Example: "The $1,000 Fix for Vertical SaaS Businesses in Palo Alto, CA"
### Meta Description (160 chars)
```
{{AVATAR_IDENTITY}} in {{CITY}}? {{OFFER_HOOK}} We {{SOLUTION}}. Get your free audit today.
```
Example: "Bottlenecked technical founder in Palo Alto? Stop the bleeding in your SaaS business. We rebuild broken automation. Get your free audit today."
### Schema.org JSON-LD
```json
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "{{META_TITLE}}",
"description": "{{META_DESC}}",
"author": {
"@type": "Organization",
"name": "{{AGENCY_NAME}}"
},
"datePublished": "{{DATE_PUBLISHED}}",
"dateModified": "{{DATE_MODIFIED}}",
"publisher": {
"@type": "Organization",
"name": "{{AGENCY_NAME}}"
}
}
```
---
## 🚀 User Workflow in Directus
### Step 1: Add Your Site
```
Sites → + New
- Name: "Spark Digital LA"
- Domain: "la.christopheramaya.work"
```
### Step 2: Create Campaign
```
Content Campaigns → + New
- Site: (dropdown) Spark Digital LA
- Target Avatars: ☑️ scaling_founder ☑️ saas_overloader
- Target Niches: ☑️ Vertical SaaS ☑️ Fintech
- Target Cities: ☑️ Palo Alto ☑️ Austin ☑️ Seattle
- Offer Blocks: ☑️ Zapier Fix ☑️ Market Domination
- Velocity: RAMP_UP
- Target Count: 100
```
### Step 3: Click "Generate"
```
→ Factory creates 100 unique articles
→ Each article = unique combo
→ SEO meta auto-generated
→ Gaussian scheduling applied
```
### Step 4: Review & Publish
```
Generated Articles → Filter by Campaign
→ Preview any article
→ Approve test batch
→ Click "Publish to Site"
→ Articles go live
```
---
## 📊 Combination Math
With full data:
- 10 Avatars × 10 Niches each = 100 Avatar-Niche combos
- 50 Elite Cities
- 10 Offer Blocks
**Maximum unique articles: 100 × 50 × 10 = 50,000 pages**
For a focused campaign:
- 2 Avatars × 3 Niches × 10 Cities × 2 Offers = **120 articles**
---
## ✅ Implementation Tasks
### Phase 1: Schema Setup
- [ ] Create `avatars` collection
- [ ] Create `niches` collection
- [ ] Create `wealth_clusters` collection
- [ ] Create `elite_cities` collection
- [ ] Create `offer_blocks` collection
- [ ] Update `content_campaigns` with relations
- [ ] Update `generated_articles` with relations
### Phase 2: Data Import
- [ ] Import 10 avatars
- [ ] Import 100 niches (10 per avatar)
- [ ] Import 5 wealth clusters
- [ ] Import 50 elite cities
- [ ] Import offer blocks
### Phase 3: Factory Engine
- [ ] Update token processor
- [ ] Build campaign generator
- [ ] Add SEO meta templates
- [ ] Add schema.org generator
### Phase 4: Testing
- [ ] Generate test batch
- [ ] Verify token replacement
- [ ] Verify SEO meta quality