Update all documentation to reflect current workflow and standards
- Update MIGRATION_SUMMARY.md with current page count (15 pages) - Update README.md with project stats and workflow references - Create comprehensive WORKFLOW.md with complete claims page process - Document strict image selection criteria - Add quality checklists and troubleshooting guides - Include file naming conventions and best practices
This commit is contained in:
parent
101be4601d
commit
b2ec7fc805
|
|
@ -8,12 +8,14 @@ Successfully migrated your React SPA to Next.js with Static Site Generation (SSG
|
||||||
|
|
||||||
**Project Location:** `/Users/kamil/Desktop/Projects_Active/kbanc/kbanc-nextjs`
|
**Project Location:** `/Users/kamil/Desktop/Projects_Active/kbanc/kbanc-nextjs`
|
||||||
|
|
||||||
**All Pages Converted:** 13 routes → 13 static HTML files
|
**All Pages Converted:** 15 routes → 15 static HTML files
|
||||||
|
|
||||||
```
|
```
|
||||||
✓ Homepage (/)
|
✓ Homepage (/)
|
||||||
✓ Claims Library Index (/claims-library)
|
✓ Claims Library Index (/claims-library)
|
||||||
✓ 8 Individual Claim Pages:
|
✓ 10 Individual Claim Pages:
|
||||||
|
- Amazon AI Playbook
|
||||||
|
- ChatGPT Features
|
||||||
- Vibe Hackathons
|
- Vibe Hackathons
|
||||||
- Systems Thinking
|
- Systems Thinking
|
||||||
- AI ROI Measurement
|
- AI ROI Measurement
|
||||||
|
|
@ -54,7 +56,7 @@ Successfully migrated your React SPA to Next.js with Static Site Generation (SSG
|
||||||
|
|
||||||
## Build Output
|
## Build Output
|
||||||
|
|
||||||
All 13 pages generated as static HTML:
|
All 15 pages generated as static HTML:
|
||||||
- Total build time: ~3 seconds
|
- Total build time: ~3 seconds
|
||||||
- File size per page: ~30-35KB HTML
|
- File size per page: ~30-35KB HTML
|
||||||
- All pages marked as static (○ symbol)
|
- All pages marked as static (○ symbol)
|
||||||
|
|
@ -259,14 +261,15 @@ All necessary packages installed:
|
||||||
|
|
||||||
Build output confirms success:
|
Build output confirms success:
|
||||||
```
|
```
|
||||||
✓ Generating static pages (13/13)
|
✓ Generating static pages (15/15)
|
||||||
○ (Static) prerendered as static content
|
○ (Static) prerendered as static content
|
||||||
|
|
||||||
Route (app) Size First Load JS
|
Route (app) Size First Load JS
|
||||||
┌ ○ / 184 B 106 kB
|
┌ ○ / 191 B 106 kB
|
||||||
├ ○ /claims-library 184 B 106 kB
|
├ ○ /claims-library 191 B 106 kB
|
||||||
├ ○ /claims-library/vibe-hackathons 184 B 106 kB
|
├ ○ /claims-library/amazon-ai-playbook 191 B 106 kB
|
||||||
└ ... [10 more routes]
|
├ ○ /claims-library/chatgpt-features 191 B 106 kB
|
||||||
|
└ ... [11 more routes]
|
||||||
```
|
```
|
||||||
|
|
||||||
All pages marked with ○ = Static generation working perfectly!
|
All pages marked with ○ = Static generation working perfectly!
|
||||||
|
|
|
||||||
19
README.md
19
README.md
|
|
@ -9,11 +9,23 @@ Next.js site for kbanc.com with static site generation for optimal GEO (Generati
|
||||||
## Auto-Deployment
|
## Auto-Deployment
|
||||||
This repository is connected to Netlify. Every push to main branch triggers automatic deployment.
|
This repository is connected to Netlify. Every push to main branch triggers automatic deployment.
|
||||||
|
|
||||||
|
## Project Stats
|
||||||
|
- **Total Pages:** 15 static HTML files
|
||||||
|
- **Claims Pages:** 10 individual claim articles
|
||||||
|
- **Build Time:** ~3 seconds
|
||||||
|
- **GEO Optimized:** ✅ Pre-rendered HTML + JSON-LD schema
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
### Setup & Deployment
|
||||||
- `MIGRATION_SUMMARY.md` - Technical migration details
|
- `MIGRATION_SUMMARY.md` - Technical migration details
|
||||||
- `DOMAIN_SETUP_GUIDE.md` - Custom domain setup instructions
|
- `DOMAIN_SETUP_GUIDE.md` - Custom domain setup instructions
|
||||||
- `NAMECHEAP_DNS_SETUP.md` - Complete DNS configuration
|
- `NAMECHEAP_DNS_SETUP.md` - Complete DNS configuration
|
||||||
|
|
||||||
|
### Workflows
|
||||||
|
- `WORKFLOW.md` - Complete process for creating new claims pages
|
||||||
|
- `CLAIMS_PAGE_GUIDELINES.md` - Strict image selection criteria
|
||||||
|
|
||||||
## Local Development
|
## Local Development
|
||||||
```bash
|
```bash
|
||||||
npm install
|
npm install
|
||||||
|
|
@ -27,3 +39,10 @@ npm run build
|
||||||
# Output: /out directory
|
# Output: /out directory
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Creating New Claims Pages
|
||||||
|
See `WORKFLOW.md` for the complete step-by-step process including:
|
||||||
|
- Extracting atomic claims from articles
|
||||||
|
- Strict image selection criteria (white bg, black text, red accents only)
|
||||||
|
- Required file updates (sitemap, components, CSV)
|
||||||
|
- Build and deployment checklist
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,588 @@
|
||||||
|
# Complete Workflow for Creating Claims Pages
|
||||||
|
|
||||||
|
This document outlines the complete, step-by-step process for creating new claims pages optimized for Generative Engine Optimization (GEO).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
**Goal:** Create GEO-optimized claims pages that AI systems (ChatGPT, Claude, Perplexity) can easily extract and cite.
|
||||||
|
|
||||||
|
**Source Material:** Articles from AI Adopters Club (https://aiadopters.club)
|
||||||
|
|
||||||
|
**Output:** Static HTML pages with atomic claims, supporting evidence, and compliant infographics.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 1: Select Source Article
|
||||||
|
|
||||||
|
### 1.1 Identify Article
|
||||||
|
- Browse AI Adopters Club for suitable articles
|
||||||
|
- Look for articles with:
|
||||||
|
- Concrete, measurable claims
|
||||||
|
- Statistics and data points
|
||||||
|
- Real-world case studies
|
||||||
|
- Actionable insights
|
||||||
|
|
||||||
|
### 1.2 Fetch Article Content
|
||||||
|
```bash
|
||||||
|
# Use WebFetch tool to extract article content
|
||||||
|
WebFetch(url: "https://aiadopters.club/p/article-slug")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Extract:**
|
||||||
|
- Full article text
|
||||||
|
- All statistics and data points
|
||||||
|
- Key quotes from author
|
||||||
|
- Image URLs (for later filtering)
|
||||||
|
- Main thesis/conclusion
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 2: Extract Atomic Claims
|
||||||
|
|
||||||
|
### 2.1 Claim Requirements
|
||||||
|
Each claim must be:
|
||||||
|
- **Atomic:** Single, standalone statement
|
||||||
|
- **Concise:** 12-18 tokens (aim for ~15 words)
|
||||||
|
- **Verifiable:** Can be independently fact-checked
|
||||||
|
- **Specific:** Includes concrete numbers, names, or outcomes
|
||||||
|
- **Citable:** Formatted for LLM extraction
|
||||||
|
|
||||||
|
### 2.2 Create 5 Claims
|
||||||
|
Extract exactly **5 atomic claims** from the article.
|
||||||
|
|
||||||
|
**Good Examples:**
|
||||||
|
```
|
||||||
|
✅ "ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes."
|
||||||
|
|
||||||
|
✅ "Amazon reduced warehouse operation costs 25% through AI-powered robotics implementation."
|
||||||
|
|
||||||
|
✅ "Custom GPTs reduce project plan preparation time by approximately 70%."
|
||||||
|
```
|
||||||
|
|
||||||
|
**Bad Examples:**
|
||||||
|
```
|
||||||
|
❌ "AI is helpful for businesses." (too vague)
|
||||||
|
❌ "Companies are seeing success with machine learning implementations across various departments." (not specific)
|
||||||
|
❌ "According to research, automation tools can save time and reduce costs significantly." (no concrete data)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 Title Each Claim
|
||||||
|
Create a short, descriptive title for each claim:
|
||||||
|
- Format: "Category + Key Metric/Outcome"
|
||||||
|
- Examples:
|
||||||
|
- "File upload feature delivers 89% time reduction"
|
||||||
|
- "Custom GPTs accelerate project planning 70%"
|
||||||
|
- "Robotics deliver measurable cost reduction"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 3: Select Compliant Images
|
||||||
|
|
||||||
|
### 3.1 Image Criteria (STRICT)
|
||||||
|
**See `CLAIMS_PAGE_GUIDELINES.md` for complete criteria.**
|
||||||
|
|
||||||
|
**ONLY include images that have ALL of these:**
|
||||||
|
- ✅ White background
|
||||||
|
- ✅ Black text (primarily)
|
||||||
|
- ✅ Red accent colors (symbols, headlines, highlights)
|
||||||
|
- ✅ Optional gray tones for secondary elements
|
||||||
|
- ✅ Text-heavy, informational content
|
||||||
|
|
||||||
|
**EXCLUDE images with:**
|
||||||
|
- ❌ Photographs
|
||||||
|
- ❌ Screenshots of software interfaces
|
||||||
|
- ❌ Colored backgrounds (blue, green, etc.)
|
||||||
|
- ❌ Multiple colors beyond white/black/red/gray
|
||||||
|
- ❌ Promotional graphics
|
||||||
|
|
||||||
|
### 3.2 Download Compliant Images
|
||||||
|
```bash
|
||||||
|
# Download only infographic-style images
|
||||||
|
curl -o public/assets/[descriptive-name].png "[image-url]"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Naming convention:**
|
||||||
|
- Format: `[article-slug]-[description].png`
|
||||||
|
- Examples:
|
||||||
|
- `amazon-process-diagram.png`
|
||||||
|
- `chatgpt-career-leverage.png`
|
||||||
|
|
||||||
|
### 3.3 If No Compliant Images
|
||||||
|
**That's OK!** Create the claims page without images. The atomic claims and text content are sufficient for GEO.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 4: Create Claims Page
|
||||||
|
|
||||||
|
### 4.1 Create Directory
|
||||||
|
```bash
|
||||||
|
mkdir -p src/app/claims-library/[article-slug]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Create Page File
|
||||||
|
Create: `src/app/claims-library/[article-slug]/page.tsx`
|
||||||
|
|
||||||
|
### 4.3 Page Structure Template
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import type { Metadata } from "next";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { ArrowLeft, Linkedin, Youtube, Download } from "lucide-react";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "[Article Title]",
|
||||||
|
description: "[Brief description of the 5 claims]",
|
||||||
|
authors: [{ name: "Kamil Banc" }],
|
||||||
|
openGraph: {
|
||||||
|
title: "[Article Title]",
|
||||||
|
description: "[Brief description]",
|
||||||
|
url: "https://kbanc.com/claims-library/[article-slug]",
|
||||||
|
type: "article",
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
card: "summary",
|
||||||
|
title: "[Article Title]",
|
||||||
|
description: "[Brief description]",
|
||||||
|
},
|
||||||
|
alternates: {
|
||||||
|
canonical: "https://kbanc.com/claims-library/[article-slug]",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// JSON-LD schema for SEO
|
||||||
|
const jsonLd = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
headline: "[Article Title]",
|
||||||
|
author: {
|
||||||
|
"@type": "Person",
|
||||||
|
name: "Kamil Banc",
|
||||||
|
jobTitle: "Author",
|
||||||
|
affiliation: {
|
||||||
|
"@type": "Organization",
|
||||||
|
name: "AI Adopters Club",
|
||||||
|
url: "https://aiadopters.club",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
datePublished: "YYYY-MM-DD",
|
||||||
|
dateModified: "YYYY-MM-DD",
|
||||||
|
publisher: {
|
||||||
|
"@type": "Organization",
|
||||||
|
name: "AI Adopters Club",
|
||||||
|
url: "https://aiadopters.club",
|
||||||
|
},
|
||||||
|
description: "[Brief description]",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function [ComponentName]() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<script
|
||||||
|
type="application/ld+json"
|
||||||
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||||
|
/>
|
||||||
|
<div className="min-h-screen bg-background">
|
||||||
|
{/* Header with back link */}
|
||||||
|
<header className="bg-muted border-b-2 border-border py-8 mb-12">
|
||||||
|
{/* ... header content ... */}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main className="container max-w-3xl mx-auto px-6 pb-12">
|
||||||
|
{/* Atomic Claims section */}
|
||||||
|
<section className="mb-12">
|
||||||
|
<h2 className="text-3xl font-semibold mb-6 mt-12">Atomic Claims</h2>
|
||||||
|
{/* 5 claim cards */}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Supporting Evidence section */}
|
||||||
|
<section className="mb-12">
|
||||||
|
<h2 className="text-3xl font-semibold mb-6 mt-12">Supporting Evidence</h2>
|
||||||
|
{/* Quote, statistics, images, sources */}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* CSV Download section */}
|
||||||
|
<section className="bg-muted border-2 border-accent rounded-lg p-8 mb-12 text-center">
|
||||||
|
{/* CSV download button */}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Context section */}
|
||||||
|
<section className="bg-muted rounded-lg p-8 mb-12">
|
||||||
|
{/* Context about the claims */}
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{/* Footer */}
|
||||||
|
<footer className="bg-muted border-t-2 border-border py-8 mt-12 text-center">
|
||||||
|
{/* ... footer content ... */}
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.4 Key Elements Required
|
||||||
|
|
||||||
|
1. **Metadata:** Complete SEO metadata with OpenGraph and Twitter cards
|
||||||
|
2. **JSON-LD Schema:** Embedded structured data for AI systems
|
||||||
|
3. **5 Atomic Claims:** Each in a styled card with title and statement
|
||||||
|
4. **Supporting Evidence:**
|
||||||
|
- Key quote from author
|
||||||
|
- Statistics section with 2-3 key metrics
|
||||||
|
- Compliant infographics (if available)
|
||||||
|
- Sources section with link to original article
|
||||||
|
5. **CSV Download:** Link to downloadable structured data
|
||||||
|
6. **Context Section:** Brief explanation of the claims and methodology
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 5: Create CSV File
|
||||||
|
|
||||||
|
### 5.1 Create CSV
|
||||||
|
Create: `public/assets/[article-slug]-claims.csv`
|
||||||
|
|
||||||
|
### 5.2 CSV Format
|
||||||
|
```csv
|
||||||
|
Claim Number,Claim Title,Claim Statement,Category,Supporting Evidence
|
||||||
|
1,[Claim Title],[Full claim statement],[Category],[Evidence source]
|
||||||
|
2,[Claim Title],[Full claim statement],[Category],[Evidence source]
|
||||||
|
3,[Claim Title],[Full claim statement],[Category],[Evidence source]
|
||||||
|
4,[Claim Title],[Full claim statement],[Category],[Evidence source]
|
||||||
|
5,[Claim Title],[Full claim statement],[Category],[Evidence source]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```csv
|
||||||
|
Claim Number,Claim Title,Claim Statement,Category,Supporting Evidence
|
||||||
|
1,File upload feature delivers 89% time reduction,ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes,Productivity,Reported case study from AI Adopters Club research
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 6: Update Site Files
|
||||||
|
|
||||||
|
### 6.1 Update sitemap.xml
|
||||||
|
Add new page to `public/sitemap.xml`:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<url>
|
||||||
|
<loc>https://kbanc.com/claims-library/[article-slug]</loc>
|
||||||
|
<lastmod>YYYY-MM-DD</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2 Update ClaimsLibrary Component
|
||||||
|
Add to `src/components/ClaimsLibrary.tsx`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
title: "[Article Title]",
|
||||||
|
link: "/claims-library/[article-slug]"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Position:** Insert near the top of the array (most recent first)
|
||||||
|
|
||||||
|
### 6.3 Update Claims Library Index Page
|
||||||
|
Add preview card to `src/app/claims-library/page.tsx`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
{/* [Article Name] */}
|
||||||
|
<article className="bg-card border border-border rounded-lg p-8 mb-8 transition-shadow hover:shadow-lg">
|
||||||
|
<h3 className="text-xl font-semibold mb-4">
|
||||||
|
<Link
|
||||||
|
href="/claims-library/[article-slug]"
|
||||||
|
className="text-foreground hover:text-accent hover:underline transition-colors"
|
||||||
|
>
|
||||||
|
[Article Title]
|
||||||
|
</Link>
|
||||||
|
</h3>
|
||||||
|
<p className="text-muted-foreground mb-6 leading-relaxed">
|
||||||
|
[Brief description of the 5 claims]
|
||||||
|
</p>
|
||||||
|
<div className="flex flex-wrap gap-4 mb-6 text-sm text-muted-foreground">
|
||||||
|
<span className="px-3 py-1 bg-muted rounded"><span className="text-accent font-medium">5</span> Claims</span>
|
||||||
|
<span className="px-3 py-1 bg-muted rounded">Published: [Date]</span>
|
||||||
|
<span className="px-3 py-1 bg-muted rounded">Author: Kamil Banc</span>
|
||||||
|
</div>
|
||||||
|
<ul className="space-y-2 mb-6">
|
||||||
|
<li className="p-3 border-l-4 border-l-accent bg-muted text-sm">
|
||||||
|
[First claim preview]
|
||||||
|
</li>
|
||||||
|
<li className="p-3 border-l-4 border-l-accent bg-muted text-sm">
|
||||||
|
[Second claim preview]
|
||||||
|
</li>
|
||||||
|
<li className="p-3 border-l-4 border-l-accent bg-muted text-sm">
|
||||||
|
[Third claim preview]
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<Link
|
||||||
|
href="/claims-library/[article-slug]"
|
||||||
|
className="inline-flex items-center font-semibold text-accent hover:text-accent/80 transition-colors"
|
||||||
|
>
|
||||||
|
View All Claims →
|
||||||
|
</Link>
|
||||||
|
</article>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Position:** Insert near the top, after any featured articles
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 7: Build and Test
|
||||||
|
|
||||||
|
### 7.1 Run Build
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
**Expected output:**
|
||||||
|
```
|
||||||
|
✓ Generating static pages (16/16) # One more than before
|
||||||
|
○ (Static) prerendered as static content
|
||||||
|
|
||||||
|
Route (app) Size First Load JS
|
||||||
|
├ ○ /claims-library/[new-article-slug] 191 B 106 kB
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.2 Check for Errors
|
||||||
|
**Common issues:**
|
||||||
|
- Missing imports
|
||||||
|
- Incorrect image paths
|
||||||
|
- Syntax errors in JSX
|
||||||
|
- Missing metadata fields
|
||||||
|
|
||||||
|
**Fix errors and rebuild until successful**
|
||||||
|
|
||||||
|
### 7.3 Preview Locally (Optional)
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
# Visit http://localhost:3000/claims-library/[article-slug]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Check:**
|
||||||
|
- All 5 claims display correctly
|
||||||
|
- Images load (if any)
|
||||||
|
- CSV download link works
|
||||||
|
- Links back to claims library
|
||||||
|
- Mobile responsive layout
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 8: Commit and Deploy
|
||||||
|
|
||||||
|
### 8.1 Stage Files
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
```
|
||||||
|
|
||||||
|
**Files that should be staged:**
|
||||||
|
- `src/app/claims-library/[article-slug]/page.tsx` (new)
|
||||||
|
- `public/assets/[article-slug]-*.png` (images, if any)
|
||||||
|
- `public/assets/[article-slug]-claims.csv` (new)
|
||||||
|
- `public/sitemap.xml` (modified)
|
||||||
|
- `src/components/ClaimsLibrary.tsx` (modified)
|
||||||
|
- `src/app/claims-library/page.tsx` (modified)
|
||||||
|
|
||||||
|
### 8.2 Commit Changes
|
||||||
|
```bash
|
||||||
|
git commit -m "Add [Article Title] claims page with infographics"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Commit message format:**
|
||||||
|
- Use descriptive title
|
||||||
|
- Mention if infographics included
|
||||||
|
- Example: "Add ChatGPT Features claims page with infographics"
|
||||||
|
|
||||||
|
### 8.3 Push to GitHub
|
||||||
|
```bash
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
**This triggers:**
|
||||||
|
- Automatic Netlify deployment
|
||||||
|
- Build process runs on Netlify
|
||||||
|
- Site updates within 1-2 minutes
|
||||||
|
|
||||||
|
### 8.4 Verify Deployment
|
||||||
|
1. Check GitHub Actions/Netlify deployment log
|
||||||
|
2. Visit: https://kbanc-nextjs.netlify.app/claims-library/[article-slug]
|
||||||
|
3. Test all functionality:
|
||||||
|
- Claims display correctly
|
||||||
|
- Images load
|
||||||
|
- CSV downloads
|
||||||
|
- Links work
|
||||||
|
- Mobile layout
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quality Checklist
|
||||||
|
|
||||||
|
Before committing, verify:
|
||||||
|
|
||||||
|
### Content Quality
|
||||||
|
- [ ] Exactly 5 atomic claims
|
||||||
|
- [ ] Each claim is 12-18 tokens
|
||||||
|
- [ ] Each claim is independently verifiable
|
||||||
|
- [ ] Claims include specific data/metrics
|
||||||
|
- [ ] Quote from original author included
|
||||||
|
- [ ] 2-3 key statistics highlighted
|
||||||
|
- [ ] Link to original article in sources
|
||||||
|
|
||||||
|
### Images (if included)
|
||||||
|
- [ ] All images have white background
|
||||||
|
- [ ] All images use only black text
|
||||||
|
- [ ] All images use red for accents only
|
||||||
|
- [ ] No photographs included
|
||||||
|
- [ ] No screenshots included
|
||||||
|
- [ ] Images are text-heavy and informational
|
||||||
|
- [ ] Images saved to `/public/assets/`
|
||||||
|
- [ ] Images use descriptive filenames
|
||||||
|
|
||||||
|
### Technical
|
||||||
|
- [ ] Page builds without errors
|
||||||
|
- [ ] Metadata is complete (title, description, OG, Twitter)
|
||||||
|
- [ ] JSON-LD schema embedded
|
||||||
|
- [ ] CSV file created and linked
|
||||||
|
- [ ] sitemap.xml updated
|
||||||
|
- [ ] ClaimsLibrary component updated
|
||||||
|
- [ ] Claims library index page updated
|
||||||
|
- [ ] All links use correct href format
|
||||||
|
- [ ] Images use correct src paths
|
||||||
|
|
||||||
|
### SEO/GEO
|
||||||
|
- [ ] Canonical URL set correctly
|
||||||
|
- [ ] Meta description is compelling
|
||||||
|
- [ ] Title is optimized (<60 characters)
|
||||||
|
- [ ] JSON-LD includes all required fields
|
||||||
|
- [ ] Claims are in semantic HTML (not just styled divs)
|
||||||
|
- [ ] Page structure uses proper heading hierarchy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## File Naming Conventions
|
||||||
|
|
||||||
|
### Article Slugs
|
||||||
|
- Use lowercase
|
||||||
|
- Separate words with hyphens
|
||||||
|
- Keep short but descriptive
|
||||||
|
- Examples:
|
||||||
|
- `amazon-ai-playbook`
|
||||||
|
- `chatgpt-features`
|
||||||
|
- `vibe-hackathons`
|
||||||
|
|
||||||
|
### Image Files
|
||||||
|
- Format: `[article-slug]-[description].png`
|
||||||
|
- Use descriptive names
|
||||||
|
- Examples:
|
||||||
|
- `amazon-process-diagram.png`
|
||||||
|
- `chatgpt-career-leverage.png`
|
||||||
|
- `ai-roi-measurement-framework.png`
|
||||||
|
|
||||||
|
### CSV Files
|
||||||
|
- Format: `[article-slug]-claims.csv`
|
||||||
|
- Always include "-claims" suffix
|
||||||
|
- Examples:
|
||||||
|
- `amazon-ai-playbook-claims.csv`
|
||||||
|
- `chatgpt-features-claims.csv`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Build Fails
|
||||||
|
**Error:** `Module not found` or similar
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
- Check all import paths
|
||||||
|
- Verify image files exist in `/public/assets/`
|
||||||
|
- Check for typos in filenames
|
||||||
|
|
||||||
|
### Images Don't Load
|
||||||
|
**Error:** 404 for image files
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
- Images must be in `/public/` directory
|
||||||
|
- Use paths like `/assets/image.png` (no "public" in path)
|
||||||
|
- Rebuild after adding images
|
||||||
|
|
||||||
|
### Page Shows 404 After Deploy
|
||||||
|
**Error:** New page not found on live site
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
- Verify build succeeded (check Netlify logs)
|
||||||
|
- Clear browser cache
|
||||||
|
- Wait 1-2 minutes for deployment to complete
|
||||||
|
|
||||||
|
### CSV Download Doesn't Work
|
||||||
|
**Error:** 404 when clicking download
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
- Verify CSV file exists in `/public/assets/`
|
||||||
|
- Check href path in download link
|
||||||
|
- Rebuild if file was added after build
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Current Site Statistics
|
||||||
|
|
||||||
|
**As of last update:**
|
||||||
|
- Total pages: 15
|
||||||
|
- Claims pages: 10
|
||||||
|
- Build time: ~3 seconds
|
||||||
|
- Average page size: 191 B (+ 106 kB shared JS)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Related Documentation
|
||||||
|
|
||||||
|
- **Image Guidelines:** `CLAIMS_PAGE_GUIDELINES.md`
|
||||||
|
- **Migration Details:** `MIGRATION_SUMMARY.md`
|
||||||
|
- **Domain Setup:** `DOMAIN_SETUP_GUIDE.md`
|
||||||
|
- **DNS Config:** `NAMECHEAP_DNS_SETUP.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
### Complete File Checklist
|
||||||
|
Every new claims page requires changes to:
|
||||||
|
|
||||||
|
1. `src/app/claims-library/[slug]/page.tsx` (new file)
|
||||||
|
2. `public/assets/[slug]-claims.csv` (new file)
|
||||||
|
3. `public/assets/[slug]-*.png` (new files, if images)
|
||||||
|
4. `public/sitemap.xml` (add URL)
|
||||||
|
5. `src/components/ClaimsLibrary.tsx` (add entry)
|
||||||
|
6. `src/app/claims-library/page.tsx` (add preview card)
|
||||||
|
|
||||||
|
**Total files modified:** 4-6 depending on images
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
### Do's ✅
|
||||||
|
- Always create exactly 5 claims
|
||||||
|
- Use specific numbers and metrics
|
||||||
|
- Include original article link
|
||||||
|
- Follow strict image criteria
|
||||||
|
- Test build before committing
|
||||||
|
- Write descriptive commit messages
|
||||||
|
- Verify deployment works
|
||||||
|
|
||||||
|
### Don'ts ❌
|
||||||
|
- Don't include vague claims
|
||||||
|
- Don't use screenshots as "infographics"
|
||||||
|
- Don't skip the CSV file
|
||||||
|
- Don't forget to update sitemap
|
||||||
|
- Don't commit without building first
|
||||||
|
- Don't include promotional images
|
||||||
|
- Don't use colored backgrounds in images
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Remember:** The goal is GEO optimization. Every decision should prioritize making content easily extractable and citable by AI systems.
|
||||||
Loading…
Reference in New Issue