A free Claude skill that writes service pages on an eleven-block skeleton that converts — situation, inclusions, price transparency, proof, FAQ — with the schema markup generated alongside.
The page answers cost, time, and “will they show up” for the human, in a structure the engine understands — and it refuses to write from a service name alone.
Local service businesses that need pages that sell, not brochures: plumbers, electricians, dentists, roofers, cleaners, restaurants with catering or events.
Also for the web folks building those sites, who'd rather start from a converting skeleton than a blank page.
“Write a service page for water heater replacement.” · “We need a page for Invisalign.” · “Write SEO copy for our catering service.”
After intake (a price range the owner will stand behind, three differentiators, two real reviews), here's how the page starts:
H1: Water Heater Replacement in Des Moines — Same-Day in Most Cases
Subhead: Fixed right the first time — 1,400+ water heaters installed since 2009.
CTA block: 📞 (515) 555-0121 · [Get my free quote]
The situation: No hot water this morning? Or the tank's leaking onto the basement floor and you're googling with one eye on it? Either way, you need a straight answer on cost and timing — today.
What it costs: Most standard replacements land between $1,400 and $2,200 installed — tank size, venting, and code updates move it up or down. You'll get the exact number before any work starts.
Ships with: Service + FAQPage JSON-LD matching the page content, title tag, meta description, and a 3-line publish checklist (validate schema, link from homepage and related pages).
Notice the price range on the page. The customer will get a number somewhere — the site that gives it earns the call.
Option 1 · Claude Code
In your terminal, run:
npx skills add buildwithreef/claude-skills
Pick service-page-writer from the list (or install the whole set). Done.
Option 2 · Claude.ai
Download the .zip below, then in Claude.ai go to Settings → Capabilities → Skills and upload it.
Download service-page-writer.zipOption 3 · Manual
Copy the SKILL.md below into ~/.claude/skills/service-page-writer/SKILL.md. The zip also includes the fully worked example page the skill builds from.
---
name: service-page-writer
description: Writes high-converting service pages for local businesses (plumbers, dentists, restaurants, contractors) using a proven page skeleton, local copy rules, and schema markup guidance. Use when the user needs a page for a specific service, says "write a service page", "we need a page for [service]", or wants SEO landing copy for a local service.
---
# Service Page Writer
A service page has two readers: a stressed human deciding who to call, and a search engine deciding who to show. Write for the human in a structure the engine understands.
## Step 1 — Intake
Never write from the service name alone. Collect:
- [ ] The service, and what jobs it actually includes/excludes
- [ ] Business name, city, service area
- [ ] Price signal the owner will commit to ("from $X", "typical range $X–Y", or "free quote" if truly nothing else)
- [ ] 2–3 real differentiators (years, jobs count, response time, guarantee, licenses) — push past adjectives: "what can you say that a competitor can't copy-paste?"
- [ ] 2–3 real reviews mentioning this service (names + towns)
- [ ] Photos available of this work
- [ ] The 5 questions customers actually ask before booking this service
- [ ] Emergency/after-hours availability, financing, brands used
## Step 2 — Build on the skeleton
Eleven blocks, in order. Every block earns its place; skip a block only if the intake gave nothing real for it.
1. **H1:** `[Service] in [City]` — plus the strongest differentiator if it fits naturally.
2. **Subhead:** outcome + trust in one line. "Fixed right the first time — 1,400+ water heaters since 2009."
3. **CTA block:** clickable phone + one button ("Get a free quote"). Repeats after blocks 6 and 11.
4. **The situation:** 2–3 sentences in the customer's shoes — the problem as they'd describe it, not as the trade describes it. ("No hot water this morning" — not "sediment accumulation reduces heating efficiency.")
5. **What's included:** bulleted, concrete. What happens on the visit, what's covered, what they leave with.
6. **Price transparency:** the range and what moves it. Owners resist this; make the case — the customer will get a number somewhere, and the site that gives it earns the call. Even "most jobs land between $X–$Y; here's what pushes it up or down" beats silence.
7. **Why us:** the intake differentiators, stated as facts with numbers. Three maximum.
8. **Process:** 3–4 steps from call to done. Kills the fear of the unknown.
9. **Reviews:** 2–3, this service specifically, name + town.
10. **Service area:** the towns, written as a sentence, not a keyword pile.
11. **FAQ:** 5–7 of the real pre-booking questions. Each answer is complete enough to stand alone (these are schema fodder and objection handlers).
A fully worked example page (plumber, water heater replacement) is in [references/template.md](references/template.md).
## Step 3 — Copy rules
- Reading level ~8th grade. Short sentences. No trade jargon without a plain-word gloss.
- "You" outnumbers "we." Count if unsure.
- Specifics beat adjectives everywhere: "background-checked, in your driveway inside 2 hours" not "reliable and professional."
- Banned: "Welcome to," "we pride ourselves," "your satisfaction is our priority," "look no further."
- The page must answer cost, time, and "will they show up" — those are the three real questions.
- Multi-city businesses: one page per service; city pages only with city-specific proof (see the local-seo-audit skill).
## Step 4 — Schema markup
Emit JSON-LD with the page, in a code block, with a note on where it goes (one `<script type="application/ld+json">` in the head):
- **Service** schema: `serviceType`, `provider` (LocalBusiness with NAP exactly matching the site footer), `areaServed`.
- **FAQPage** schema from the FAQ block — questions and answers verbatim from the page (never schema-only content; that's a spam signal).
- If the site has no sitewide LocalBusiness schema, include it nested in `provider` with name, address, phone, URL, hours, geo.
- Tell the user to validate at Google's Rich Results Test after publishing.
## Step 5 — Deliver
Full page in markdown with block labels as comments, then the schema block, then a 3-line publish checklist (title tag, meta description — both provided — and internal links from the homepage and related service pages).
## What not to do
- Don't write a word before intake. A page without price signals, real reviews, and real differentiators is furniture.
- Don't keyword-stuff city names. Once in the H1, once or twice in body, once in the service-area block — done.
- Don't invent reviews, stats, or guarantees. If intake gave none, write the page without that block and tell the user what it's missing.
---
Built by Reef — AI systems for small business → https://buildwithreef.com
Yes — this one. Service Page Writer is a free, open-source Claude skill that writes local service pages on a proven eleven-block skeleton — headline, situation, inclusions, price transparency, proof, process, FAQ — plus the title tag, meta description, and schema markup, all from a structured intake.
Three ways: run npx skills add buildwithreef/claude-skills in your terminal and select service-page-writer (Claude Code), upload the .zip from this page in Claude.ai under Settings → Capabilities → Skills, or copy the SKILL.md above into a folder at ~/.claude/skills/service-page-writer/.
Yes. Every page ships with a title tag and meta description, and a JSON-LD block: Service schema (with your NAP as the provider) and FAQPage schema built from the page's actual FAQ — never schema-only content, which is a spam signal. It reminds you to validate with Google's Rich Results Test after publishing.
The skill will make the case for at least a range — it converts — but it won't invent numbers, and if you truly can't publish one it writes the page around a strong quote offer instead. What it will never do is fake reviews, stats, or guarantees you don't have.
Yes. MIT licensed, no signup, no catch. It's published by Reef, an Iowa-based studio that builds AI systems, websites, and automation for small businesses. If you'd rather have this whole workflow running done-for-you, that's the work Reef takes on.