Plug Skimflow into your stack
Keep writing where you already write, sell to software as well as people, and let readers discover you from their favourite RSS app. Three integrations, no extra accounts: Ghost sync, an x402 citation toll for AI clients, and RSS auto-discovery for Folo and RSSHub Radar.
Ghost CMS sync
Write in Ghost, monetize on Skimflow. Connect your blog once and every time you hit Publish in Ghost, the post syncs here automatically, split into payable blocks, with a free preview. Ghost stays your writing tool; Skimflow becomes the paywall. You never have to migrate.
- 1Connect once
Add your Ghost site URL and API keys in Settings → Integrations, then paste one webhook into Ghost.
- 2Publish in Ghost
When you publish a post, Ghost notifies Skimflow. We fetch the full post and split it into blocks.
- 3Review or auto-publish
Posts land in your Skimflow drafts to review, or publish instantly, your choice.
Connecting Ghost
Open Settings → Integrations and fill in the Ghost card:
- Ghost site URL — e.g. https://myblog.ghost.io.
- Content API key — read-only key from Ghost Admin → Settings → Integrations. Used to fetch the full post.
- Admin API key — used to verify that incoming webhooks really came from your Ghost. Stored encrypted, server-side only, and never shown again.
- Default monetization — Free or Pay per block, applied to every incoming post (you can still edit any post in drafts before publishing).
- Auto-publish — off by default. Off → posts wait in drafts for review. On → posts publish immediately using your default monetization. Auto-publish needs a payout wallet on file; without one, incoming posts safely fall back to drafts so nothing publishes unpaid.
After you save, Skimflow shows the exact webhook to add in Ghost Admin → Settings → Integrations → your integration → Add webhook:
textEvent: Post published Target URL: https://<your-deployment>/api/webhooks/ghost?creator=<your-id>
The card gives you a one-tap Copy button for the exact URL (your creator id is already baked in). The connection status reads Unconnected until your first published post arrives, then flips to Connected. If a webhook signature ever fails, it shows Error with a plain-language reason (usually a mismatched Admin API key).
Ghost delivers webhooks by calling your Target URL, so it has to be reachable from the public internet. On a deployed Skimflow that just works. Running locally? Put a tunnel (e.g. ngrok) in front of your dev server and use the tunnel's HTTPS URL as the webhook host. To check the pipeline end to end, publish a post in Ghost (or re-save one) and watch for the draft/notification to appear in your dashboard — the connection status flips to Connected on the first successful delivery.
Both keys are encrypted at rest (AES-256-GCM) and only ever decrypted on the server. The Admin API key is never returned to your browser, never logged, and never appears in error messages. Every webhook is signature -verified before anything is processed, and re-deliveries of the same post are ignored (idempotent), so a double-fired webhook can never create a duplicate.
Auto-detected content types
Skimflow maps each Ghost post to one of its content types automatically, then splits it into coherent blocks (headings start new blocks, code and quotes stay whole, images stay with their context). You don't have to tag anything, but tags help:
- picture
Image-heavy posts (lots of pictures, little text), or anything tagged photo / photography / gallery / visual. Each image becomes its own unlockable block.
- book
Long serialized posts (1,500+ words) tagged series / chapter / part / episode / fiction / serial, or with a title like “Chapter 3”. The chapter number is kept for ordering.
- agent-skills
Code-heavy posts (40%+ code), or anything tagged agent / skill / tool / prompt / automation, or titled “skill: …”. The intro is the free teaser; each code block + its explanation is a block.
- article
The default for everything else: prose, split block by block with a free first block.
Got a draft you weren't expecting? Open it in the dashboard, fix the type or blocks, and publish. Every sync also drops an in-app notification (“New post from Ghost is ready to review”) so nothing slips by.
Citation toll for AI agents (x402)
Every published article gets a second, machine-facing door: a single endpoint where an AI agent or HTTP client can buy the whole article in one payment and get clean, structured content back, ready to cite. This is separate from the human block-unlock flow; readers on the page are completely unaffected.
It uses the same x402 pay-to-unlock pattern and the same Circle Gateway USDC rail as the rest of Skimflow. Payment goes straight to your wallet, never a platform address.
The full-content API
httpGET /api/articles/<postId>/full-content
Free articles return 200 immediately. Paid articles answer 402 Payment Required with a price quote and these headers:
httpX-Payment-Required: true X-Payment-Amount: <sum of all paid block prices> X-Payment-Currency: USDC X-Payment-Network: ARC-TESTNET X-Payment-Address: <the creator's Circle wallet>
The price is the sum of every paid block's price. The client signs a USDC payment for that amount to the creator's wallet and retries with the X-Payment header. On success it gets the full article, all blocks, with both HTML and clean plaintext:
json{ "creatorId": "…", "creatorName": "Ada Lovelace", "postId": "…", "title": "On Analytical Engines", "canonicalUrl": "https://<deployment>/read/on-analytical-engines", "publishedAt": "2026-06-25T10:00:00.000Z", "wordCount": 1820, "blocks": [ { "index": 0, "isFree": true, "contentHtml": "<p>…</p>", "contentText": "…", "wordCount": 96 }, { "index": 1, "isFree": false, "contentHtml": "<p>…</p>", "contentText": "…", "wordCount": 240 } ], "settledAt": "2026-06-25T12:00:01.000Z", "creatorWalletAddress": "0x…" }
Worked example, agent-side (simulate-friendly):
typescriptconst url = `${base}/api/articles/${postId}/full-content`; let res = await fetch(url); if (res.status === 402) { const amount = res.headers.get("X-Payment-Amount"); // e.g. "0.100000" const payTo = res.headers.get("X-Payment-Address"); // the creator's wallet const xPayment = await signUsdcPayment({ amount, payTo }); // EIP-3009 via Circle Gateway res = await fetch(url, { headers: { "X-Payment": xPayment } }); } const article = await res.json(); // { title, blocks: [...], creatorWalletAddress, ... }
If a creator hasn't set up a payout wallet yet, the endpoint returns 503 rather than ever falling back to a platform address. Every request is logged (time, post, amount, paid/unpaid) so you can see programmatic demand for your work.
RSS feeds & Folo
RSS is a universal “subscribe” button. A reader adds your feed link to a reader app once; from then on, every post you publish shows up there automatically — no algorithm deciding who sees it, nobody having to remember to check your page. It's the same idea as subscribing to a podcast, but for your writing. You don't create or maintain anything — Skimflow builds the feed for you and keeps it up to date. A “feed” is just a web address ending in .xml that lists your recent posts in a format every reader app understands.
Every creator has a standards-compliant RSS 2.0 feed, so readers can follow you in any RSS app — Feedly, Inoreader, or AI-native readers like Folo. Paid posts appear as a free teaser plus a link to read the rest on Skimflow, so nothing paid ever leaks into the feed.
- Open your feed link in a browser: https://<deployment>/api/creators/@you/feed.xml (or tap the RSS button on your profile).
- You'll see a page of XML — one <item> block per post, each with a title, link, and date.
- If your latest posts are listed, it's working. That raw XML is what reader apps turn into a clean, readable list.
- To preview it the way readers see it, paste the same URL into Folo or Feedly, or into the W3C Feed Validator to confirm it's valid.
httpGET /api/creators/<idOrHandle>/feed.xml # RSS 2.0 feed (accepts a UUID or @handle) GET /api/creators/<idOrHandle>/posts # the same posts as JSON (?limit=N)
Both your creator profile page and every individual post page advertise the feed in their HTML <head>, so most readers auto-detect it the moment you paste a profile or post URL:
html<link rel="alternate" type="application/rss+xml" title="Ada Lovelace on Skimflow" href="https://<deployment>/api/creators/<id>/feed.xml" />
Your profile header has an RSS button that points straight at this feed — copy that URL and share it anywhere readers subscribe. The feed accepts your @handle as well as your id, so a clean /api/creators/@you/feed.xml works too.
RSSHub Radar & the RSSHub route
Because the feed link is server-rendered into the page source, the RSSHub Radar browser extension lights up on any creator or post page, one click to subscribe. Skimflow also ships a native RSSHub route for installs that prefer it:
text/skimflow/creator/:creatorId # ?limit=N supported
The route maps the public posts API into RSSHub items (free posts full, paid posts teaser-only) and lives outside the web app so it never touches the build. Drop a creator profile or post URL into Folo or RSSHub Radar and you're subscribed.
Grow your distribution
These integrations aren't just plumbing — chained together they let one post reach readers, subscribers, and even AI clients without you copy-pasting anywhere. A practical playbook:
- Publish once, land everywhere
Write in Ghost. On Publish, your newsletter goes out as usual and the same post becomes a pay-per-block page on Skimflow automatically — no double-posting, no migration.
- Syndicate teasers via RSS
Point any RSS-ingesting tool at your feed to auto-repost teasers with a link back: a Discord/Telegram RSS webhook, a Mastodon RSS bot, Zapier / IFTTT / Make, or an email-digest tool. Paid posts only ever expose the free teaser, so syndication drives unlocks instead of giving work away.
- Make yourself subscribe-able
Drop your profile or any post URL into Folo or RSSHub Radar and readers are one click from subscribing — the feed link is server-rendered into every page, so it's auto-detected.
- Let software cite you
The x402 full-content API turns AI agents and research tools into a paying audience — they buy the whole article to quote it, straight to your wallet. A distribution channel humans-only creators can't reach.
- Ride in-app discovery
Every published post surfaces in For You and in your followers' Following feed, and follows, comments, and likes fire notifications that pull readers back. Reply to commenters — engaged threads resurface your work.
- Turn readers into followers
Share your Skimflow profile link (there's a copy button on your profile). A follow means your next post lands at the top of someone's Following feed — compounding reach with every piece.
Connect your first integration
Link Ghost in Settings, or grab your feed URL from your profile.