Skip to content
Content
Skill

/schema-maker

Generate JSON-LD structured data (Article, FAQPage, HowTo, Organization, Person with knowsAbout) and llms.txt from a markdown post. Schema is now a citation lever for AI answer engines rather than a rich-result one. Use when: 'add schema markup', 'JSON-LD for this post',

From plugin
skills
2645 skills2 commands1 hook

Claude Code

$ npx -y skills add Mikefluff/skills --skill schema-maker --agent claude-code

SKILL.md

schema-maker.SKILL.md
name: schema-maker
description: "Generate JSON-LD structured data (Article, FAQPage, HowTo, Organization, Person with knowsAbout) and llms.txt from a markdown post. Schema is now a citation lever for AI answer engines rather than a rich-result one. Use when: 'add schema markup', 'JSON-LD for this post', 'structured data', 'разметка schema.org', 'llms.txt'."
license: MIT
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
  - Glob

<objective> Turn a finished markdown post into the structured data that decides whether an answer engine can quote it. Deterministic: reads frontmatter and headings, emits validated JSON-LD. No model call, no network. </objective>

ROLE

Structured data used to be about rich results in Google. That era ended on 2026-05-07, when Google retired the FAQ rich result. The markup did not stop mattering — it changed job. AI Overviews, ChatGPT browsing, Perplexity and Gemini parse `FAQPage` first when deciding whose answer to quote, and pages carrying Tier 1 schema turn up in AI summaries markedly more often than pages without it.

So this skill optimises for citation, not for a SERP widget.

Not for writing the copy — that is `landing-copy` (marketing surfaces) or `essay-write` (longform). Not for checking whether the prose is extractable — that is `writer --aeo`. This skill assumes the text exists and describes it.

PIPELINE

1. **Read the post.** Frontmatter supplies title, date, description and tags. The body supplies the FAQ pairs.

2. **Extract Q&A automatically.** Every question-form `##` / `###` heading plus the first paragraph under it becomes a `Question` / `acceptedAnswer` pair. This is why question headings are worth the trouble twice over: they help a human scan, and they are what an engine lifts. Run `writer --aeo` first if the headings are still statements.

3. **Attach the author entity.** `knowsAbout` is the property that ties an author to a topic, and author authority became a direct ranking input in the March 2026 update. An author node without `knowsAbout` and `sameAs` is a name, not an entity.

4. **Emit one graph.** Several types go into `@graph` rather than several script tags, so a parser can resolve references between them.

5. **Paste into the page head.** For a static site, into the layout template or the post's frontmatter, depending on the generator.

python3 -m common.runners.cli.schema --from ./post.md \
  --url "https://you.dev/posts/model-drift/" \
  --author-name "Your Name" --author-url "https://you.dev/about" \
  --knows-about "Claude Code,SEO" \
  --publisher-name "You" --publisher-url "https://you.dev"

MODES

  • `--from <file.md>` — read frontmatter + body
  • `--types article,faq,organization` — which nodes to emit (default `article,faq`)
  • `--url` — canonical URL of the page
  • `--author-name` / `--author-url` / `--knows-about` / `--same-as` — the author entity
  • `--publisher-name` / `--publisher-url`
  • `--date-modified` — ISO date; defaults to `datePublished`
  • `--raw` — omit the `<script>` wrapper
  • `--llms-txt --site-name X --site-summary Y` — render an llms.txt instead

REFERENCES (load on demand)

| File | When to load | |---|---| | [references/types.md](references/types.md) | Which schema type fits the page, and what each one needs to be valid | | [references/llms-txt.md](references/llms-txt.md) | Before promising anything about llms.txt — the honest state of the convention |

CONSTRAINTS

  • **Never describe content that is not on the page.** Schema that disagrees with

the visible text is spam under Google's structured-data policy, and it is the one failure here that can cost a manual action rather than just doing nothing.

  • **FAQ questions must be questions.** A statement in a `Question` node is

rejected rather than emitted — the whole value is that engines lift the pair verbatim, and a statement defeats it.

  • **`dateModified` is not optional in practice.** Freshness is read from both

dates. An article that never declares a modification date reads as unmaintained however recently it was edited.

  • **Headlines over 110 characters are rejected.** The Article type documents the

limit and Google truncates past it.

  • **Do not oversell llms.txt.** It is a community convention with no standards

body and no vendor committed to reading it in production. Cheap and harmless, not a lever.

Read more
@mikefluff
Ships withskills

45 skills for Claude Code that make content — and refuse to let it read like a machine made it. Prose editing that strips the tells. Prompt engineering for 40+ image, video and music models, with optional one-command execution against the real APIs.

Stars on GitHub

Momentum

stars in total
26
Star history of Mikefluff/skills on GitHub, a chart by star-history.com

Other skills on skills.

audio-mix-maker

audio-mix-maker

Mix music/audio onto an existing video via ffmpeg. Modes: replace, overlay, duck (sidechain compressor lowers music under…

@mikefluff@mikefluffInstall Skill
avatar-maker

avatar-maker

Turn a user photo into N profile-pic / headshot / avatar variants in a consistent style. Identity-preserve focused, defaults to…

@mikefluff@mikefluffInstall Skill
banner-maker

banner-maker

Banner-ad / display-creative generator with standard-size presets: Google Display (leaderboard, medium rectangle, mobile,…

@mikefluff@mikefluffInstall Skill
bg-remover

bg-remover

Background removal utility — image in, transparent PNG out. Wraps Replicate-hosted models (851-labs/background-remover default;…

@mikefluff@mikefluffInstall Skill
canon-check

canon-check

Read-only story-bible auditor for fiction series with a documented canon. Cross-references character / artifact / location…

@mikefluff@mikefluffInstall Skill
carousel-builder

carousel-builder

Turn a topic or research brief into an N-slide Instagram / LinkedIn / TikTok carousel with consistent visual style and…

@mikefluff@mikefluffInstall Skill

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

@iofficeai@iofficeaiInstall Skill

Questions about schema-maker.

Which coding agents can use schema-maker?
schema-maker installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.