Service page writer
Skill buildwithreef/claude-skills/skills/service-page-writer
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.From its SKILL.md
npx -y skills add buildwithreef/claude-skills --skill service-page-writerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
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.
- H1:
[Service] in [City]— plus the strongest differentiator if it fits naturally. - Subhead: outcome + trust in one line. "Fixed right the first time — 1,400+ water heaters since 2009."
- CTA block: clickable phone + one button ("Get a free quote"). Repeats after blocks 6 and 11.
- 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.")
- What's included: bulleted, concrete. What happens on the visit, what's covered, what they leave with.
- 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.
- Why us: the intake differentiators, stated as facts with numbers. Three maximum.
- Process: 3–4 steps from call to done. Kills the fear of the unknown.
- Reviews: 2–3, this service specifically, name + town.
- Service area: the towns, written as a sentence, not a keyword pile.
- 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.
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
providerwith 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
What ships with it: 1 file
4.5 KB alongside SKILL.md
references/
- template.md4.5 KB