Lumen Pagesby Lumen & InkDownload v1.0.4

Lumen Pages · WordPress plugin · v1.0.4

One template in.
A draft page per term out.

v1.0.4 · free · no cap, no licence key, no checkoutA small WordPress plugin for the boring part of local SEO: you write the title and body once with a {term} placeholder, paste your list of terms, and it creates one draft page for each. However many you paste — v1.0.1 removed the per-run cap and the licence key that used to lift it. It does not write your content, and it never publishes anything for you.

No email, no account, no licence key. Plugins → Add New → Upload Plugin. GPL-2.0-or-later, with the licence text in the zip — read every line before you run it.

Read all 563 lines in your browser, without downloading anything →
Check you got the same bytes: shasum -a 256 lumen-pages.zip should print 90267d474ef69cb60d675caaf29edd8067dd6a85ddf2f8bcc7593c5a75f57e4f, which is also served on its own at /plugin/lumen-pages.zip.sha256.
Prefer to pin this exact build rather than follow the current one? /plugin/lumen-pages-1.0.4.zip Every release, with its changelog, size and checksum, is listed at /plugin/versions — the plugin makes no update check, so that page is how you find out a new version exists.
The readme that ships inside the zip is also served on its own, if you want the changelog and the pre-publish checklist before you download anything: /plugin/lumen-pages-readme.txt
Questions before you install? Talk to a real person — one person reads every message.
wp-admin/admin.php?page=lumen-pages
The Lumen Pages admin screen in WordPress: a title template, a content template, and a list of Florida city names in the terms box.
The whole plugin, one screen. Captured 2026-07-30 from Lumen Pages v1.0.1 on a clean WordPress 7.0.2 install — the version is printed in the footer of the shot, and it says 1.0.1, not 1.0.4. The screen is NOT identical in 1.0.4, so read it as a layout reference rather than as a current capture: 1.0.4 adds the {Term} rule sentence, a line pointing at the example term list in the zip, a note that an existing page is skipped rather than duplicated, and two extra counts in the result message. Re-shooting it is on the list and has not happened. The terms box is scrolled; 14 cities are pasted in it. Open this capture full size →
{term} · {Term} · {TERM} placeholders{Term} keeps McAllen, DeLand and HVAC exactly as typedCreates drafts — never publishesNo per-run limitDuplicate titles collapse to one pageSkips a term whose page already existsPages or posts, your choiceRemembers your last templateNo account, no licence key, no external callsOne PHP file · 563 lines · GPL-2.0-or-later

How it works

Three fields and a button. That is the entire product.

00

Install it

Download the zip, then in wp-admin go Plugins → Add New → Upload Plugin → Choose File → Install Now → Activate. It then appears as a top-level “Lumen Pages” item in the sidebar — not under Tools or Settings — and as a “Generate” link on its own row on the Plugins screen. Needs WordPress 6.0 or newer and PHP 7.4 or newer; both floors are declared in the plugin header, so WordPress will refuse to activate it rather than half-work.

01

Write the template once

A title line and a body block, with {term} wherever the term belongs. {Term} gives you Title Case, {TERM} gives you uppercase. Basic HTML is allowed in the body. As of 1.0.3 the rule is the one the plugin itself prints, word for word: {Term} adds capitals to a word that has none and leaves a word you capitalised yourself alone: miami becomes Miami, while McAllen, DeLand, O’Fallon and HVAC come out exactly as you typed them. Two consequences worth knowing before you paste: a term typed all in lower case has no internal capital to recover (mcallen becomes “Mcallen”), and a term pasted as MIAMI now stays MIAMI. Type each term the way you want it printed.

02

Paste your terms

One per line — cities, suburbs, service keywords, whatever you're targeting. Blank lines are dropped, two terms that would produce the same page title make one page, and a term whose page already exists is skipped rather than duplicated. Every remaining term gets a page: there is no per-run limit and nothing to unlock.

03

Review the drafts

Every page is created as a draft, in Pages or Posts. Nothing goes live until you open it and publish it — which is also where you add the local detail that makes the page worth having.

A list to paste, if you want to see a real run first.

1.0.4 ships examples/us-metros.txt in the zip: the 91 metro areas restorationanswers.com publishes water-damage cost pages for, one per line, in the form “City, ST”. It was derived from that site’s own public sitemap on 2026-07-30, so the count is checkable — count the water-damage-restoration-cost- entries in https://restorationanswers.com/sitemap.xml.

It is an example input, not a data product: not a complete list of US metros, not ranked, not scored, and not the reason to install this. One entry is spelled McAllen rather than Mcallen, on purpose — it is the exact case {Term} exists to protect, so pasting the file as-is demonstrates the rule instead of describing it.

Not built. Listed here so you can stop looking for it.

An earlier version of this page advertised several of the items below as shipped features. They were not, and are not. If any of them is what you came for, Lumen Pages is not it.

  • Not included: Run-state memory — the plugin keeps no record of past runs. Since 1.0.2 it does check whether a page with the same title already exists and skips it, so a repeat run no longer duplicates; but it cannot show you which terms you have covered, and if you renamed or deleted those pages it will create them again
  • Not included: CSV or spreadsheet import — the input is a plain newline-separated list. For what it is worth, CSV import is not in page-generator’s free tier either; it is listed under its Pro features (checked 2026-07-30)
  • Not included: Scheduled or drip publishing — it creates drafts and stops
  • Not included: A one-click monetization flip / bulk CTA rewriting — no CTA code exists in the plugin
  • Not included: IndexNow or any search-engine ping
  • Not included: Junk-slug guards — WordPress generates the slug, the plugin does not police it
  • Not included: Multi-project support
  • Not included: AI-written or otherwise unique per-page content — every draft is the same template, filled
  • Not included: FAQ schema, JSON-LD or data tables — the body is exactly the HTML you type
  • Not included: Auto-updates — there is no update channel, self-hosted or otherwise
  • Not included: A WordPress.org listing — v1.0.4 is eligible to be filed, but the submission has not been filed yet

Proof

14 terms in, 14 drafts out, nothing published.

The screenshot below is the zip on this page, installed on a throwaway WordPress 7.0.2 site on 2026-07-30 and run once with 14 Florida city names. 14 is deliberate: it is more than the 10-page limit v1.0.0 enforced, so the count in it is the evidence the cap is gone. The admin screen further up this page is a different, older capture — it was shot from v1.0.1 and the version in its own footer says so. Read it as a layout reference, not as a capture of 1.0.4; its caption lists exactly what has changed since. Both captures are unretouched, including the parts that are inconvenient.

wp-admin/edit.php?post_status=draft&post_type=page
The WordPress Pages screen listing 14 draft pages, one per Florida city, all created by Lumen Pages, plus WordPress's own stock Privacy Policy draft.
Every one of the 14 cities is there. The tab reads Drafts (15), not (14), because a fresh WordPress install ships its own Privacy Policy draft — it is the last row, and it is not ours. Published (1) is WordPress's stock Sample Page; the plugin published nothing. wp post list --meta_key=_lumen_pages_generated returns exactly 14. The next step is yours: open each draft, add what is actually true about that city, then publish. Open this capture full size →

What the last version got wrong

Until today this page said nothing was for sale while the download still carried “Premium is $149/yr” in a code comment, a 10-page cap that only a licence key removed, and a “See Premium →” link back to this page — which says there is no checkout. Someone downloaded it, read line 24, and told me. They were right.

v1.0.1 removes all of it from the artifact, not just from this page. The build now fails if a price, a cap constant, a licence call or the word “Premium” reappears in the zip.

Where the idea came from

I run Restoration Answers, a local content network with 129 water-damage URLs in its sitemap — count them yourself. Doing that by hand is what made me write this plugin. It is a Next.js site, not WordPress, and those pages came from a different codebase of mine: it is the thing Lumen Pages is modelled on, not output Lumen Pages produced.

What I will not claim

No rankings, no traffic, no revenue. Lumen Pages has no users I know of and has never been sold to anyone. It saves you typing, and that is the whole of the pitch.

Editions

One edition exists. It is free, and it is complete.

The only edition · v1.0.4
$0

direct download, 22.4 KB zip — the WordPress.org submission has not been filed yet

  • Included: Paste a term list plus a title/body template with {term} placeholders
  • Included: One draft page or post per term, with no per-run limit — nothing publishes itself
  • Included: Drops blank lines, collapses terms that would produce the same title, and skips a page that already exists; remembers your last template
  • Included: All 563 lines readable in a browser tab, with a published SHA-256 for the zip
  • Included: No account, no licence key, no external calls — the zip contains no network code
  • Included: GPL-2.0-or-later, licence text included in the zip
Download the zip →
Planned
Not built

no price, no checkout, nothing to buy — and no date I can honestly give you

  • Not built: Run-state memory proper — a record of which terms you have used, so you can see coverage and slice a list. 1.0.2 only avoids creating a page whose title already exists; it cannot tell you what you have done
  • Not built: CSV / spreadsheet import instead of a textarea
  • Not built: Scheduled publishing — drafts that go live on a date you set

Those three are the things a reader told me he would pay for, and all three are on the “Not built” list. Until every one of them ships there is no paid tier, no price and no store page — and the free plugin will not be made worse to create room for one. An earlier version of this page showed $149/yr here, and the download repeated it in a comment. Nothing was ever sold at that price; it is gone from both.

Compared

Against the free plugin you would otherwise install.

Page Generator is the obvious comparison: 4,000+ active installs, 4.6/5 from 70 ratings, last updated 2026-06-29, version 1.8.6. It is free, it has auto-updates, and it does more than this does. Read the row that matters to you and pick accordingly.

Lumen Pages 1.0.4Page Generator 1.8.6 (free)
Pages per runNo capFree tier lets you set a limit; no hard cap documented
CSV / spreadsheet importNo — plain newline listNo — listed under Pro Version
Record of past runsNo — only skips a title that already existsYes — generated content can be listed, trashed or deleted
Auto-updatesNo update channel at allYes — installed from WordPress.org
Network callsNoneWordPress.org update checks
Size you can auditOne PHP file, 563 linesA full plugin with a settings UI, keyword store and page-builder integrations
CreatesDrafts only, never publishesPublish, draft or scheduled, your choice

The right-hand column was read from the WordPress.org plugin API on 2026-07-30 and from that plugin’s own listing text — nothing in it is my characterisation of a competitor. Re-check it at https://wordpress.org/plugins/page-generator/. If auto-updates or a record of past runs matter to you, that is the better tool and it costs the same as this one: nothing.

Questions

Before you install anything.

What does it actually do?

You give it a title template, a body template and a list of terms. For each term it replaces {term}/{Term}/{TERM} and creates one WordPress draft page (or post). That is the whole plugin — 1.0.4 is 563 lines of PHP with no dependencies.

Is there a limit on how many pages per run?

No. Version 1.0.0 stopped at 10 pages per run unless you had a licence key. That cap is gone in 1.0.1, along with the licence check itself. Every term you paste gets a draft. The only real ceiling is your host's PHP execution limit on a very long list. If a run gets cut short, run the same list again: since 1.0.2 a term whose page title already exists is skipped rather than duplicated, so a second run resumes instead of doubling up, and the screen tells you roughly how far the interrupted run got. In 1.0.0 and 1.0.1 that same advice would have created a second full set of duplicate drafts — the 10-page cap was quietly holding the damage down.

Does {Term} mangle names like McAllen — or acronyms like HVAC?

It did — twice, in two different ways, and both are fixed as of 1.0.3. In 1.0.0 and 1.0.1, {Term} ran every term through an unconditional Title Case, so McAllen came out “Mcallen”, DeLand “Deland”, McKinney “Mckinney”, LaGrange “Lagrange” and O’Fallon “O’fallon”, using the plugin's own default title template. 1.0.2 fixed that half: a word already in mixed case passes through untouched. But 1.0.2 still treated an ALL-CAPS word as carrying no case information and re-cased it, so HVAC repair became “Hvac Repair”, AC repair “Ac Repair”, BBQ catering “Bbq Catering”, SEO services “Seo Services” and US 1 corridor “Us 1 Corridor” — while the plugin's own admin screen sat there saying it never removes capitals. The person who found it had already checked the SHA-256 and diffed the published source against the zip byte for byte; the first list he ran it on was his own clients'. He was right, and the sentence in the box was wrong, which on a product whose only claimed edge is that you can read it and believe it is worse than a missing feature. 1.0.3 leaves an all-upper-case word of more than one character exactly as typed. The trade-off, stated because it is real: a term pasted as MIAMI now stays MIAMI rather than becoming Miami — MIAMI is also what you typed. What still cannot be recovered is a capital you never typed: mcallen becomes “Mcallen”, because nothing in the string says otherwise. Type each term the way you want it printed. Two things now stop this claim drifting again: the rule is defined once in the plugin file as LUMEN_PAGES_TERM_RULE and echoed by the admin screen rather than re-typed, and a fixture (apps/web/lib/lumen-pages-cases.json) pins 19 cases — miami, McAllen, DeLand, DeSoto, LaBelle, McKinney, LaGrange, O’Fallon, HVAC, AC, BBQ, SEO, US 1, MIAMI, mcallen and more — which are executed against the shipped file, not against a copy.

Will this get me penalised for spam?

It can, if you publish the raw output. Filling one template with a list of city names produces near-duplicate pages, and that is exactly the pattern search engines discount — Google calls them doorway pages, and its spam policies describe them at developers.google.com/search/docs/essentials/spam-policies#doorways. Two things in the plugin push against it: everything is created as a draft, so you cannot publish without opening each page, and terms that would produce the same title collapse to one page. Beyond that the plugin cannot help you, but here is the checklist used on the 91 metro pages at restorationanswers.com, which were built exactly this way — it is a description of a process, not a promise about rankings, and that site's traffic is small. Make at least these differ on every page: a cost or price range specific to that place with the source named; named local detail a resident would recognise (neighbourhoods, counties, ZIPs); one rule that genuinely varies by location, such as a permit requirement or a state insurance deadline; the meta description, written per page; and the opening paragraph, so the first thing a reader sees is not the same sentence with a swapped noun. Do not leave these identical: the H1 pattern with only the place name changed, a boilerplate hero, or an FAQ block repeated verbatim. If you cannot make a page meaningfully different from its neighbours, that page should not exist — deleting the draft is a legitimate outcome of a run. The same checklist is in readme.txt, so it is in the box and not only on this page.

Does it phone home?

The zip you can download here contains no network code at all — no licence check, no update check, no analytics. 1.0.0 did contain a licence verifier and a self-hosted update channel; both were removed in 1.0.1. You can read the whole file; it is 563 lines.

Does it work with my theme?

It creates ordinary WordPress pages, so they render in your theme like any other page. There is no custom template, no shortcode and no page builder involved.

What do I do about updates?

For now, download the new zip here and re-upload it. There is deliberately no auto-update channel: a self-hosted updater is one of the things that made v1.0.0 unfilable at WordPress.org. If the directory listing happens, updates arrive the normal way, from WordPress.org.

Can I buy anything?

No. There is no checkout, no price, no licence key and no SKU. An earlier version of this page listed $149/yr and the zip repeated it — both were wrong and both are gone. The three items under “Planned” are what would have to exist before asking for money would be fair.

There are free plugins that do more than this. Why use it?

Quite possibly you shouldn't, and the table above this FAQ is there so you can decide without taking my word for it. Page Generator v1.8.6 has 4,000+ active installs, 4.6/5 from 70 ratings, was updated 2026-06-29, and arrives through WordPress.org with auto-updates — all of which Lumen Pages does not have. It also does more: it can list and delete what it generated, and it publishes on a schedule if you want. The one thing worth correcting, because it reads like a gap only this plugin has: CSV / spreadsheet import is not in that plugin's free tier either — the bullet sits under its own "Pro Version" heading. So on the axis a reader actually raised, both free tiers are a textarea. Lumen Pages is smaller on purpose: one file you can read end to end, drafts only, no network calls, no cap, no account. If auto-updates and a run history matter more to you than reading the code, take theirs — it is free too, and it is a better fit. Every figure here was read from the WordPress.org plugin API on 2026-07-30; the listing is at https://wordpress.org/plugins/page-generator/.

Updates

You already have the plugin. This is just for version 1.0.4+.

There is no auto-update channel — deliberately — so the only way you will hear about a new version is if I email you, and I will use this list for nothing else. Being straight about where that stands: no release email has ever been sent, including for 1.0.4. The form stored addresses before there was any code that could mail them; the sender exists now but has never been run against a real address. You can remove yourself here at any time without waiting for an email to arrive. If you would rather just check back, that works too — /plugin/lumen-pages.zip is a stable link that always serves the current version.

One email per release of Lumen Pages, nothing else. No release email has ever been sent yet. You can remove yourself at any time at /unsubscribe.

Found a bug, or want to tell me the plugin is too thin to be worth shipping? Both are useful — hello@lumenandink.com.

Download Lumen Pages 1.0.4 · 22.4 KB zip