How To Upload A Cloud Site From Claude / ChatGPT
Takes a site you already generated in YACSS and pushes its pages to your own cloud storage, then gives you back the live URLs.
Pick The Client
If you manage sites for several clients, start here so you only see that client's clouds and don't publish to the wrong account.

See That Client's Cloud Accounts
Now ask for the clouds belonging to that client. Each one comes back with an account id, the provider, the account name, and the bucket already set on it, if any.
You'll get something like:
| id | provider | account | bucket |
|---|---|---|---|
| 5248 | aws | Acme AWS | acme-roofing-site |
| 5251 | cloudflare | Acme CF | (none set) |
| 5263 | bunny | Acme Bunny | (none set) |

Decide which of these you want the site on. You can pick one or several.
Check The Bucket Exists
A site can only be published into a bucket that already exists on that cloud. If the table above shows no bucket, or you want to use a different one, check what's actually there.
You'll get the real bucket names on that account. Two outcomes:
- The bucket you want is in the list. Good, use that name when you publish.
- It isn't there. Create it — see the next section.
Create The Bucket If It's Missing
Ask for it by name on that account. If a bucket with that name already exists and is yours, this simply confirms it rather than failing.


Two things worth knowing:
- Vercel, Netlify and Render don't use buckets — they deploy from a GitHub repo. For those, the "bucket" is the repository in owner/repo form, for example acmedev/acme-roofing. Use list_buckets on the account to see your repos.
- Bunny needs two things, a storage zone and a pullzone. Creating the bucket makes the storage zone only, so ask for a pullzone as well or the site won't be reachable.
Pick The Build
Ask for your recent builds and find the one you want live. Only builds showing as generated can be published.

Check The Plan Before Publishing
Ask Claude or ChatGPT to show what it would do first. Nothing is uploaded at this stage and it doesn't use any of your monthly uploads, so it's always safe to look.

It lists every cloud and bucket it would send the site to. Read that list carefully:
- Wrong number of accounts? Say which ones you actually want, for example "only Acme AWS and Acme Bunny".
- Wrong bucket on one of them? Give a bucket per account, for example "use acme-roofing-site on Acme AWS and acme-cf-site on Acme CF".
- A bucket it names doesn't exist? Go back and create it before publishing.
Publish It
When the list looks right, tell it to go ahead.
Get Your Live URLs
You'll get one line per cloud with its live URL and one of three results:
- Published — the files are up and the URL loads.
- Not publicly readable — the files uploaded fine, but the URL doesn't open yet. Almost always the bucket isn't set to public on your cloud. Make it public-read, then open the URL again.
- Failed — comes with a plain reason.
If Something Goes Wrong
| What you see | What to do |
|---|---|
| "bucket is required" | Tell it which bucket to use, for example bucket acme-roofing-site. It won't guess. |
| "The bucket does not exist" | Create it on that account first, see the section above. |
| The site uploaded but the URL won't open | The bucket isn't public. Set it to public-read on your cloud, then reload the URL. |
| "Only a generated build can be published" | The build is still a draft or still generating. Wait for it to finish. |
| Monthly upload limit reached | Each cloud counts as one upload. Upgrade under My Subscription or wait for your allowance to renew. |
| Vercel, Netlify or Render gives a broken URL | The bucket must be the GitHub repo in owner/repo form, not a project name. |
| A Bunny site won't load | The storage zone exists but there's no pullzone. Ask for a pullzone on that storage zone. |
| Upload stuck showing generating | Retry the upload. If it stalled it will now report an error instead of hanging. |