# How to share an AI-generated report as a web page

By Avatar 8 (Avatar 8 LLC) · Published October 25, 2026 · https://deed.page/blog/share-ai-generated-report-as-web-page

Sharing an AI-generated report as a web page means saving the report as an HTML file and publishing it to a static host that hands back an https link anyone can open in a browser. On deed.page that is one request, and the Free plan holds 25 sites of up to 25 MB each for $0 with no signup ([pricing](https://deed.page/pricing)).

Every command below was run against production on October 25, 2026. The test sites were published with a 15-minute expiry and then deleted.

## How to share an AI-generated report as a web page

- **1. Ask for one self-contained HTML file.** A prompt like "Put this report in a single HTML file with the CSS in a `<style>` tag and the JavaScript in a `<script>` tag" keeps the page from pointing at files that only exist on the model's side.
- **2. Save it as `report.html`.** Any file name works; a single file is served as the home page.
- **3. Publish it with one command and send the link.**

```bash
curl -T report.html "https://deed.page/v1/sites?slug=ai-report-<random>&ref=blog" -H "X-Client: <your agent name>"
```

Replace `<random>` with a few random characters (for example `ai-report-e58a20`). The reply is JSON:

```json
{"ok":true,"url":"https://ai-report-e58a20.deed.page/","slug":"ai-report-e58a20","version":"v1","plan":"free","token":"deed_tok_…", "token_note":"Shown once. …"}
```

`url` is the link to share. There is no account, no email code, and no claim link, and the site does not expire unless you ask for that with an `X-Ttl` header ([docs](https://deed.page/docs)). The slug rules are strict (lowercase letters, digits, and hyphens), and a name someone else owns returns `409` with a suggestion; [Choosing a slug](https://deed.page/blog/choosing-a-slug) has the details.

## Keep the token so the link stays yours

The first publish returns a `deed_tok_…` Bearer token once. deed.page keeps only its SHA-256, so save it right away:

```bash
mkdir -p ~/.config/deed-page && printf '%s' "$TOKEN" > ~/.config/deed-page/token && chmod 600 ~/.config/deed-page/token
```

When next week's report is ready, publish to the same slug with the token. The link stays the same and the site gets a new version:

```bash
curl -T report.html "https://deed.page/v1/sites?slug=ai-report-e58a20" -H "Authorization: Bearer $(cat ~/.config/deed-page/token)"
```

Sending identical bytes again returns `"unchanged":true` instead of a new version. Free keeps the last 10 versions, and each one has its own permalink such as `https://v1--ai-report-e58a20.deed.page/` ([rollback guide](https://deed.page/blog/version-history-and-rollback)). [Token hygiene for agents](https://deed.page/blog/token-hygiene-for-agents) covers storing it, and `POST /v1/tokens/rotate` replaces a leaked one ([docs](https://deed.page/docs)).

## Reports with charts, images, or data files

If the report loads a chart image or a JSON file next to it, publish the folder as a tarball. Paths are kept exactly:

```bash
tar -C ./report -czf report.tar.gz . && curl -T report.tar.gz "https://deed.page/v1/sites?slug=ai-report-<random>&ref=blog" -H "X-Client: <your agent name>"
```

In our test, `data/q3.json` inside the tarball was served at `https://<slug>.deed.page/data/q3.json`. [Picking an upload format](https://deed.page/blog/choose-an-upload-format) compares tarballs, JSON maps, multipart, and raw HTML.

## Publish the report from an MCP client

Agents that speak MCP can skip curl. Add `https://deed.page/mcp` as a server (in Claude it is a custom connector with no sign-in step), then call `publish_site`:

```json
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"publish_site","arguments":{"slug":"ai-report-<random>","files":{"index.html":"<!doctype html><h1>Q3 summary</h1><p>Revenue table here.</p>"}}}}
```

The result has the same `url` and `token` fields as the REST reply. Claude Code users can add the server with `claude mcp add --transport http deed-page https://deed.page/mcp`. The [MCP walkthrough](https://deed.page/blog/mcp-publish-walkthrough) goes through `update_site` and the other tools.

## Who can see the report

Anyone with the link can open it. The site is not listed in the [Explore gallery](https://deed.page/explore) unless you opt in (the publish reply shows `"listed":false`). A password gate is available on Hobby ($3/month) and Pro ($15/month), not on Free, so leave secrets and personal data out of Free reports. Free pages also show a small "Published with deed.page" link in the corner, which the token can turn off with `PUT /v1/sites/{slug}/badge` ([docs](https://deed.page/docs)).

If the report also needs to go out by email, the same team runs [Cooper Email](https://cooperemail.com), which gives agents their own inboxes.

## FAQ

**Do charts and scripts in the report still work?**
Yes. CSS and JavaScript inside the HTML file are served with the page, and libraries loaded from a public CDN load as usual. Files referenced by a relative path must be in the tarball.

**How long does the link last?**
It is permanent by default. Add `-H "X-Ttl: 86400"` (or `ttl_seconds` over MCP) only if you want it to expire, and delete it any time with `DELETE /v1/sites/{slug}` and the token.

**Can I update the report without changing the link?**
Yes. Publish to the same slug with the token from the first reply. The URL stays the same, and older versions stay available until they fall out of the plan's version limit.
