---
description: Prepare validated Preview Data for download or GitHub publishing, and understand when the public site changes.
---

# Publishing

Studio turns saved site data into Preview Data, the JSON input consumed by
ZeroPress Build. An administrator can copy or download that data, or publish it
to an existing GitHub file. GitHub publishing is optional.

## From Editing to a Public Site

| Stage | What changes |
| --- | --- |
| Save a Post or Page | The canonical document in Studio D1 |
| Set its status to Published | Its eligibility for the next Preview Data export |
| Prepare data | A validated snapshot of the current saved site |
| Publish to GitHub | The connected repository's JSON file and commit history |
| Repository build and deployment | The public website |

Save editor changes before preparing data. An autosave or an unsaved browser
draft is not the canonical document exported to the site.

## Prepare Data

Open **Publish site** and select **Prepare data**. Studio reads the saved site
settings and content, resolves public URLs and managed media references, and
validates the result against its supported Preview Data contract.

Only published Posts and Pages are included. Draft and Trash content stays in
Studio. Account credentials, service tokens, sessions, and audit records are
not part of Preview Data. See the
[Preview Data reference](https://zeropress.dev/reference/preview-data/) for the
exported fields and their meaning.

When Edge integration is enabled, preparation also checks Edge readiness and
comment-target synchronization. Pending or inconsistent target data can block
preparation. Use [Edge Services](../integrations/edge/index.md) to resolve the
reported condition before preparing again.

## Copy or Download

After preparation, copy the JSON or download it for your build. These actions
remain available when GitHub publishing is disabled or GitHub cannot be reached.
They do not write to GitHub or trigger a deployment.

Use [Studio Starter](https://github.com/zeropress-app/zeropress-starter-studio)
for a ready-made public-site repository, or supply the JSON to your own
[ZeroPress build](https://zeropress.dev/guides/cli/).

## Publish to GitHub

With a connection enabled, Studio compares prepared data with the target file.
The page distinguishes an unchanged file from a failed comparison. An unchanged
result disables publishing; an API failure does not count as unchanged data.

Select **Publish to GitHub** and confirm the repository, branch, and path.
Studio checks the prepared content and remote file again before writing.
If either changed, review the new state and prepare or confirm again as directed.

**Updated on GitHub** confirms the commit. The repository's connected hosting
service reports the later build and deployment result. Studio does not track
that deployment or automatically publish later edits.

See [GitHub Publishing](github/index.md) for connection setup, hash comparison,
and conflict handling.
