Enable CSV Columns as Page Variables for Programmatic SEO

This change will be part of the new pSEO focus of SCM.

CSV → Page Macros (v2) — Proposal Overview

Right now the CSV import is limited to a fixed schema (keyword, category, blog) and only really supports keyword → page generation.

For pSEO, we need to move toward dataset → pages, where each row can generate a fully customized page.


Problem

  • CSV is treated like a keyword list
  • No support for dynamic fields
  • Cannot generate true dataset-driven pages (local SEO, comparisons, directories, etc.)

Proposed Change

Allow any CSV column to become a template variable (macro).

Example CSV:

city,service,price
bangkok,seo audit,500

Automatically becomes usable in templates as:

%city%
%service%
%price%

How it works

Each CSV row is injected into the existing macro system:

articleMacros = {
  ...pageMacros,
  ...aiMacros,
  ...csvRow
}

So templates can do things like:

Best %service% in %city%
Pricing starts at %price%

UI Change

Replace:

Columns required: keyword, category, blog

With:

Upload a CSV to create pages from your data
All columns become usable variables

Optional:

  • Let user pick a “primary column” (for titles/URLs)

Workflow Update

This becomes a second entry point:

  1. Topic discovery (existing)
  2. Create pages from data (CSV)

Both feed into the same pipeline.


Backward Compatibility

  • If keyword exists → works as before
  • Extra columns → simply become macros
  • No breaking changes

What this unlocks

  • Local pages (city × service)
  • Comparison pages (A vs B)
  • SaaS integration pages
  • Directory-style pages
  • Any structured dataset → pages

Scope

Very small implementation:

  • CSV → object
  • Inject into macros
  • Update UI messaging

No changes needed to:

  • AI prompts
  • templates
  • generation pipeline

Outcome

Moves the product from:

AI content writer

to

programmatic SEO page generator

1 Like