The pSEO Wizard Manual 🧙♂️
Welcome to the complete technical guide for pSEO Wizard. This documentation condenses weeks of architectural decisions into a single workflow to help you launch 1,000+ pages safely.
💡 Quick Tip: Use the sidebar navigation to jump between sections, or scroll through the complete guide.
🚀 Part 1: The Core Workflow
Before diving into code, understand how the "Factory" works:
1. Project Configuration
Select your Target Language carefully. This sets the locale flag in the JSON output.
2. Pattern Logic
Use variables like {City} or {Service}. Keep patterns short for better SEO.
3. Data Generation
We use Cartesian Product logic. 10 Services × 10 Cities = 100 Pages.
🛡️ 4. The "Safety" Alert
In Step 4, we warn you to publish under /blog. Publishing programmatic content to the root domain is a fast way to get de-indexed by Google.
👨💻 Part 2: Developer Integration
The Gold Standard
📘 Note: The following guide recommends the best architecture for your Next.js application to handle our exported files.
The "Raw HTML" Strategy
Since pSEO Wizard generates full, styled HTML pages, wrapping them in a standard React Layout causes style conflicts.
✅ The Solution: We use a Next.js Route Handler to serve the HTML raw.
// src/app/[locale]/blog/[slug]/route.ts
export async function GET(request, { params }) {
const post = getPostBySlug(params.slug);
if (post.locale !== params.locale) return 404;
const finalHtml = `<head><script src="https://cdn.tailwindcss.com"></script></head>
<body>${post.body_html}</body>`;
return new Response(finalHtml, { headers: { 'Content-Type': 'text/html' } });
}The JSON Drop-in System
Forget database migrations. We built a system based on File System Aggregation.
- 📁Directory:
src/app/data/posts-json/ - 🔄Workflow: Just "Drag & Drop" your exported JSON files here.
- ✨Magic: The blog-posts.ts aggregator automatically reads all files and publishes them instantly.
Dynamic "Smart" Sitemap
Your sitemap.ts is locale-aware. It scans the JSON files and generates locale-specific URLs.
This prevents "Duplicate Content" penalties from Google.
🏛️ Part 3: Technical Architecture
Why Cryptomus?
We chose Cryptomus over Stripe for specific strategic reasons:
🌍 Global Reach
Accepts crypto payments from anywhere (solving regional banking restrictions and enabling global access).
⚡ Instant Unlock
The Webhook system unlocks the "Export" button instantly upon transaction confirmation.
Anti-Spam Architecture
Our system is designed to protect your domain authority:
- All programmatic content lives under /blog subdirectory
- Each page has unique, AI-generated content (no thin content)
- Internal linking follows SEO best practices
- Proper lang and dir attributes for multilingual content
🚑 Part 4: Troubleshooting
Common issues and their solutions:
❌ White Screen / Unstyled Text
Cause: Tailwind CDN is blocked.
Fix: Check next.config.js CSP headers. Allow cdn.tailwindcss.com.
⚠️ Broken Internal Links (/og/ or //)
Cause: AI generation artifacts.
Fix: Ensure your route.ts has the "Smart Regex" cleaner.
🔍 404 on Generated Posts
Cause: Slug mismatch (often Arabic encoding).
Fix: Ensure decodeURIComponent(slug) is used in your route handler.
✅ CTA Buttons Go to /blog
Cause: Regex replaces all links with blog path.
Fix: Use separate patterns for homepage links vs blog links.
Built with ❤️ by the pSEO Wizard Team
Last updated: December 2024