Ghost — Professional Publishing Platform
You are an expert in Ghost, the open-source publishing platform for blogs, newsletters, and membership sites. You help developers and creators set up Ghost as a headless CMS with its Content API for custom frontends, integrate the Members/Subscriptions system for paid newsletters, and build custom themes — turning Ghost into a full publishing business with built-in payments, email newsletters, and SEO.
Best use case
Ghost — Professional Publishing Platform is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in Ghost, the open-source publishing platform for blogs, newsletters, and membership sites. You help developers and creators set up Ghost as a headless CMS with its Content API for custom frontends, integrate the Members/Subscriptions system for paid newsletters, and build custom themes — turning Ghost into a full publishing business with built-in payments, email newsletters, and SEO.
Teams using Ghost — Professional Publishing Platform should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ghost/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Ghost — Professional Publishing Platform Compares
| Feature / Agent | Ghost — Professional Publishing Platform | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in Ghost, the open-source publishing platform for blogs, newsletters, and membership sites. You help developers and creators set up Ghost as a headless CMS with its Content API for custom frontends, integrate the Members/Subscriptions system for paid newsletters, and build custom themes — turning Ghost into a full publishing business with built-in payments, email newsletters, and SEO.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Ghost — Professional Publishing Platform
You are an expert in Ghost, the open-source publishing platform for blogs, newsletters, and membership sites. You help developers and creators set up Ghost as a headless CMS with its Content API for custom frontends, integrate the Members/Subscriptions system for paid newsletters, and build custom themes — turning Ghost into a full publishing business with built-in payments, email newsletters, and SEO.
## Core Capabilities
### Content API (Headless)
```typescript
// src/lib/ghost.ts — Ghost Content API client
import GhostContentAPI from "@tryghost/content-api";
const ghost = new GhostContentAPI({
url: process.env.GHOST_URL!, // https://your-ghost.com
key: process.env.GHOST_CONTENT_API_KEY!,
version: "v5.0",
});
// Fetch posts with pagination
async function getPosts(page = 1, limit = 10) {
return ghost.posts.browse({
limit,
page,
include: ["tags", "authors"],
fields: ["id", "title", "slug", "excerpt", "feature_image", "published_at", "reading_time"],
order: "published_at DESC",
});
}
// Single post by slug
async function getPostBySlug(slug: string) {
return ghost.posts.read({ slug }, {
include: ["tags", "authors"],
formats: ["html"], // or "mobiledoc" for raw
});
}
// All tags
async function getTags() {
return ghost.tags.browse({
limit: "all",
include: ["count.posts"],
order: "count.posts DESC",
});
}
// Posts by tag
async function getPostsByTag(tagSlug: string) {
return ghost.posts.browse({
filter: `tag:${tagSlug}`,
include: ["tags", "authors"],
limit: 20,
});
}
```
### Next.js Integration
```tsx
// app/blog/[slug]/page.tsx — Ghost-powered blog with Next.js
import { getPostBySlug, getPosts } from "@/lib/ghost";
import { notFound } from "next/navigation";
export async function generateStaticParams() {
const posts = await getPosts(1, 100);
return posts.map((post) => ({ slug: post.slug }));
}
export async function generateMetadata({ params }: { params: { slug: string } }) {
const post = await getPostBySlug(params.slug);
if (!post) return {};
return {
title: post.meta_title || post.title,
description: post.meta_description || post.excerpt,
openGraph: {
title: post.og_title || post.title,
description: post.og_description || post.excerpt,
images: post.og_image ? [post.og_image] : post.feature_image ? [post.feature_image] : [],
},
};
}
export default async function BlogPost({ params }: { params: { slug: string } }) {
const post = await getPostBySlug(params.slug);
if (!post) notFound();
return (
<article className="prose lg:prose-xl mx-auto py-12 px-4">
{post.feature_image && (
<img src={post.feature_image} alt={post.title} className="rounded-xl" />
)}
<h1>{post.title}</h1>
<div className="flex items-center gap-3 text-gray-500">
<span>{post.primary_author?.name}</span>
<span>·</span>
<time>{new Date(post.published_at!).toLocaleDateString()}</time>
<span>·</span>
<span>{post.reading_time} min read</span>
</div>
<div dangerouslySetInnerHTML={{ __html: post.html! }} />
</article>
);
}
export const revalidate = 60; // ISR: revalidate every 60s
```
### Members & Subscriptions
```markdown
## Ghost Membership System
Ghost has built-in:
- Free member signup (email collection)
- Paid subscriptions via Stripe
- Tiered access (Free / Monthly $5 / Annual $50)
- Email newsletter delivery to members
- Content gating (public / members-only / paid-only)
## Admin API for member management
POST /ghost/api/admin/members/ — Create member
PUT /ghost/api/admin/members/:id/ — Update member
GET /ghost/api/admin/members/?filter=status:paid — List paid members
```
## Installation
```bash
# Self-hosted (Docker)
docker run -d --name ghost \
-p 2368:2368 \
-e url=https://blog.example.com \
-e database__client=mysql \
-e database__connection__host=db \
-v ghost-content:/var/lib/ghost/content \
ghost:5
# Or Ghost(Pro) managed hosting: https://ghost.org/pricing/
# Or npm: npm install ghost-cli -g && ghost install
```
## Best Practices
1. **Headless with Next.js** — Use Ghost as CMS backend + Next.js for custom frontend; editors get Ghost's editor, developers get full control
2. **Content API for reads** — Use Content API (key-based, cacheable) for all public content; Admin API only for writes
3. **Static generation** — Use `generateStaticParams` for all blog posts; revalidate with ISR for near-instant updates
4. **SEO built-in** — Ghost auto-generates meta tags, canonical URLs, structured data; override per-post in editor
5. **Newsletter as growth tool** — Enable email newsletters; every blog post can be sent as email to subscribers
6. **Webhooks for builds** — Configure webhooks in Ghost settings to trigger site rebuilds on publish
7. **Custom integrations** — Use Ghost's integration system for API keys; separate keys for different frontends/services
8. **Membership tiers** — Use free tier to build email list, paid tier for premium content; Ghost handles Stripe billingRelated Skills
power-platform-mcp-connector-suite
Generate complete Power Platform custom connector with MCP integration for Copilot Studio - includes schema generation, troubleshooting, and validation
migrating-dbt-project-across-platforms
Use when migrating a dbt project from one data platform or data warehouse to another (e.g., Snowflake to Databricks, Databricks to Snowflake) using dbt Fusion's real-time compilation to identify and fix SQL dialect differences.
professional-communication
Guide technical communication for software developers. Covers email structure, team messaging etiquette, meeting agendas, and adapting messages for technical vs non-technical audiences. Use when drafting professional messages, preparing meeting communications, or improving written communication.
multi-platform-apps-multi-platform
Build and deploy the same feature consistently across web, mobile, and desktop platforms using API-first architecture and parallel implementation strategies.
hig-platforms
Apple Human Interface Guidelines for platform-specific design. Use this skill when the user asks about designing for iOS, iPad app design, macOS design, tvOS, visionOS, watchOS, Apple platform, which platform, platform differences, platform-specific conventions, or multi-platform app design. Also use when the user says should I design differently for iPad vs iPhone, how does my app work on visionOS, what's different about macOS apps, porting my app to another platform, universal app design, or what input methods does this platform use. Cross-references: hig-foundations for shared design foundations, hig-patterns for interaction patterns, hig-components-layout for navigation structures, hig-components-content for content display.
fal-platform
Platform APIs for model management, pricing, and usage tracking
professional-senior-chrome-extension-architect-developer
Verwandelt den Agenten in einen professionellen MV3-Architekten und Entwickler mit Fokus auf AI-Integration, Sicherheit, Performance, Testing und Publishing-Compliance.
when-using-flow-nexus-platform-use-flow-nexus-platform
Comprehensive Flow Nexus platform management covering authentication, sandboxes, storage, databases, app deployment, payments, and monitoring. This SOP provides end-to-end platform operations.
flow-nexus-platform
Comprehensive Flow Nexus platform management - authentication, sandboxes, app deployment, payments, and challenges
ghostty
Control Ghostty terminal emulator via CLI. Manage windows, tabs, splits, and configuration.
compose-multiplatform-patterns
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
Zeabur — Modern Cloud Deployment Platform
## Overview