Skip to content

sprezzature-publish

Publishing

Turn a folder of Markdown into a static site: per-page meta tags, a full favicon / progressive web app (PWA)-icon set from one logo, robots + sitemap + llms.txt + feeds, plain-language rewrites, and local text-to-speech (TTS) narration.

Makes

  • Per-page Open Graph + Twitter Card + Schema.org JSON for Linking Data (JSON-LD)
  • A full favicon / app-icon / PWA-icon set from one logo, plus a webmanifest
  • robots.txt, sitemap.xml, llms.txt, Atom / Really Simple Syndication (RSS), humans.txt
  • Plain-language rewrites and audio (MP3) narration via local open-source (OSS) TTS
  • A read-along bound to that narration, highlighting the sentence being spoken — and it applies to an existing HTML page with no Markdown behind it

Audits

  • Lint Markdown and catch broken links before publishing
  • Readability / grade-level checks on the copy
  • The audio and the page leave the same Markdown by different roads, so the two sentence lists are compared and the first divergence raises. A read-along one sentence out of step is worse than none: it points at the wrong line, with confidence

Say one of these

The skill triggers itself on phrasing like this, no command to memorize.

markdown to website meta tags OG card SEO GEO favicons robots.txt sitemap llms.txt Atom feed plain language narrate this post lint markdown

Reference library

The knowledge the skill draws on: read them straight from the repo.

Frequently asked questions

How do I install sprezzature-publish?

Run pip install sprezzature-publish on Python 3.10 to 3.13: that one line installs all thirteen tools, the HTTP API and the MCP server, with no extras to choose. sprezzature-publish is free and open source under the BSD 3-Clause licence, with no account or API key.

What does sprezzature-publish need besides pip?

sprezzature-publish needs Ollama running on your machine only for the tools that ask a local model: sprezzature-publish-meta, sprezzature-publish-plain, sprezzature-publish-faq (unless --no-llm), sprezzature-publish-lint --ai and sprezzature-publish-narrate --ai-hints. Linting, rendering, icons, indexes, audits and the call-to-action check need no model. Narration needs its voice files once, fetched with sprezzature-audio-install-voice --engine kokoro.

Does sprezzature-publish send my content to a cloud service?

No: sprezzature-publish runs locally. Meta tags, plain-language rewrites and FAQ answers are drafted by a model served by Ollama on your own machine, and narration is synthesised by a local open-source text-to-speech engine. Auditing a live URL reads that page and never writes to it.

Does sprezzature-publish handle SEO, GEO, AEO and llms.txt?

Yes: sprezzature-publish covers all four, and sprezzature-publish-findable writes one report for search, generative and answer engines (SEO, GEO, AEO), money pages first, with --fix for the deterministic repairs. sprezzature-publish-indexes writes robots.txt, sitemap.xml, llms.txt, llms-full.txt, an Atom or RSS feed and humans.txt, and its --offer and --cta options put what the site is for at the top of llms.txt.

Can sprezzature-publish write an FAQ with FAQPage JSON-LD?

Yes: sprezzature-publish drafts the FAQ a site is missing with sprezzature-publish-faq, from the site's own pages, ranking the questions by the calls to action declared in ctas.yaml and listing apart the ones the site cannot answer yet. sprezzature-publish-faq site/ --audit --fix rebuilds the FAQPage JSON-LD from the visible FAQ, and the tool never claims that markup makes a page rank.

Can sprezzature-publish narrate a blog post?

Yes: sprezzature-publish reads a Markdown post, or an HTML page with --scope, aloud with a local voice through sprezzature-publish-narrate, and writes the timed track beside the WAV or MP3. sprezzature-publish-readalong then binds it to the page so the sentence being spoken is highlighted, and its --check catches a page edited after the recording. The voices come from sprezzature-audio, installed with it.

How is sprezzature-publish different from MkDocs, Hugo, Jekyll or Yoast?

sprezzature-publish is sized for a README, a docs/ folder and a blog: for a hundred versioned pages or a team, MkDocs Material, Hugo or Astro are the better choice, as its own README says. Unlike an SEO plugin such as Yoast, which works inside one CMS, it builds pages and can also audit and repair the head of a site it did not build. It adds an icon set from one logo, llms.txt, a grounded FAQ and a narrated read-along.

Can I run sprezzature-publish in CI, without Claude Code?

Yes: sprezzature-publish works without any agent, as a Python library, a command line, an HTTP API with a Docker image that runs sprezzature-publish-mcp, and an MCP server. In CI, sprezzature-publish-lint exits 1 on any error with only click and the standard library behind it, and sprezzature-publish-audit and sprezzature-publish-findable exit 1 on an error finding, with --format json for a machine to read.