Description
This is a public beta (0.10.0). Masetti Static Site Publisher lets you keep WordPress as the place where you write, and serve the public site as plain static files from a cloud provider. There is no PHP and no database in front of your visitors: the site is fast, cheap to run and has almost nothing to attack.
What it does
- Exports the site by reading your own pages the way a visitor does (from your server to itself), so what is published is exactly what you see. You choose which content goes in, and a report tells you what was left out and why (forms, passwords, external links, search).
- Creates the hosting for you with a guided setup: an Amazon Web Services stack (private S3 bucket behind CloudFront), a Cloudflare Worker with static assets, or a Netlify site. Nothing is created before you confirm a summary of what will be made.
- Shows what it costs before you create anything, and lets you read what AWS really charged for a site afterwards. The estimates come from price tables inside the plugin, which can be out of date: they are an estimate, not a bill.
- Publishes versions and lets you put an earlier one back. A check compares the live site with the version you think is online and tells you if anything differs.
- Connects your own domain on Cloudflare and Netlify: the plugin links the name for you. On AWS the site answers on the address AWS gives it; connecting a domain there is not part of the plugin yet.
- Removes what it made: deleting a site deletes only the resources the plugin created, never anything else in your account.
- Speaks your language: the interface is translated (Italian included) and follows the language of your WordPress.
- Lets AI agents look, not touch (optional, off by default): an administrator can allow tools such as Claude Code, Codex or Cursor to read the state of the sites over MCP. An agent can only ask for an export or a publication; an administrator approves it in WordPress.
Your cloud account, your data
You use your own account with each provider. The credentials are stored encrypted in your database, are never written to the log and are sent only to that provider. The plugin is free and complete; there is no paid feature locked inside it.
Good to know
- Dynamic features cannot run on a static site. Forms, comments, search and anything that needs PHP at the moment of the visit are not part of the published site (the export report lists what it found).
- Creating resources at a cloud provider can cost money on your account. The plugin shows an estimate, asks for your confirmation and never creates anything on its own.
- A page cache in front of WordPress can stop the export from reading your pages; the plugin tells you when it happens.
Source code
The administration interface is built from the human-readable sources in the js/ directory
(React with @wordpress/scripts, Tailwind CSS 4 and Radix UI primitives). To rebuild it:
npm install && npm run build. The build configuration (postcss.config.js, webpack.config.js)
is included.
Third-party libraries
The plugin ships these open source libraries, all licensed under terms compatible with the GPL
(the Apache License 2.0 is compatible with version 3 of the GPL, which the “or later” of the plugin
license allows):
PHP, in vendor/ and vendor-prefixed/:
- AWS SDK for PHP (
aws/aws-sdk-php, the official SDK), Apache License 2.0: https://aws.amazon.com/sdk-for-php/ - Guzzle (
guzzlehttp/guzzle,guzzlehttp/psr7,guzzlehttp/promises), PSR interfaces, jmespath.php and the Symfony polyfills and filesystem component, MIT license - AWS Common Runtime for PHP (
aws/aws-crt-php), Apache License 2.0 - Action Scheduler (
woocommerce/action-scheduler), GPL-3.0-or-later
The AWS SDK and its dependencies are included unmodified, except that their namespaces are prefixed
with ASBuilder\Vendor (done with PHP-Scoper) so they cannot collide with other plugins.
third-party/composer.json and third-party/composer.lock list the exact versions.
JavaScript, in the compiled administration interface:
- Radix UI primitives (
radix-uiand its dependencies), MIT license: https://www.radix-ui.com/ - Tailwind CSS (build-time, generates the stylesheet), MIT license: https://tailwindcss.com/
- shadcn/ui component patterns, adapted in
js/ui/, MIT license: https://ui.shadcn.com/ - clsx and tailwind-merge, MIT license
- Lucide icons (
lucide-react), ISC license: https://lucide.dev/ - tslib, 0BSD license
Typeface, in fonts/ (loaded from your own site, never from another):
- Public Sans, SIL Open Font License 1.1 (
fonts/OFL.txt): https://github.com/uswds/public-sans
External services
The plugin talks to a cloud provider only after you have chosen it and entered your credentials for it, and only to set up, check, publish to or remove your own site. It sends no data to the author of the plugin and has no tracking, advertising or usage statistics.
Amazon Web Services (AWS) — to create, update, check and delete the hosting of a site (CloudFormation, S3, CloudFront, Certificate Manager, IAM and STS) and to upload the files of the site to your S3 bucket. It sends your access credentials (or the role you configured), the names and settings of the resources, and the files of your exported site. It is used when you create, change, publish, check or delete a site, and when you test the connection. Terms: https://aws.amazon.com/service-terms/ — Privacy: https://aws.amazon.com/privacy/
AWS Cost Explorer — only when you press “Read the real cost” for a site. It sends the label of that one site (asbuilder:site) and the period, and returns what AWS charged for it. AWS charges about 0.01 USD for each reading, so the plugin never does it by itself. Same terms and privacy policy as AWS.
Cloudflare — to create, check, publish to and delete the Worker that serves a site, and to link your own domain to it (api.cloudflare.com). It sends your API token and account ID, the name and settings of the Worker and the files of your exported site. It is used when you create, change, publish, check or delete a site, and when you test the connection. Terms: https://www.cloudflare.com/terms/ — Privacy: https://www.cloudflare.com/privacypolicy/
Netlify — to create, check, publish to and delete a Netlify site, and to link your own domain to it (api.netlify.com). It sends your access token, the name and settings of the site and the files of your exported site. It is used when you create, change, publish, check or delete a site, and when you test the connection. Terms: https://www.netlify.com/legal/terms-of-use/ — Privacy: https://www.netlify.com/privacy/
The plugin does not download code from anywhere: everything it runs is in the plugin. Its own pages (dashboard, setup wizard) load nothing from other sites; the typeface is served from your site. The credits box in the dashboard has links to the author’s websites, which are opened only if you click them.
Privacy
The plugin stores, in your own database, the sites you set up, the credentials you enter (encrypted), the exports and publications, and a log with credentials and secrets removed. It sets no cookies on the visitors of your site. When you delete the plugin, this data is removed (to keep it, set the option asbuilder_keep_data_on_uninstall before deleting the plugin). Data held by the cloud providers is governed by their own policies, linked above. If you publish a site to a provider, the published files are public to whoever visits that site, as with any website.
Screenshots






FAQ
Does it cost anything?
The plugin is free. The hosting is paid to the provider you choose, on your own account. A small static site usually costs cents a month on AWS and can fit inside the free tiers of Cloudflare and Netlify, but check the current prices of your provider: the plugin’s estimate comes from price tables that can be out of date.
Which providers are supported?
Amazon Web Services, Cloudflare and Netlify. Google Cloud and Azure are planned.
What happens to forms, comments and search?
A static site cannot run them. The export report lists what was found so you can replace them with a service of your choice. The Forms page shows what each form needs. A separate add-on to receive the messages of the forms in your own cloud account is being prepared (see the next question).
What is the Add-ons page?
A list, inside the plugin, of the separate add-ons for things that need their own services; for now only the Forms add-on, marked as coming soon. The list is part of the plugin: it does not contact any server, collects nothing and locks nothing. The plugin works in full without add-ons.
Do I lose WordPress?
No. WordPress stays where you write and manage the content, and can be on any hosting, including a private one. Visitors never reach it.
The export stops and talks about a page cache. What do I do?
A page cache or a proxy in front of WordPress (a caching plugin, the cache of your host, a CDN) answered with a saved copy instead of the page WordPress makes for this site (its home page and menus), and the plugin does not publish a page that is not the one you chose. Make the cache skip every request that carries the header X-ASBuilder-Crawl: the plugin adds it only to the requests it makes to read your own site. Visitors are not affected.
Is anything created without my consent?
No. Before anything is created you see the list of resources, the estimated cost and a confirmation box, and the server checks again that the plan has not changed. Deleting a site removes only what the plugin created.
Can I use it in my language?
The interface is in English and Italian, and follows the language of WordPress. Translations are welcome on translate.wordpress.org.
How do I see what a site really costs?
The estimate of the month is always shown. For what AWS really charged, open the site and press “Read the real cost”. It needs the label asbuilder:site to be activated as a cost allocation tag in the AWS billing console, once for the whole account, by whoever pays the bill:
- Sign in to the AWS console with the account that pays the bill. If the account belongs to an AWS organization, only its management account can do this.
- Open Billing and Cost Management and choose “Cost allocation tags”.
- Select the key asbuilder:site and choose “Activate”. The key shows up there up to a day after the first site is created.
- Wait: AWS can take up to a day to activate it, and the costs are refreshed once a day.
- For the costs from before the activation, choose “Backfill tags” on the same page, pick the month the site was made and confirm.
Until then the reading is empty. AWS charges about 0.01 USD for each reading, which is why the plugin only reads when you ask, and not more than once every ten minutes for the same site.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Masetti Static Site Publisher” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Masetti Static Site Publisher” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.10.0
- Fixes the package of 0.9.3, which had its job queue library (Action Scheduler) one folder too deep: on a site where no other plugin brings that library (WooCommerce does), an export could not start. The Plugins screen now says so when the job queue is missing.
- New admin: a dashboard with every site, a guided creation of a new site, one Publish button that exports and uploads in the background, and a page for each site.
- Each piece of content belongs to one site. In Content you choose the pages, posts and menus of each site and the home page it serves; a site that would publish content of another site is stopped before it publishes, with a message that says why.
- Sites made with 0.9.3 keep publishing what they published. A site that is online and had never chosen its content now has that choice written down for it (the types it exported and the home page WordPress shows) and, like every site with a choice, no longer adds pages only by following links (archives, author pages). A site that never published starts like a new one; if two online sites share content, both are stopped until you choose in Content what each one publishes.
- A page cache in front of WordPress that gets in the way of the export is now named in the error, with what to do about it (see the FAQ).
- The Forms page is grouped by site, the plugin proposes the address the site answers at as its public address, and the Add-ons page lists the separate add-ons (Forms, coming soon).
0.9.3
- The package no longer contains macOS metadata files (
._*) inside the bundled libraries.
0.9.2
- AWS, Cloudflare and Netlify can be chosen when creating a site on any WordPress install: they were wrongly shown as “Coming soon” outside development sites.
0.9.1
- Renamed to Masetti Static Site Publisher (slug masetti-static-site-publisher).
- Translations are no longer bundled: they come from translate.wordpress.org.
- Every REST route spells out its capability check; the install error notices show only on the Plugins screen.
0.9.0
- First public beta: export of the site as static files, guided creation of the hosting on AWS, Cloudflare or Netlify, versions and restore, site check, own domain on Cloudflare and Netlify, cost estimates and real cost on AWS, optional read access for AI agents.
