Module 0 · Stage 2
The P0 Checklist
Eight fixes, ninety minutes, and your site says what you cost. For a musician who already has a site on any builder.
Before you start
You need your Facts Sheet finished. Every fix below copies a line from it. Keep two tabs open: your site's editor, and an incognito window for checking.
Platform notes: Squarespace, Wix, and Bandzoogle each have a per-page "SEO" or "page settings" panel for the title and description; WordPress needs an SEO plugin (Rank Math or Yoast) installed first, which is its own ten minutes. Schema on a builder goes in the page's code-injection or header field.
The eight fixes
| # | Fix | How | Check | Minutes |
|---|---|---|---|---|
| 1 | The title tag | Homepage title in this shape: [Act] | [Instrument] for [event type] in [City]. Under 60 characters. Every other page gets its own, never Home or the bare domain. | Search your domain in incognito; the blue link should read like the shape above. | 10 |
| 2 | The meta description | One sentence with a number in it: what you play, where, from what price, how fast you reply. Under 155 characters. | Same search; the grey text under the link is your sentence. | 10 |
| 3 | Google Business Profile | Claim or create it. Primary category "Musician" (or "Wedding service" if that is most of the work). Service area: the cities from Fact 2. Add the packages as services with prices. Seed the Q&A with three questions from your FAQ. Upload five photos and one video. | Search your act name plus city; the profile panel appears on the right. | 20 |
| 4 | Search Console and analytics | Verify the domain in Google Search Console. Submit the sitemap (most builders publish one at /sitemap.xml). Install GA4 or your builder's analytics. | Search Console shows the sitemap as "Success" within a day. | 15 |
| 5 | Schema, the fact layer | Paste the JSON-LD below into the site header, filled from the Facts Sheet. It tells machines who you are, where you play, and what it costs. | Paste your homepage URL into Google's Rich Results Test; no errors. | 15 |
| 6 | One H1 and the facts on the page | The homepage has exactly one H1 that says what you do and where. Prices and durations are visible text on the pricing page, not inside an image or a PDF. | Select-all on the pricing page: can you copy the prices as text? | 10 |
| 7 | The FAQ block | Six questions bookers actually ask, each answered in one or two sentences with a number where possible: what it costs, how long you play, whether you take requests, outdoors and power, how a date is held, what happens if you are sick. | Rich Results Test shows "FAQ" detected. | 15 |
| 8 | Clean up | One URL per page, a canonical on each, test and duplicate pages set to noindex, the old "coming soon" page deleted. | Search site:yourdomain.com; only real pages appear. | 5 |
The schema to paste
Replace every bracket. Delete any line you cannot fill truthfully.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"name": "[Your name]",
"jobTitle": "[Instrument] for weddings and events",
"url": "https://[yourdomain]",
"email": "[email]",
"telephone": "[phone]",
"address": {"@type": "PostalAddress", "addressLocality": "[City]", "addressRegion": "[State]"},
"areaServed": ["[City 1]", "[City 2]", "[City 3]", "[City 4]", "[City 5]"],
"sameAs": ["https://instagram.com/[handle]", "https://www.youtube.com/@[handle]"],
"makesOffer": [
{"@type": "Offer", "name": "[Package 1 name]", "price": "[from price]", "priceCurrency": "USD", "description": "[one line: what, how long]"},
{"@type": "Offer", "name": "[Package 2 name]", "price": "[from price]", "priceCurrency": "USD", "description": "[one line]"}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{"@type": "Question", "name": "How much does it cost?", "acceptedAnswer": {"@type": "Answer", "text": "[Package] starts at $[X] for [minutes]."}},
{"@type": "Question", "name": "How long do you play?", "acceptedAnswer": {"@type": "Answer", "text": "[Answer with minutes and sets.]"}},
{"@type": "Question", "name": "Do you take requests?", "acceptedAnswer": {"@type": "Answer", "text": "[Answer with the deadline.]"}},
{"@type": "Question", "name": "Can you play outdoors?", "acceptedAnswer": {"@type": "Answer", "text": "[Answer with the power and rain plan.]"}},
{"@type": "Question", "name": "How do I hold a date?", "acceptedAnswer": {"@type": "Answer", "text": "[Retainer percentage, hold length, balance timing.]"}},
{"@type": "Question", "name": "What if you are sick?", "acceptedAnswer": {"@type": "Answer", "text": "[Your backup plan.]"}}
]
}
]
}The ninety-minute check
When the eight are done, do three searches in an incognito window: your act name; your instrument plus your city; "how much does a [instrument] player cost for a wedding in [city]." Then ask an AI answer engine the third question and see whether it can answer from your site. If it cannot, the missing fact is the next fix.
Post your before-and-after in the community: the old title and the new one is enough.