You asked an AI to build you a site and it worked. What none of them told you is what to do with what they handed over — and each hands over something different: a loose file, a folder with hundreds of files, a zip, or nothing you can download until you find the button.
This guide goes tool by tool: what you actually get, where the button is, and what to do with it. If your folder is already in hand, skip to the table.
There are only two kinds of delivery
Before the tools, the concept — everything else follows from it. What your AI handed you is one of two things:
- A single
.htmlfile (sometimes with a.cssbeside it). That already is your site. A browser reads it as-is and it can be published untouched. - A whole project —
package.json, asrc/folder, components. That is not a site yet: it is the recipe. It has to be built before the site exists.
If that is new to you, the full explanation — what the dist folder is, why it is sometimes missing — is in the guide on putting a page online. Here it is enough to know which of the two you have.
What each tool gives you
| Tool | What you get | How to get it out | Needs building? |
|---|---|---|---|
| ChatGPT | Code in the chat (or in Canvas) | Copy and paste, or ask for a file | No, if you ask for one index.html |
| Claude | An *artifact*: single-file HTML, or React | The artifact’s download button (.html / .jsx) | No for .html; yes for React |
| Cursor | The project, already on your disk | Nothing to export — you have it | Yes, almost always |
| Lovable | A full project (Vite + React) | GitHub icon → *View Code* → *Download ZIP*, or connect GitHub | Yes |
| v0 | Components or a project (React / Next) | ••• menu → *Download ZIP* | Yes |
| Bolt | A full project (runs on StackBlitz) | Download the project as a zip | Yes |
ChatGPT
It gives you the code inside the conversation, and with Canvas it edits it in place. There is no "download site" button, so the shortcut is asking properly: "give me everything in a single index.html, with the CSS and JavaScript included." Copy that block into a text file and save it exactly as index.html — not index.html.txt.
If your site has grown into several files, ask for them as a downloadable zip. And check one thing before publishing: if you ever asked it to connect a service, it may have left an API key written into the code. That must not reach the internet.
Claude
What you see in the right-hand panel is an *artifact*, and it downloads: the artifact’s button saves it as .html for a single-file page, or .jsx if it built you React components. If it is .html, you are done — that file is your site.
If it came as React (.jsx), you have half of it: a component is not a site until it is built. The simplest path is asking it to rewrite the whole thing as a single-file page; if you would rather keep React, you need the build step like any project.
Cursor
There is nothing to export here: the project is already on your disk, in the folder you opened. The question is not how to get it out but which part to publish — and that is the most repeated trap: publishing src/, the source code, instead of the built result.
Publish the whole project folder and let the platform build it, or build it yourself and publish what lands in dist (or build). If you never ran the build, that folder does not exist yet.
Lovable
It hands you a genuinely complete project — Vite with React, its dependencies, its config. To get it: the GitHub icon on your project, then View Code → Download ZIP. Unzip it and you have the folder.
If you will keep editing inside Lovable, connecting GitHub beats downloading: it stays in sync and every change you make there lands in the repository on its own. That is the route their own docs recommend, and it saves you pulling a fresh zip every time.
v0
Your project’s ••• menu has Download ZIP. What is inside depends on what you asked for: sometimes loose React components, sometimes a full Next.js project — either way it has to be built.
One warning that saves frustration: that button sometimes fails — stuck waiting for the sandbox, or a near-empty zip with just the README. It is a known, reported issue. If it happens, retry or connect the GitHub repository, which is the more reliable way out.
Bolt
It runs on StackBlitz, so what you see is a real project in the browser and it downloads as a complete zip. Same case as Lovable and v0: a project, not a site — it has to be built.
Now, publishing it
With the folder in hand, the rest is the same for all of them:
- Unzip it if you downloaded a zip. Leave the folder whole.
- Drag it into FluentOps. It works out what kind of project it is, without being told.
- If it needs building, it gets built. Nothing to install, no commands to run.
- Get your public URL, padlock included, ready to share.
It does not matter whether it came from Lovable or from an index.html ChatGPT pasted into the chat: same flow, and the site will not pause or expire afterwards.
What no tool checked for you
AI writes code that works, not code that is ready for the world. Two things are always left over, and nothing warns you:
- What you are exposing. A
.envfile, an API key pasted into the code, the entire.gitfolder. FluentOps checks on every publish and cross-references your dependencies against known vulnerabilities. - What Google needs. Generated projects ship titled
Vite App, with nositemap.xmland no preview image when the link is shared. Seven checks run, and the missing pieces get generated.
The long version of both is in the comparison of the three ways to publish.
What comes next
- Your own domain, with SSL, at no extra cost.
- A form that works so people can reach you from the site.
- The rest of your experiments: up to 21 sites on the free plan, and none of them switch off for lack of traffic.
And if your site still only opens on your own computer, start here.
Do not take it on faith — see for yourself, with the folder you already have.