Repository navigation
Conversation
Thin adapter on the Platform API: Ghost-owned detection signals, the
default discovery (Ghost serves a standard sitemap index), and removal of
the "Powered by / Published with Ghost" footer credit.
Signals (verified on 14 live Ghost sites):
- URL: *.ghost.io (Ghost(Pro) subdomains).
- Header: ghost-fastly (Ghost(Pro) CDN).
- Source: Ghost generator meta; Portal / Search assets from
cdn.jsdelivr.net/ghost/ (self-hosted installs).
- Probe: /ghost/ redirecting to <site>.ghost.io/ghost (Ghost(Pro) custom
domains with a stripped theme head).
/content/images/ and Koenig kg-* classes are deliberately not signals:
headless front ends reading Ghost's Content API emit them too.
Cleanup uses only the link-based credit rule. The shared plain-text rule
scans <body>, and on demo.ghost.io/design/ it deleted "created with Ghost"
from post prose ("new sites are created with Ghost's friendly theme").
The shared credit phrase list gains "published with", Ghost's own
phrasing (aftermath.site).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Portal's floating "Subscribe" trigger is an iframe whose src is the live site, so the captured copy framed the source origin (compare: "copy requested demo.ghost.io, cdn.jsdelivr.net, storage.ghost.io"). Portal and Sodo Search render into #ghost-portal-root / #sodo-search-root at runtime and can't work without Ghost's members/search APIs. Verified on a full demo.ghost.io capture: neither root remains, and those external requests are gone from compare. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Theme Sign in / Subscribe / Share controls link to Portal hash routes (#/portal/signup, #/portal/signin, #/share) that only resolve while Portal runs against Ghost's members API. In the copy they pointed at anchors that don't exist, failing compare's self-consistency check on every route. Before serialize, same-site links into those routes become href="#": the control keeps its place and styling, only the dead action goes (the same treatment the pipeline gives javascript: links). Links to other sites and ordinary in-page anchors are untouched. demo.ghost.io: self-consistency findings 93 -> 0 across 32 routes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chubes4
left a comment
There was a problem hiding this comment.
Reviewed Ghost detection, builtin registration, provider-qualified credit cleanup and same-origin Portal/Share neutralization with their positive/negative browser tests. The adapter uses the existing generic discovery and cleanup contracts, preserves owner content and external links, and has a green exact-head package/build/test CI run plus the documented real Ghost corpus capture. No whole-site animation/YouTube parity claim is inferred. AI assistance: OpenAI gpt-6.1-sol via OpenCode performed source/CI review under Chris Huber’s batch-shipping authorization.
|
Integrated current main preserving both Ghost and Substack detector tests. Main now identifies the headless fixture by its explicit Next.js header: the assertion proves Next.js adapter selection and separately proves Ghost content without that header stays unknown. All 96 focused detection/cleanup/browser checks pass; TypeScript build and installed/relocated package workflows pass. A local full-suite attempt exceeded the 20-minute bound and reported a portable-motion failure; full hosted exact-head CI must pass before landing. Release-owned dist is unchanged from main. AI assistance: OpenAI gpt-6.1-sol via OpenCode reviewed, integrated and verified the update. |
Summary
Adds Ghost as a supported platform: it recognizes Ghost sites, and cleans Ghost-only pieces out of the copy.
How Ghost sites are recognized
*.ghost.ioaddress, or theghost-fastlyheader that Ghost's hosting sends./ghost/redirecting to a*.ghost.ioadmin.Ghost's image paths and editor class names are not used as signals. Sites that only pull content from Ghost (a Next.js front end, for example) use them too, and those pages aren't Ghost-built.
What changes in the copy
#. They only worked with Ghost's servers.It also teaches the shared credit remover the phrase "Published with", which is how some Ghost themes word the credit.
Testing
compare's link checks pass on all 32 pages.comparestill reports animation differences and a YouTube embed loading YouTube. Those aren't specific to this adapter.npx vitest runandtsc --noEmitpass.🤖 Generated with Claude Code