All Startup Ideas

Markdown Publish Everywhere for Creators

Fmttr turns one markdown file into blog, newsletter, LinkedIn, and X thread outputs—with Ghost and Buffer publish—in under ten minutes. Weekend MVP guide.

You finish a newsletter draft in Obsidian at 10 p.m. It reads perfectly in markdown. Then the real work starts: paste into Ghost for the blog, strip headings for Substack, rewrite the intro for LinkedIn, split the middle into a Twitter thread, fix the links that broke on copy, and realize you already published a version with the wrong CTA. Most solo creators who write in markdown lose 45–90 minutes per piece just on distribution—not editing, not research, just reformatting the same ideas for four surfaces.

Built for Solo Founders, Developers, Weekend Builders, Marketers, Creators.

Creator economy scale: AI writing and content-tool SaaS products routinely price at $10–$99/month, proving willingness to pay for publishing productivity (Jasper, Copy.ai, Buffer AI tier, and comparable tools in the competitive set).

Suggested stack: Next.js 14 + Vercel, remark / unified + mdast, Supabase, Claude Haiku 4.5 + gpt-4o-mini fallback, Ghost Admin API + Buffer Publish API, Stripe Billing. Weekend scope: about 8 hours.

The Problem

You finish a newsletter draft in Obsidian at 10 p.m. It reads perfectly in markdown. Then the real work starts: paste into Ghost for the blog, strip headings for Substack, rewrite…

The Solution

Fmttr is a write-once publisher for markdown-native creators. Paste or sync one markdown file; the app renders channel-specific outputs—blog HTML, newsletter body, LinkedIn post…

Market Research

Creator economy scale: AI writing and content-tool SaaS products routinely price at $10–$99/month, proving willingness to pay for publishing productivity (Jasper, Copy.ai, Buffer…

Competitive Landscape

Ghost — Markdown-native blog + newsletter in one stack; excellent owned publishing. No social thread generation, no LinkedIn-specific formatting, no cross-platform repurposing…

Business Model

Free ($0) — 2 platform outputs per document (e.g., blog + thread), Fmttr branding on exports, manual copy-only publish

Recommended Tech Stack

Next.js 14 + Vercel — App Router dashboard, Server Actions for generation jobs, Edge runtime for quick preview renders

AI Prompts to Build This

Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.

  1. 1. Project Setup

    Build the weekend MVP of "Fmttr": paste one markdown file and get four ready-to-use outputs, a blog post, a newsletter, a LinkedIn post and an X thread, each formatted to its channel.
    
    Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link), remark and unified to parse markdown, the Anthropic API for an optional rewrite pass that may only restructure. Outputs are copied or downloaded; nothing is published for you. Deploy on Vercel.
    
    Tables (Row Level Security on, each user reads only their own rows):
    - posts(id, user_id, title, markdown, updated_at)
    - outputs(id, post_id, channel, body, status, ai_used boolean, generated_at) channel is blog, newsletter, linkedin or twitter; status is fresh or stale
    - style_guides(user_id, voice_notes, banned_phrases text[])
    
    Screens: /login, /posts, /posts/[id] (the four outputs side by side with Copy and Download), /settings (the style guide).
    Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), ANTHROPIC_API_KEY.
    
    Do not build: billing, plans or metered overage, Ghost, Buffer or Substack publishing, OAuth connections, scheduling, a job queue, image hosting.
    Done when: npm run dev starts, you can sign in, and the three tables exist with Row Level Security on.
  2. 2. Core Feature

    Build the one feature that proves Fmttr: one markdown file becomes four outputs that are correct before any model touches them.
    1. Parse the markdown into an mdast tree with remark.
    2. Build four outputs in plain code. blog: HTML with heading anchors. newsletter: HTML with inline CSS and a preheader taken from the first sentence. linkedin: plain text with line breaks and the hook in the first 210 characters. twitter: a numbered thread where each tweet is 280 characters or fewer, split on paragraph breaks and then sentences, never inside a code block or a link.
    3. An optional AI pass sends one output and the style guide to the Anthropic API and may only restructure: shorten an intro, reorder, split. Check in code that every number, URL and capitalized name in the result also appears in the source. If anything new appears, discard the AI version, keep the plain output and show "AI changes rejected: it added new facts".
    4. Lint before showing: flag empty or malformed link URLs and images with no alt text.
    5. Show the four outputs side by side with an editable box for each, Copy, and Download as.html or.md. Editing the source marks every output stale and offers Regenerate all.
    Rules: code blocks are never split into tweets. Never invent a fact, a link or a quote.
    Empty state: with no posts, show a paste box with a sample post.
    Done when: a sample post produces four outputs, every tweet is 280 characters or fewer, the LinkedIn hook fits in 210, an AI result with an injected number is rejected, and editing the source marks the outputs stale.
  3. 3. Landing Page

    Build a one-page landing site for Fmttr, a write-once publishing helper for markdown writers.
    Hero: "Write once in markdown. Publish everywhere." Sub: "One file becomes a blog post, a newsletter, a LinkedIn post and an X thread, each in the right shape. Nothing is invented." One button: Join the waitlist.
    Sections: a sample file next to its four outputs, how it works in four steps (paste, generate, tune, copy), and an FAQ on what the AI is allowed to do (reshape, never add facts), which publishing connections come next and where your posts are stored.
    Waitlist: store the email in a waitlist table in Supabase. No other service.
    Style: Geist, an off-white background, ink type, one violet accent.
    Done when: the page renders on a phone and a submitted email appears in the waitlist table.
  4. 4. Branding Package

    Use a design or image tool for this one. A coding agent cannot draw a logo.
    Brand for Fmttr: a wordmark and an icon that suggest one line that fans out into four.
    Colors: off-white, ink and one violet. Type: Geist, with Geist Mono for markdown.
    Deliverables: wordmark, icon, four channel icons (blog, newsletter, LinkedIn, thread) that read at 24 pixels, and one launch graphic.
    Done when: each deliverable is saved in one folder and the four channel icons are distinguishable in black and white.