root@pseo-pro ~ bash
root@server:~$ wp pseo install --version=2.0.1
✔ PSEO PRO by KNR installed and activated.
root@server:~$ wp pseo generate --id=1 --source=data.csv
→ Fetching data source... 1,000 rows loaded.
→ Template engine initialised. Processing rows...
✔ 1,000 pages generated in 4.2s. Sitemap updated.
root@server:~$ wp pseo status
Projects: 300  |  Total Pages: 12,450  |  Orphans Cleaned: 82
Price paid: $0.00
root@server:~$

GENERATE
10,000 PAGES
IN 30 SECONDS

Programmatic SEO plugin for WordPress. Bulk-create SEO-optimised pages from CSV — with built-in Schema, Meta Tags, XML Sitemap and WP-CLI. 100% free. Open source.

Download Plugin Beginner's Guide →
Unlimited Pages
6Schema Types
$0Forever Free
GPLOpen Source

WHAT IS
PSEO PRO?

PSEO PRO is an open-source WordPress plugin built for SEO professionals, digital marketers, and agencies who need to create large volumes of highly targeted pages from structured data — without writing a single line of code.

You bring the data (a CSV file). You build one template page. PSEO PRO does the rest — replacing {{placeholders}} with your data to generate hundreds or thousands of unique, SEO-ready pages instantly.

Each generated page gets its own title tag, meta description, canonical URL, robots tag, and JSON-LD schema markup — all derived automatically from your data row.

data.csv → 500 pages
// Your CSV has 500 rows:
service, city, price
Plumbing, Bangalore, ₹499
Plumbing, Mumbai, ₹599
Electrician, Delhi, ₹450
...

// Your template:
Title: "{{service}} in {{city}}"
URL: /{{service}}/{{city}}/
Body: "Best {{service}} from ₹{{price}}"

// ⚡ Generate → Result:
/plumbing/bangalore/
/plumbing/mumbai/
/electrician/delhi/
... 497 more pages ✓

✅ 500 pages generated in 4.2s

HOW IT WORKS

01

📥 Data Fetch

Connects to your CSV upload. Parses everything into a row-by-row array where each row becomes one WordPress page. No row limits, no timeouts with WP-CLI.

CSV Upload
02

🔍 Row Hashing & Smart Diff

Each row is MD5-hashed and stored in wp_pseo_data_rows. On every sync, only rows whose hash has changed are re-processed. New rows create pages. Changed rows update pages. Deleted rows trigger orphan detection.

03

🧩 Template Engine

Your WordPress page is cloned per row. Every {{placeholder}} in title, content, URL slug, meta title, meta description, and schema fields is replaced with that row's column value. Supports {{raw:col}}, {A|B|C} spintax, and [if:col=val]...[/if] conditional blocks.

04

🚀 Page Creation & SEO Injection

Pages are created via wp_insert_post(). The SEO class hooks into wp_head at priority 1 to inject title tag, meta description, robots directive, canonical URL, and full JSON-LD schema — specific to each row's data.

JSON-LD Schema injected per page
05

🗺️ Sitemap & Auto-Sync

All generated pages are listed in a custom XML sitemap at /pseo-sitemap.xml. A WP Cron event runs on your chosen schedule — hourly, daily, or weekly — re-fetching data and regenerating changed pages completely hands-free.

EVERYTHING BUILT IN — FREE

📊

CSV Data Source

Upload your CSV directly. Column headers become {{placeholder}} names automatically. No mapping needed.

🧩

Powerful Template Engine

Placeholders, raw HTML output, spintax for content variation, and conditional blocks with full comparison operators.

🔍

Full SEO Stack

Custom title, meta description, robots, canonical URL, and JSON-LD schema per page — auto-populated from your data.

♾️

Unlimited Everything

No limits on rows, pages, or projects. Run multiple campaigns simultaneously with different data and templates.

🔄

Smart Auto-Sync

Hourly/daily/weekly cron sync. Only changed rows re-processed. Orphan pages auto-deleted when data is removed.

🗺️

Custom XML Sitemap

Dedicated sitemap at /pseo-sitemap.xml listing all generated pages. Submit directly to Google Search Console.

⌨️

WP-CLI Support

Generate, delete, and list projects from terminal. Ideal for 10,000+ pages without PHP timeout issues.

🛡️

Secure by Design

Nonce-verified AJAX, capability checks, escaped outputs, sanitized inputs. Passes WordPress Plugin Check.

🔧

Developer Friendly

PSR-4 class autoloader, pseo_schema filter hook for custom schema, clean custom DB tables, zero plugin dependencies.

BUILT FOR EVERY INDUSTRY

🔧

Home Services

Plumbing / Electrician in {{city}}

→ 1,000+ pages
🏠

Real Estate

Properties in {{city}}, {{locality}}

→ 10,000+ pages
💼

Jobs / Hiring

{{job_title}} jobs in {{city}}

→ 5,000+ pages
🛒

eCommerce

{{product}} price in {{city}}

→ 2,000+ pages
🎓

Education

{{course}} colleges in {{city}}

→ 3,000+ pages
✈️

Travel

Hotels in {{city}}, {{area}}

→ 8,000+ pages
💻

SaaS / Directories

{{tool}} alternatives & reviews

→ 500+ pages
🏦

Finance

{{loan_type}} in {{city}}

→ 1,500+ pages

WHY PSEO PRO WINS

Compared against the most popular programmatic SEO plugins for WordPress.

Feature PSEO PRO KNR ⚡ MPG by ThemeIsle WP All Import Thematic (SaaS)
Price100% Free$99–$399/yr$99/yr$99–$299/mo
No-code setup
CSV source
Built-in JSON-LD Schema 6 typesShortcode onlyLimited
Auto XML Sitemap
Row hash diff
Smart orphan deletionManualPartial
Spintax supportBasic
Conditional blocks
WP-CLI support
Auto-sync / Cron PROManual
Data on your server✗ SaaS
Open source GPL-2.0
📌 Note on MPG: MPG (48,000+ downloads by ThemeIsle) is the most popular pSEO plugin but costs $99–$399/yr and lacks WP-CLI and row-level hash diffing. PSEO PRO matches or exceeds MPG's core feature set at $0.

SYNTAX REFERENCE

{{column}}

Inserts the HTML-escaped value of the CSV column named column.

{{city}} → "Bangalore"
{{raw:column}}

Inserts the raw, unescaped value — for HTML content stored inside the CSV.

{{raw:description}} → <p>Full HTML</p>
{A|B|C}

Spintax — randomly picks one option per page generation for content variation.

{Best|Top|Leading} plumber → "Top plumber"
[if:col=val]...[/if]

Conditional block — shows content only if the column matches the given value.

[if:city=Bangalore]Local offer[/if]
[if:col>0]...[/if]

Numeric comparison — supports =, !=, >, <, >=, <= operators.

[if:rating>=4]Top Rated[/if]
{{service}}/{{city}}

URL pattern field — use placeholders in the slug for clean, keyword-rich URLs.

→ /plumbing/bangalore/

6 BUILT-IN JSON-LD TYPES

Schema is auto-generated per page from your CSV columns — no shortcodes or coding required.

📰 Article

Auto-populated from post title, date, and author.

auto

🏢 LocalBusiness

For service/location pages. Requires address, phone, and city columns.

cityaddressphone

🛍️ Product

For eCommerce or comparison pages with product name and pricing data.

product_nameprice

❓ FAQPage

Generates FAQ rich results from Q&A column pairs in your CSV.

faq_q1faq_a1

🍞 BreadcrumbList

Auto-generated from the URL structure of the generated page.

auto

💼 JobPosting

For job listing pages. Requires job title, company, and location.

job_titlecompanycity

FROM ZERO TO 1,000 PAGES

Follow these 7 steps to launch your first programmatic SEO campaign.

1

Install & Activate the Plugin

Download the zip from Download and upload via WP Admin → Plugins → Add New → Upload Plugin. After activation, go to Settings → Permalinks → Save Changes to flush rewrite rules.

💡 WP-CLI: wp plugin install pseo-pro-knr.zip --activate && wp rewrite flush
2

Prepare Your CSV File

Create your dataset with column headers in row 1 — these become your {{placeholder}} names. Save as .csv and upload directly in the plugin.

⚠️ Column names are case-sensitive. CSV column City and template {{city}} will NOT match. Always use lowercase column headers.
3

Build Your Template Page

Create a new WordPress page using Elementor, Gutenberg, or plain HTML. Write content using {{column_name}} placeholders wherever your data should appear.

  • Use {{city}} in H1 headings, paragraphs, image alt text
  • Use {{raw:description}} for HTML-heavy content columns
  • Use {Best|Top|Leading} spintax for content variation
💡 Tip: Set the template page status to Draft — it's the master template, not a public page.
4

Create a New PSEO Project

Go to PSEO PRO → New Project in WP Admin. Fill in all settings:

  • Content Template — select the Draft page from Step 3
  • URL Pattern — e.g. {{service}}/{{city}}
  • SEO Title — e.g. {{service}} in {{city}} | Brand
  • Meta Description — 120–160 chars using placeholders
  • Schema Type — choose from 6 built-in JSON-LD types
5

Preview Your Data First

Before generating, click 👁 Preview Data. This fetches your CSV live and shows the first 5 rows, total row count, and all detected column names — so you can verify placeholder names match exactly.

⚠️ Always preview before generating. Fix column name mismatches here before hitting Generate.
6

Generate Pages

Click ⚡ Generate Pages Now. PSEO PRO fetches all rows, applies the template, and creates or updates WordPress pages in bulk. For 10,000+ pages, use WP-CLI:

  • wp pseo list — view all projects
  • wp pseo generate --id=1 — generate project #1
  • wp pseo generate --all --delete-orphans — all projects + clean orphans
7

Submit Sitemap to Google Search Console

Your sitemap is at https://yourdomain.com/pseo-sitemap.xml. Go to Google Search Console → Sitemaps and submit it.

💡 Pro Tip: Enable Auto-Sync (Daily). Update your CSV → PSEO PRO auto-regenerates changed pages overnight. Fully hands-free.

WHAT YOU NEED

🌐

WordPress

Minimum: 5.5+
Recommended: 6.0+
🐘

PHP

Minimum: 7.4+
Recommended: 8.1+
🗄️

MySQL

Minimum: 5.6+
Recommended: 8.0+
🧩

PHP Extensions

json, mbstring
Standard on all hosts
🔗

Permalinks

Post name or custom
Not plain/numeric

Compatible With

Yoast SEO, Rank Math
Elementor, Divi, WooCommerce