Showing the first 18000 characters. Load the complete file to read the remainder.
# Ghost Developer Docs
- [Getting Started With Ghost](https://docs.ghost.org/index.md): Learn how to build and develop beautiful, independent publications
- [Introduction](https://docs.ghost.org/introduction.md): Ghost is an open source, professional publishing platform built on a modern Node.js technology stack — designed for teams who need power, flexibility and performance.
- [How To Install Ghost](https://docs.ghost.org/install.md): The fastest way to get started is to set up a site on **Ghost(Pro)**. If you're running a self-hosted instance, we strongly recommend an Ubuntu server with at least 1GB of memory to run Ghost.
- [Hosting Ghost](https://docs.ghost.org/hosting.md): A short guide to running Ghost in a production environment and setting up an independent publication to serve traffic at scale.
- [How To Update Ghost](https://docs.ghost.org/update.md): Learn how to update your self-hosted Ghost install to the latest version
- [Product Principles & Roadmap](https://docs.ghost.org/product.md): Developing Ghost as a product is a complex process undertaken by a small number of people with a great deal of care.
- [Architecture](https://docs.ghost.org/architecture.md): Ghost is structured as a modern, decoupled web application with a sensible service-based architecture.
- [Configuration](https://docs.ghost.org/config.md): For self-hosted Ghost users, a custom configuration file can be used to override Ghost’s default behaviour. This provides you with a range of options to configure your publication to suit your needs.
- [Staff Users](https://docs.ghost.org/staff.md): Staff users within Ghost have access to the admin area with varying levels of permissions for what they can do.
- [Publishing](https://docs.ghost.org/publishing.md): Posts are the primary entry-type within Ghost, and generally represent the majority of stored data.
- [Memberships](https://docs.ghost.org/members.md): The native Members feature in Ghost makes it possible to launch a membership business from any Ghost publication, with member signup, paid subscriptions and email newsletters built-in.
- [Recommendations](https://docs.ghost.org/recommendations.md)
- [Email Newsletters](https://docs.ghost.org/newsletters.md): Sites using the Members feature benefit from built-in email newsletters, where all posts can be delivered directly to segments of your audience in just a few clicks.
- [Ghost Security](https://docs.ghost.org/security.md): Ghost is committed to developing secure, reliable products utilising all modern security best practices and processes.
- [Ghost Handlebars Themes](https://docs.ghost.org/themes.md): The Ghost theme layer has been engineered to give developers and designers the flexibility to build custom publications that are powered by the Ghost platform.
- [Structure](https://docs.ghost.org/themes/structure.md): A Ghost theme contains static HTML templates that make use of helpers to output data from your site, and custom CSS for styling.
- [Contexts](https://docs.ghost.org/themes/contexts.md): Each page in a Ghost theme belongs to a context, which determines which template is used, what data will be available and what content is output by the `{{body_class}}` helper.
- [Index](https://docs.ghost.org/themes/contexts/index-context.md): Use: `{{#is "index"}}{{/is}}` to detect this context.
- [Page](https://docs.ghost.org/themes/contexts/page.md): Use: `{{#is "page"}}{{/is}}` to detect this context
- [Post](https://docs.ghost.org/themes/contexts/post.md): Use: `{{#is "post"}}{{/is}}` to detect this context
- [Author](https://docs.ghost.org/themes/contexts/author.md): Use: `{{#is "author"}}{{/is}}` to detect this context
- [Tag](https://docs.ghost.org/themes/contexts/tag.md): Use: `{{#is "tag"}}{{/is}}` to detect this context
- [Error](https://docs.ghost.org/themes/contexts/error.md): Error templates used for all `4xx` and `5xx` errors that may arise on a site
- [Assets](https://docs.ghost.org/themes/assets.md): Ghost themes support automatic image resizing, allowing you to use a minimal handlebars helper to output different image sizes.
- [Helpers](https://docs.ghost.org/themes/helpers.md): Helpers add additional functionally to Handlebars, the templating language Ghost themes use.
- [Functional Helpers](https://docs.ghost.org/themes/helpers/functional.md): Functional helpers are used to work with data objects. Use this reference list to discover what each handlebars helper can do when building a custom Ghost theme.
- [foreach](https://docs.ghost.org/themes/helpers/functional/foreach.md): Usage: `{{#foreach data}}{{/foreach}}`
- [get](https://docs.ghost.org/themes/helpers/functional/get.md): Usage: `{{#get "posts"}}{{/get}}`
- [has](https://docs.ghost.org/themes/helpers/functional/has.md): Usage:
- [if](https://docs.ghost.org/themes/helpers/functional/if.md): Usage: `{{#if featured}}{{/if}}`
- [is](https://docs.ghost.org/themes/helpers/functional/is.md): Usage: `{{#is "contexts"}}`
- [match](https://docs.ghost.org/themes/helpers/functional/match.md): Usage: `{{#match @custom.color_scheme "=" "Dark"}} class="dark-mode"{{/match}}`
- [unless](https://docs.ghost.org/themes/helpers/functional/unless.md): Usage: `{{#unless featured}}{{/unless}}`
- [Data Helpers](https://docs.ghost.org/themes/helpers/data.md): Data helpers are used to output data from your site. Use this reference list to discover what each handlebars helper can do when building a custom Ghost theme.
- [@config](https://docs.ghost.org/themes/helpers/data/config.md): The `@config` property provides access to global data properties, which are available anywhere in your theme.
- [@custom](https://docs.ghost.org/themes/helpers/data/custom.md): The `@custom` property provides access to custom theme settings, which are available anywhere in your theme.
- [@page](https://docs.ghost.org/themes/helpers/data/page.md): The `@page` object provides access to page properties, which are available anywhere in your theme.
- [@site](https://docs.ghost.org/themes/helpers/data/site.md): The `@site` property provides access to global settings, which are available anywhere in your theme:
- [authors](https://docs.ghost.org/themes/helpers/data/authors.md)
- [comments](https://docs.ghost.org/themes/helpers/data/comments.md): Usage: `{{comments}}`
- [content](https://docs.ghost.org/themes/helpers/data/content.md): Usage: `{{content}}`
- [date](https://docs.ghost.org/themes/helpers/data/date.md): Usage: `{{date value format="formatString"}}`
- [excerpt](https://docs.ghost.org/themes/helpers/data/excerpt.md): Usage: `{{excerpt}}`
- [social_accounts](https://docs.ghost.org/themes/helpers/data/social_accounts.md): Usage: `{{#social_accounts @site}}{{/social_accounts}}`
- [social_url](https://docs.ghost.org/themes/helpers/data/social_url.md): Usage: `{{social_url type="platform"}}` (e.g., `{{social_url type="facebook"}}`, `{{social_url type="bluesky"}}`)
- [img_url](https://docs.ghost.org/themes/helpers/data/img_url.md): Usage: `{{img_url value}}`
- [link](https://docs.ghost.org/themes/helpers/data/link.md): Usage: `{{#link href="/about/"}}About{{/link}}`
- [meta data](https://docs.ghost.org/themes/helpers/data/meta_data.md): Usage: `{{meta_title}}` and `{{meta_description}}` and `{{canonical_url}}`
- [navigation](https://docs.ghost.org/themes/helpers/data/navigation.md): Usage: `{{navigation}}` and `{{navigation type="secondary"}}`
- [post](https://docs.ghost.org/themes/helpers/data/post.md): Usage: `{{#post}}{{/post}}` or `{{#foreach posts}}{{/foreach}}`
- [price](https://docs.ghost.org/themes/helpers/data/price.md): Usage: `{{price plan}}`
- [readable_url](https://docs.ghost.org/themes/helpers/data/readable_url.md): Usage: `{{readable_url URL}}`
- [recommendations](https://docs.ghost.org/themes/helpers/data/recommendations.md): Usage: `{{recommendations}}`
- [tags](https://docs.ghost.org/themes/helpers/data/tags.md): Usage: `{{tags}}` or `{{#foreach tags}}{{/foreach}}` in `tag.hbs` you can use `{{#tag}}{{/tag}}` to access tag properties
- [tiers](https://docs.ghost.org/themes/helpers/data/tiers.md): Usage: `{{tiers}}`/ `{{tiers prefix=":" separator=" - " lastSeparator=", " suffix='options'}}`
- [title](https://docs.ghost.org/themes/helpers/data/title.md): Usage: `{{title}}`
- [total_members](https://docs.ghost.org/themes/helpers/data/total_members.md): Usage: `{{total_members}}`
- [total_paid_members](https://docs.ghost.org/themes/helpers/data/total_paid_members.md): Usage: `{{total_paid_members}}`
- [url](https://docs.ghost.org/themes/helpers/data/url.md): Usage: `{{url}}`
- [Utility Helpers](https://docs.ghost.org/themes/helpers/utility.md): Utility helpers are used to perform minor, optional tasks. Use this reference list to discover what each handlebars helper can do when building a custom Ghost theme.
- [asset](https://docs.ghost.org/themes/helpers/utility/asset.md): Usage: `{{asset "asset-path"}}`
- [block](https://docs.ghost.org/themes/helpers/utility/block.md): Usage: `{{{block "section"}}}` and `{{#contentFor "section"}} content {{/contentFor}}`
- [body_class](https://docs.ghost.org/themes/helpers/utility/body_class.md): Usage: `{{body_class}}`
- [color_to_rgba](https://docs.ghost.org/themes/helpers/utility/color_to_rgba.md): Usage: `{{color_to_rgba color alpha}}`
- [concat](https://docs.ghost.org/themes/helpers/utility/concat.md): Usage: `{{concat "a" "b" "c"}}`
- [contrast_text_color](https://docs.ghost.org/themes/helpers/utility/contrast_text_color.md): Usage: `{{contrast_text_color color}}`
- [encode](https://docs.ghost.org/themes/helpers/utility/encode.md): Usage: `{{encode value}}`
- [ghost_head & ghost_foot](https://docs.ghost.org/themes/helpers/utility/ghost_head_foot.md): Usage: `{{ghost_head}}` and `{{ghost_foot}}`
- [json](https://docs.ghost.org/themes/helpers/utility/json.md): Usage: `{{json value}}` or `{{json foo="bar" count=1}}`
- [link_class](https://docs.ghost.org/themes/helpers/utility/link_class.md): Usage: `{{link_class for="/about/"}}`
- [log](https://docs.ghost.org/themes/helpers/utility/log.md): Usage: `{{log value}}`
- [pagination](https://docs.ghost.org/themes/helpers/utility/pagination.md): Usage: `{{pagination}}`
- [partials](https://docs.ghost.org/themes/helpers/utility/partials.md): Usage: `{{> "partial-name"}}`
- [plural](https://docs.ghost.org/themes/helpers/utility/plural.md): Usage: `{{plural value empty="" singular="" plural=""}}`
- [post_class](https://docs.ghost.org/themes/helpers/utility/post_class.md): Usage: `{{post_class}}`
- [prev_post & next_post](https://docs.ghost.org/themes/helpers/utility/prev_next_post.md): Usage: `{{#prev_post}}{{title}}{{/prev_post}}` - `{{#next_post}}{{title}}{{/next_post}}`
- [reading_time](https://docs.ghost.org/themes/helpers/utility/reading_time.md): Usage: `{{reading_time}}`
- [search](https://docs.ghost.org/themes/helpers/utility/search.md): Usage: `{{search}}`
- [split](https://docs.ghost.org/themes/helpers/utility/split.md): Usage: `{{#split "apple-banana-pear" separator="-"}}`
- [translate](https://docs.ghost.org/themes/helpers/utility/translate.md): Usage: `{{t}}`
- [Content](https://docs.ghost.org/themes/content.md): The open-source Ghost editor is robust and extensible.
- [Search](https://docs.ghost.org/themes/search.md): Ghost has a native search feature that can be accessed via URL or implemented directly into themes using a single data attribute.
- [Share](https://docs.ghost.org/themes/share.md)
- [Members](https://docs.ghost.org/themes/members.md): The Members feature allows you to turn any site into a membership business with member signup, paid subscriptions and email newsletters.
- [URLs & Dynamic Routing](https://docs.ghost.org/themes/routing.md): Routing is the system that maps URL patterns to data and templates within Ghost. It comes pre-configured by default, but it can also be customized extensively to build powerful custom site structures.
- [Custom Settings](https://docs.ghost.org/themes/custom-settings.md): Custom theme settings are a powerful tool that allows theme developers to configure custom settings that appear in Ghost Admin — making it easy for site owners to make stylistic choices without needing to edit theme files.
- [GScan](https://docs.ghost.org/themes/gscan.md): Validating your Ghost theme is handled efficiently with the GScan tool. GScan will check your theme for errors, deprecations and compatibility issues. GScan is used in several ways:
- [Ghost CLI](https://docs.ghost.org/ghost-cli.md): A fully loaded tool to help you get Ghost installed and configured and to make it super easy to keep your Ghost install up to date.
- [Overview](https://docs.ghost.org/content-api.md): Ghost’s RESTful Content API delivers published content to the world and can be accessed in a read-only manner by any client to render in a website, app, or other embedded media.
- [Posts](https://docs.ghost.org/content-api/posts.md): Posts are the primary resource in a Ghost site. Using the posts endpoint it is possible to get lists of posts filtered by various criteria.
- [Pages](https://docs.ghost.org/content-api/pages.md): Pages are static resources that are not included in channels or collections on the Ghost front-end. The API will only return pages that were created as resources and will not contain routes created with [dynamic routing](/themes/routing/).
- [Tags](https://docs.ghost.org/content-api/tags.md): Tags are the [primary taxonomy](/publishing/#tags) within a Ghost site.
- [Authors](https://docs.ghost.org/content-api/authors.md): Authors are a subset of [users](/staff/) who have published posts associated with them.
- [Settings](https://docs.ghost.org/content-api/settings.md): Settings contain the global settings for a site.
- [Tiers](https://docs.ghost.org/content-api/tiers.md): Tiers allow publishers to create multiple options for an audience to become paid subscribers. Each tier can have its own price points, benefits, and content access levels. Ghost connects tiers directly to the publication’s Stripe account.
- [Parameters](https://docs.ghost.org/content-api/parameters.md)
- [Filtering](https://docs.ghost.org/content-api/filtering.md)
- [Pagination](https://docs.ghost.org/content-api/pagination.md)
- [Errors](https://docs.ghost.org/content-api/errors.md)
- [Versioning](https://docs.ghost.org/content-api/versioning.md)
- [Content API JavaScript Client](https://docs.ghost.org/content-api/javascript.md): Ghost provides a flexible promise-based JavaScript library for accessing the Content API. The library can be used in any JavaScript project, client or server side and abstracts away all the pain points of working with API data.
- [Overview](https://docs.ghost.org/admin-api.md): It’s possible to create and manage your content using the Ghost Admin API. Our content management interface, Ghost Admin, uses the admin API - which means that everything Ghost Admin can do is also possible with the API, and a whole lot more!
- [Overview](https://docs.ghost.org/admin-api/posts/overview.md)
- [Creating a Post](https://docs.ghost.org/admin-api/posts/creating-a-post.md)
- [Updating a Post](https://docs.ghost.org/admin-api/posts/updating-a-post.md)
- [Publishing a Post](https://docs.ghost.org/admin-api/posts/publishing-a-post.md)
- [Scheduling a Post](https://docs.ghost.org/admin-api/posts/scheduling-a-post.md)
- [Sending a Post via email](https://docs.ghost.org/admin-api/posts/sending-a-post.md)
- [Email only posts](https://docs.ghost.org/admin-api/posts/email-only-posts.md)
- [Deleting a Post](https://docs.ghost.org/admin-api/posts/deleting-a-post.md)
- [Card visibility](https://docs.ghost.org/admin-api/posts/card-visibility.md)
- [Overview](https://docs.ghost.org/admin-api/pages/overview.md)
- [Overview](https://docs.ghost.org/admin-api/tiers/overview.md)
- [Creating a Tier](https://docs.ghost.org/admin-api/tiers/creating-a-tier.md)
- [Updating a Tier](https://docs.ghost.org/admin-api/tiers/updating-a-tier.md)
- [Overview](https://docs.ghost.org/admin-api/newsletters/overview.md)
- [Creating a Newsletter](https://docs.ghost.org/admin-api/newsletters/creating-a-newsletter.md)
- [Updating a Newsletter](https://docs.ghost.org/admin-api/newsletters/updating-a-newsletter.md)
- [Sender email validation](https://docs.ghost.org/admin-api/newsletters/sender-email-validation.md)
- [Overview](https://docs.ghost.org/admin-api/offers/overview.md)
- [Creating an Offer](https://docs.ghost.org/admin-api/offers/creating-an-offer.md)
- [Updating an Offer](https://docs.ghost.org/admin-api/offers/updating-an-offer.md)
- [Overview](https://docs.ghost.org/admin-api/members/overview.md)
- [Creating a member](https://docs.ghost.org/admin-api/members/creating-a-member.md)
- [Updating a member](https://docs.ghost.org/admin-api/members/updating-a-member.md)
- [Overview](https://docs.ghost.org/admin-api/labels/overview.md)
- [Overview](https://docs.ghost.org/admin-api/users/overview.md)
- [Roles](https://docs.ghost.org/admin-api/users/roles.md)
- [Invites](https://docs.ghost.org/admin-api/users/invites.md)
- [Updating a user](https://docs.ghost.org/admin-api/users/updating-a-user.md)
- [Deleting a user](https://docs.ghost.org/admin-api/users/deleting-a-user.md)
- [Overview](https://docs.ghost.org/admin-api/images/overview.md)
- [Uploading an Image](https://docs.ghost.org/admin-api/images/uploading-an-image.md)
- [Overview](https://docs.ghost.org/admin-api/themes/overview.md)
- [Uploading a theme](https://docs.ghost.org/admin-api/themes/uploading-a-theme.md)
- [Site](https://docs.ghost.org/admin-api/site/overview.md)
- [Overview](https://docs.ghost.org/admin-api/webhooks/overview.md)
- [Creating a Webhook](https://docs.ghost.org/admin-api/webhooks/creating-a-webhook.md)
- [Updating a Webhook](https://docs.ghost.org/admin-api/webhooks/updating-a-webhook.md)
- [Deleting a Webhook](https://docs.ghost.org/admin-api/webhooks/deleting-a-webhook.md)
- [Admin API JavaScript Client](https://docs.ghost.org/admin-api/javascript.md): Admin API keys should remain secret, and therefore this
Measured from the saved file
Linked document
UTF-8 text size
23.7 KB24248 bytes
Token count
5851o200k_base encoding
Markdown links
187187 distinct URLs
Fenced code blocks
0184 lines in the file
Size measures the captured UTF-8 text, not compressed transfer size. Tokens are counted with a named tokenizer; other models can count differently. Neither measure establishes context compatibility or answer quality.
Project H1
Ghost Developer Docs
Context architecture
How the content is divided
1 H2 sections organize 187 parsed Markdown links. 174 links point to .md or .markdown paths; 9 link occurrences use another hostname. Linked destinations have not been recursively validated.
H2 section
Links
UTF-8 bytes
Tokens
OptionalLine 178 · Optional
3
204
48
Link counts exclude parsed fenced and inline code and resolve relative destinations against the final endpoint. Section sizes cover the text below each H2 until the next H2.
Embedded material
Code, installation and API examples
Fenced blocks
0 closed
Declared languages
No fenced blocks detected
Package-install commands
0 detected in fenced or inline code
Authentication examples
0 fenced lines match API-key, Authorization, Bearer, OAuth or access-token patterns
HTTP request examples
0 fenced lines match request-method patterns
Authentication links
0 links have authentication-related labels
Embedded example text and links to further documentation are counted separately. A code block does not establish that a sample runs or that an authentication flow succeeds.
Publisher prioritization
The Optional section
1 H2 section named “Optional” contain 3 parsed links. 184 links sit outside those sections. That puts 1.6% of the file’s parsed links under Optional.
The community proposal uses Optional by convention for secondary links that can be skipped for a shorter context. This label does not establish that everything outside it is critical, or that the material inside it is deprecated.
Machine-readable routes
MCP references and configuration text
No MCP or Model Context Protocol term was detected in the captured file. 0 links have MCP-related labels or paths. 0 fenced lines match mcpServers, mcp_servers or an mcp add command.
These are text and link observations. No MCP server connection, authentication or tool call was tested.
A verified text response establishes a companion at the checked URL. It does not prove the bundle contains all product documentation, that generation is automated, or that it fits an assistant’s context window.
Change evidence
What can be said about freshness
This capture establishes a baseline. Update frequency cannot be determined from one observation.
Linked release and migration material
16 links have release, changelog, deprecation or migration terms in their labels or paths. These provide places to investigate product changes separately.
File changes can reveal documentation edits or navigation changes. They do not by themselves measure product release velocity, accuracy, agent adoption or AI visibility.
Counts use a deterministic parser, not a spec-compliance grade. Unusual Markdown and indented code can fall outside its recognized patterns. See the llms.txt proposal and tokenizer implementation.