Birta
← Back to Birta

Publish from a folder

Publish a Folder of Files as a Website with an AI Agent

Hand your agent a folder of notes, drafts, and images and ask it to publish. Here is what the agent converts into HTML, which files Birta actually serves, and what has to be true before a folder can go live.

The short answer

Yes, you can point an AI agent at a folder and ask it to put the contents online. What you cannot do is send the folder as it is. Birta serves files to browsers, so something has to turn your notes, drafts and screenshots into a page first, and that something is the agent, not the host.

The split is worth holding on to, because everything below follows from it. Your agent reads the folder, decides what the site should contain, writes index.html and the assets beside it, and hands that result over through its Birta connection. Birta checks the package, stores it, and serves it at an address. It does not build, render, or convert anything on the way.

So the practical question is never "will Birta accept my folder". It is "what does my agent have to produce from my folder", and that has a short answer too.

What has to be true before a folder can go live

Three conditions, and only three.

There has to be an index.html at the root of the folder being published. Without one, publication is refused outright and nothing is stored. The refusal is specific rather than generic: if an index.html exists somewhere deeper in the tree, Birta names that file and tells you either to move it to the root or to publish with its folder declared as the built site. If there is no index.html anywhere, the message says so and tells you to run the build and publish the folder that holds the result. That sentence is the clearest statement of the boundary. The build is your side of the line.

The files have to be web types. A folder full of .docx and .pdf is not a website, and Birta will not make it one.

And the whole thing has to fit the space your plan gives one project. On the free plan that is 25 MB. Not 25 MB per file, 25 MB for the site.

Which of your files reach the site

This table is the part most people get wrong about their own folder.

What is in your folderWhat happens to it
index.html and other .html filesServed as pages
.css, .js, .json, .xml, .txtServed as they are
.png, .jpg, .webp, .avif, .gif, .svg, .icoServed as they are
.woff, .woff2, .ttf, .otf, .eotServed as they are
.md, .markdownNot served. Your agent reads them and writes HTML from them
.pdfNot served. Either the agent puts the content into a page, or you link to the PDF hosted elsewhere
.mp4, .mov, .mp3, .wavNot served. Link to a public URL instead
.docx, .xlsx, .pptx, .zipLeft out entirely
.env, private keys, certificates, node_modules, .git, .DS_StoreNever uploaded at all

Two rows deserve a second look. .txt genuinely is served, which surprises people who assume plain text is treated like Markdown. And .svg counts as text rather than as an image for transfer purposes, so it travels as-is.

The last row is quieter but useful. Environment files, SSH keys, certificates and build junk are filtered out before anything is transferred. If your folder happens to contain a stray .env, it does not travel.

What your agent actually does

The conversion is the agent's work, and so is the quality of the result. If the page looks wrong, that is a conversation to have with the agent, not a hosting problem.

Given a folder of raw material, a competent agent does roughly this. It reads what is there. It proposes a shape, usually one page or a small handful. It writes the HTML and CSS. It resizes the photographs, because a folder of camera output will blow past 25 MB long before the text does. And it keeps your originals out of the published folder, so the site contains pages rather than a directory listing of drafts.

Your originals can still travel. If the agent writes the site into its own folder and declares that folder as the published one, everything outside it is kept alongside the version as source material. It is stored, and it counts against the same 25 MB, but it is not served. That is usually what you want: the notes stay with the project without becoming pages.

Two ways the folder gets across

Which one you get is decided by your client, not by you.

  1. Step 1ConvertThe agent writes the site
  2. Step 2Hand overFile by file, or folder at a time
  3. Step 3FixRead the refusal, do not guess

A client that cannot read your computer's files works through Birta's hosted connection. Claude on the web, Claude Desktop, Claude Cowork and an eligible ChatGPT workspace all fall here. The agent creates the project, opens a draft, and writes the draft file by file. Images travel base64-encoded, and that has a cost worth knowing about: every byte of a file becomes roughly 1.4 characters of message. A folder of unresized photos is expensive on this route, so ask for the resizing before the upload rather than after.

A client that works with files on your machine uses the local connection, which covers Claude Code, Codex, Cursor and ChatGPT Desktop. Here the agent does not send file contents at all. It names the project folder and the folder holding the finished site, and the connection reads both and uploads them itself.

Both routes end the same way. You get a draft at its own address, you look at it, you leave remarks on the page if something is wrong, and the agent uploads again into the same draft. Nothing is live until a separate publish call, so no edit puts anything in front of the public by accident. The full connection reference, including which client uses which route, is on the Birta MCP page.

What to say to your agent

The prompt that works is bounded. It tells the agent what to make, where to put it, and what not to touch.

Look at the files in this folder and tell me what a small website made from them would contain. Then build it: write index.html at the root of a new folder called site/, with the CSS and images next to it. Resize any photo wider than 2000 pixels. Leave my original notes, PDFs and documents outside site/. Publish site/ to a Birta draft and give me the draft address. Do not publish it live until I say so.

Notice what it does not say. It does not name a framework, ask for a build step, or describe a deployment. Those are the parts this workflow removes.

When it does not work

Four failures cover almost everything.

The package has no start page

You will see a refusal naming index.html. Either the agent wrote the site into a subfolder and published the wrong level, or it never wrote one at all. The message tells you which, because when an index.html exists somewhere it is named in the refusal.

A document is missing from the live site

It was dropped as an unsupported type. Markdown, PDFs, Word documents and video all behave this way. Ask the agent to move the content into a page, or to link out to the file where it already lives.

The upload is too big

The free plan gives one project 25 MB, and the refusal states the size it measured against that number. Images are almost always the cause. Resizing before the handover fixes it; so does moving large originals out of the folder you publish, though they still count if they travel as source material.

Birta serves files. A path ending in a slash is served the index.html inside that directory, and an explicit .html path is served as itself, so an ordinary multi-page static site works normally: /about/ and /about.html both resolve. What does not work is a single-page application, meaning one index.html at the root with routes resolved in the browser. There is no fallback for that, so every internal link returns a 404. A path written without a trailing slash and with no matching file fails for the same reason. If your agent produced a real application rather than a set of pages, the fix is a static export that writes one file per route.

When the folder is not a website

Some folders should not be published here at all. If what you have needs a server you control, a database, user accounts, scheduled work, or a private key that has to stay secret at runtime, this is the wrong home for it, and no amount of converting changes that. Birta publishes static commercial sites. An application belongs on an application host.

There is a near miss worth naming too. A Notion export lands as exactly this kind of folder, pages and asset directories and no site structure, so the mechanics on this page apply. Whether you should be exporting at all is the prior question, and the Notion comparison answers it before the folder exists.

The free plan is enough for the case this page is about: 50 projects, 25 MB each, on a birta.link address with the Birta mark left in place. Your own domain starts on the $12 Solo plan. If you want the finished page to collect enquiries, the free plan takes ten per site a month, they land in the project panel, and an email digest follows roughly 15 minutes after the first one.

Point your agent at the folder

Connect the client you already use, then ask it to build the site and show you the draft before anything goes live.

Connect your agent

Frequently asked questions