Site Export (Eject)

One click turns “you can always leave” into a file on your disk. Eject downloads your entire published site as a self-contained static bundle: every page, all media, your SEO files, and your subscriber list, with links rewritten to relative paths so it depends on nothing from BlackOps. Host it anywhere for free, keep your own domain.

What you get

Your source content was already portable through the git-backed vault. Site Export closes the last loop: the rendered, live site itself. The export crawls every published route, freezes each page to static HTML, and bundles everything it needs into a single downloadable zip.

The result is fully independent. Nothing points back at a BlackOps URL that would break after you cancel, so you can drop the folder on any static host and re-point your domain at it. This is the deed, not the rental.

It is a frozen snapshot

The export captures your site exactly as it looks at export time. It does not update when you publish new content in BlackOps. Re-export any time you want a fresh copy. Think of it as “Save As…” for your whole website. The interface and the bundled README both say this clearly so a snapshot is never mistaken for a still-syncing site.

How the eject works

1. Discover every page

The export reads your site’s own sitemap.xml to find every published route: home, blog posts, tag pages, landing pages, and custom pages.

2. Freeze each page

Each route is fetched exactly as a visitor sees it, so the snapshot matches your live site. The app’s JavaScript is stripped: the static HTML and CSS already look identical, and removing the runtime code removes every dynamic call back to BlackOps in one move, so nothing breaks silently after eject.

3. Bundle and re-link assets

All CSS, fonts, images, and BlackOps-hosted media are downloaded into a flat assets/ folder, and every reference (including links inside stylesheets and srcset) is rewritten to a relative path. Internal links become relative too, so the site works offline and from any host.

4. Package and download

The export runs as a background job with a live progress bar. When it finishes, the zip is ready behind a time-limited download link. Large, media-heavy sites are handled without timing out.

What’s in the zip

Every page

index.html plus one folder per route (e.g. blog/your-post/index.html). Open index.html in a browser to preview it offline.

assets/

All CSS, fonts, and images, referenced by relative paths. No runtime dependency on BlackOps storage.

SEO files

sitemap.xml, robots.txt, rss.xml, Open Graph images, and favicons, so search rankings carry over. A robots.txt is always included, even if your live site doesn’t serve one.

subscribers.csv

Your newsletter subscribers (everyone except opt-outs), so you leave with your audience and not just the signup form. A README.md and manifest.json round out the bundle.

Host it for free, keep your domain

You already own your domain. Pick a free static host, upload the folder, then re-point your DNS at it. Your URLs stay the same, so your search rankings and inbound links keep working. The bundled README.md has the exact step-by-step, including the DNS records to set.

Cloudflare Pages

The easiest free option. Create a project, choose Direct Upload, drag the folder in, then add your domain under Custom domains and set the DNS records it shows.

GitHub Pages

Upload the files to a repo (a .nojekyll file is already included so everything serves correctly), enable Pages in Settings, add your custom domain, and point DNS at GitHub’s records.

Newsletter signup

A static site has no backend, so a signup form needs somewhere to post. Both paths keep you independent of BlackOps:

Bring your own provider

Paste your email provider’s form-action endpoint (Kit, Buttondown, Beehiiv, EmailOctopus, Mailchimp) into the export options and the signup forms are rewired to post directly to it. The README tells you what to change if your provider expects a different field name.

Reconnect later

Leave it blank and the form ships inactive with reconnect instructions in the README. Either way, your existing subscribers come with you in subscribers.csv.

Running an export

Open Settings → Export / Eject Site in the admin, optionally paste your newsletter endpoint and choose whether to include subscribers and media, then click Build export. Watch the progress bar and download the zip when it’s ready. Recent exports stay listed for quick re-download while their links are valid.

Things to know

  • The export is a point-in-time snapshot. It does not update after you eject; re-export for a fresh copy.
  • Interactivity that needed a live backend (on-site search, comment widgets, live newsletter posting) is inactive in the static copy. The newsletter form is rewired to your own provider so nothing breaks silently.
  • The download link is time-limited. If it expires, reopen the export page to mint a fresh link.
  • One export runs per site at a time. Starting a second while one is in progress is blocked until the first finishes.

Your content is yours. Site Export makes the promise verifiable: at any moment you can walk away with your whole site intact, host it for free, and keep your domain.