Publish HTML from ChatGPT to a private link with a Custom GPT
ChatGPT writes plenty of HTML, from Canvas drafts to full reports, but sharing it with a client means copying it somewhere. A Custom GPT with an Outbox Action publishes it straight to your private library and can create a link for each person who should read it.
Set it up as a Custom GPT Action
- In Outbox, create an API key under Settings → Keys. Scope it to one folder (for example
gpt) and give it thepublishverb, plusshareif the GPT should create links. - In the GPT editor, open Configure → Actions → Create new action.
- Authentication: API Key, auth type Bearer, and paste the key.
- Paste the schema below. Save, then test with "publish a test page".
openapi: 3.1.0
info:
title: Outbox
version: "1.0"
servers:
- url: https://api.out-box.dev
paths:
/publish:
post:
operationId: publishPage
summary: Publish or update an HTML page in Outbox (private by default)
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [slug, html, model]
properties:
slug: { type: string, description: "Path in the library, e.g. clients/acme/report" }
title: { type: string }
html: { type: string, description: "A complete, self-contained HTML document" }
model: { type: string, description: "Id of the model that wrote the page" }
responses:
"200": { description: Published; the body includes the page URL }
/api/share:
post:
operationId: createShareLink
summary: Create a private share link for one recipient
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [resource, resourceType]
properties:
resource: { type: string, description: "The page slug" }
resourceType: { type: string, enum: [post] }
recipient: { type: string, description: "Who the link is for, e.g. Laura · Acme" }
expiresInDays: { type: integer, minimum: 1, maximum: 365 }
responses:
"200": { description: The link (url, token, expiresAt) }Add a line to the GPT's instructions: "When asked to publish, send a complete HTML document, use slugs under gpt/ and set model to the model you are running on."
What works today, and what doesn't
- Works: publishing and republishing pages, and creating named share links, through the Action above.
- Not yet: a native Outbox connector inside ChatGPT. It is planned; until then the Custom GPT is the supported path.
- Anyone you share the GPT with publishes with your key. Keep it to people you trust, and scope the key to one folder.
What people publish from ChatGPT
- A Canvas draft turned into a client-ready page, with a link for each stakeholder.
- A weekly market summary a GPT writes on request, republished to the same slug so the link never changes.
- Briefing pages for a sales team, each rep sending their own link to their account.
ChatGPT Sites vs Outbox
ChatGPT Sites builds and hosts sites and apps from ChatGPT. Outbox is where pages from any agent go to be shared with specific people. See Outbox vs ChatGPT Sites.
Frequently asked questions
Do I need a paid ChatGPT plan?
Creating Custom GPTs with Actions depends on your ChatGPT plan; check OpenAI's current terms. On the Outbox side, the free plan is enough to start.
Can I protect the link with a passphrase from ChatGPT?
The schema above keeps it simple. Add a passphrase string property to the share action (4 to 256 characters), or set it later from Library → What I share in Outbox.
Related
Updated 2026-10-11. Markdown version