
HTML Page Publisher lets you drop a standalone HTML file into WordPress and have it served as a landing page at a clean URL such as https://example.com/pages/your-slug/. No theme changes, no FTP, no page builder.
It is built for the “I made this page with an AI tool, now how do I get it onto my site?” moment. It includes purpose-built cleanup for Claude Design exports, and works with any self-contained HTML page — from ChatGPT, Gemini, or written by hand. (Tools that export React or Vite projects, such as v0 and Bolt, first need to be built or exported to static HTML.)
Key features
- Upload and publish: one HTML file plus its images — or a whole ZIP bundle (index.html + css/js/images/fonts) — and you get a public URL
- Drafts and previews: save a page as a draft, share a preview link that works without logging in, publish when ready
- Custom paths and front page: serve a page at
/promo/instead of/pages/promo/, or make it the site’s front page - Global snippets: add GA4/GTM/pixel, fonts or a consent banner to every page from Settings (pages can opt out)
- SEO: pages are listed in the WordPress XML sitemap, can be marked noindex, and get a canonical link
- Rename and duplicate: change a slug (the old URL redirects) or copy a page as a new draft
- REST API and WP-CLI: publish from scripts, CI, or an AI agent —
POST /wp-json/htmlpp/v1/pageswith an application password, orwp htmlpp publish. A Claude Code skill is included in the GitHub repository. - Built-in HTML editor: edit a published page in the dashboard with the native WordPress code editor (syntax highlighting)
- Version history: every save keeps the previous version; restore any earlier version with one click (restoring is itself undoable)
- File management: add, replace, or delete a page’s images, CSS, JS, fonts and other files in place — Replace keeps the original filename so existing references keep working
- Clean Claude Design exports: strips the export-time runtime wrappers Claude Design adds so the published page is pure static HTML; add rules for other tools with the
htmlpp_sanitizer_rulesfilter - Configurable URL prefix: default
/pages/your-slug/, change to anything you like (e.g./resources/,/guides/) - Optional subdomain routing: point
sales.example.comat your site and pages appear atsales.example.com/your-slug/ - Works on subdirectory installs (e.g.
example.com/blog/pages/your-slug/) - Cache-friendly: ETag and Last-Modified headers with conditional (304) and HEAD support, so browsers and CDNs revalidate cheaply while edits still show immediately
- Protected storage: pages are only served at their public URL; direct access to the uploads folder and to version-history snapshots is blocked, and Settings shows whether your web server honours the protection
- Safe by default: nonce-protected forms, capability checks, path-traversal guards, strict file-extension filtering, and no silent overwrites of live pages
- Extensible: actions and filters for add-ons (
htmlpp_loaded,htmlpp_page_published,htmlpp_before_serve,htmlpp_cache_max_age,htmlpp_allowed_asset_mimes, and more)
Use cases
- Publishing landing pages generated with Claude Design
- Publishing any AI-generated or hand-written static HTML page
- Sales collateral (rate cards, one-pagers, proposals)
- Campaign landing pages and microsites
- Rapidly publishing static HTML without touching the theme or FTP
HTML Page Publisher is an independent project. It is not affiliated with, endorsed by, or sponsored by Anthropic, OpenAI, Google, Vercel, or StackBlitz. Claude, ChatGPT, Gemini, v0 and Bolt are trademarks of their respective owners.
Screenshots

Upload a new page or ZIP bundle and see everything you have published, with each page's title, status and public URL.

Edit a published page in the dashboard with the native WordPress code editor.

Files & Assets: every file of an imported bundle — images, CSS, JS, fonts — with replace and delete in place.

Settings: URL prefix, optional subdomain, global snippets, and a live check that storage protection is active.

Page settings: draft/published, custom path or front page, noindex, rename and duplicate.