From ad1e1705b7d85aada09df4dd8f9bfdd03da7bd9e Mon Sep 17 00:00:00 2001 From: cawcenter Date: Fri, 12 Dec 2025 23:36:22 -0500 Subject: [PATCH] feat: SEO schema, Word Count Goals, Internal Linking targets, and Admin UI updates --- CAMPAIGN_SETUP_GUIDE.md | 192 ++++++++++++++++++ extra-schema-updates.sql | 62 ++++++ .../admin/content/ContentFactoryDashboard.tsx | 16 +- frontend/src/layouts/BaseLayout.astro | 9 +- frontend/src/lib/directus/fetchers.ts | 28 +++ frontend/src/pages/[...slug].astro | 43 ++-- .../src/pages/api/seo/generate-article.ts | 25 ++- frontend/src/types/schema.ts | 16 ++ 8 files changed, 365 insertions(+), 26 deletions(-) create mode 100644 CAMPAIGN_SETUP_GUIDE.md create mode 100644 extra-schema-updates.sql diff --git a/CAMPAIGN_SETUP_GUIDE.md b/CAMPAIGN_SETUP_GUIDE.md new file mode 100644 index 0000000..e5e86ce --- /dev/null +++ b/CAMPAIGN_SETUP_GUIDE.md @@ -0,0 +1,192 @@ +# Spark Platform: Master Data & Campaign Manual + +This manual provides comprehensive instructions for managing the "Brains" of your content factory. It covers data import formats, advanced Spintax usage, Geo-Intelligence configuration, and full Content Framework management. + +--- + +## 📚 1. Content Intelligence Mastery + +### A. Spintax & Variables Guide +Spintax (Spin Syntax) allows you to create dynamic variations of text. The engine processes this *before* it processes variables. + +#### **Basic Syntax** +* **Format:** `{Option A|Option B|Option C}` +* **Example:** `{Best|Top Rated|Premier}` Solar Installer +* **Output:** Randomly selects one option. + +#### **Nested Spintax (Advanced)** +You can nest options inside others for exponential variations. +* **Example:** `{Get {Started|Going}|Start Your Journey}` today. +* **Logic:** + * 50% Direct: "Start Your Journey today" + * 50% Nested: + * 25%: "Get Started today" + * 25%: "Get Going today" + +#### **System Variables** +These are placeholders that the Generator replaces automatically based on the context (Campaign settings, Location, or Current Time). + +| Variable | Description | Example Output | +| :--- | :--- | :--- | +| `{City}` | Target City Name | "Austin" | +| `{State}` | Full State Name | "Texas" | +| `{State_Abbr}` | 2-Letter Code | "TX" | +| `{County}` | Target County | "Travis County" | +| `{Year}` | Current Year | "2025" | +| `{Month}` | Current Month | "December" | +| `{Niche}` | Campaign Niche (if set) | "Solar" | +| `{Avatar_Name}` | Targeted Avatar | "The Skeptic" | + +#### **Example Usage in a Headline:** +`"{Top Rated|Best} {Niche} Services in {City}, {State_Abbr} - {Year} Update"` +* *Output 1:* "Top Rated Solar Services in Austin, TX - 2025 Update" +* *Output 2:* "Best Solar Services in Miami, FL - 2025 Update" + +--- + +## 🛠 2. Data Import Templates (JSON) + +Use the **Import / Export** feature in the Directus Admin sidebar for each collection. Ensure you import as **JSON**. + +### A. Headline Inventory +*Collection:* `headline_inventory` +*Advanced Feature:* You can include variables in your headlines. + +```json +[ + { + "final_title_text": "The {Ultimate|Definitive} Guide to {Niche} in {City}", + "status": "available", + "notes": "Good for long-form SEO landers" + }, + { + "final_title_text": "How {City} Residents Are Saving Money in {Year}", + "status": "available" + } +] +``` + +### B. Content Fragments (With HTML & Lists) +*Collection:* `content_fragments` +*Power User Tip:* You can use full HTML, including bullet lists `