SEO local business
Quick answer
- 01What is it?
- Generate a complete SEO package for local business websites. It stands out by giving search and SEO workflows a defined shape, so the agent asks for better context and returns a more usable result.
- 02Inputs
- Context for search and SEO workflows: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result for search and SEO workflows: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add jezweb/claude-skills --skill seo-local-businessUse in Profound
Copy this file into a new Profound Skill. That's it, nothing else to install.
Copy and create in ProfoundSEO Local Business
Generate a complete SEO package for local business websites. Produces meta tags, structured data, robots.txt, and sitemap.xml.
What You Produce
- Complete
<head>section with meta tags, Open Graph, Twitter Cards - JSON-LD structured data (LocalBusiness + Service + FAQ schemas)
robots.txtsitemap.xml
Workflow
Step 1: Gather Business Info
Ask for (or extract from existing site):
| Required | Optional |
|---|---|
| Business name | ABN |
| Primary service | Opening hours |
| Location (city/suburb) | Social media URLs |
| Phone number | Price range |
| Website URL | Service areas (suburbs) |
| Business description | GPS coordinates |
Step 2: Generate Head Tags
Fill placeholders in this template:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{PAGE_TITLE}} | {{BUSINESS_NAME}}</title>
<meta name="title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta name="description" content="{{META_DESCRIPTION}}">
<link rel="canonical" href="{{CANONICAL_URL}}">
<meta property="og:type" content="website">
<meta property="og:url" content="{{CANONICAL_URL}}">
<meta property="og:title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta property="og:description" content="{{META_DESCRIPTION}}">
<meta property="og:image" content="{{OG_IMAGE_URL}}">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="{{CANONICAL_URL}}">
<meta property="twitter:title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta property="twitter:description" content="{{META_DESCRIPTION}}">
<meta property="twitter:image" content="{{OG_IMAGE_URL}}">
<meta name="geo.region" content="{{GEO_REGION}}">
<meta name="geo.placename" content="{{CITY}}">
<meta name="geo.position" content="{{LATITUDE}};{{LONGITUDE}}">
<meta name="ICBM" content="{{LATITUDE}}, {{LONGITUDE}}">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32.png">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<script type="application/ld+json">
{{JSON_LD_SCHEMA}}
</script>
</head>
Title tag patterns (50-60 chars max):
| Page | Pattern | Example |
|---|---|---|
| Homepage | Brand - Tagline | Newcastle Plumbing - 24/7 Emergency Service |
| Service | Service in Location | Brand | Hot Water Repairs Newcastle | ABC Plumbing |
| About | About Us | Brand | About Us | ABC Plumbing Newcastle |
| Contact | Contact | Brand | Contact Us | ABC Plumbing Newcastle |
Meta description patterns (150-160 chars):
| Page | Pattern |
|---|---|
| Homepage | [USP]. [Service] in [Location]. [CTA]. Call [phone]. |
| Service | Professional [service] in [location]. [Benefit]. [Trust signal]. Get a free quote today. |
| About | [X] years serving [location]. [Team info]. [Credentials]. Learn about [brand]. |
| Contact | Contact [brand] for [service] in [location]. [Hours]. Call [phone] or request a quote online. |
Step 3: Generate Structured Data
LocalBusiness (homepage — always include):
Use LocalBusiness or a more specific subtype:
| Subtype | Use for |
|---|---|
Plumber | Plumbing services |
Electrician | Electrical services |
RoofingContractor | Roofing |
HVACBusiness | Air conditioning/heating |
AutoRepair | Mechanics |
BeautySalon | Hair/beauty |
Dentist | Dental practices |
LegalService | Law firms |
AccountingService | Accountants |
RealEstateAgent | Real estate |
Restaurant | Restaurants/cafes |
BarOrPub | Pubs/bars |
Hotel | Accommodation |
Store | Retail shops |
ProfessionalService | Generic professional |
LocalBusiness schema properties:
| Property | Required | Notes |
|---|---|---|
@type | Yes | LocalBusiness or subtype from above |
name | Yes | Business name as shown to customers |
image | Yes | Primary business image or logo |
description | Yes | 1-2 sentence business description |
@id | Yes | Unique ID, use {url}/#organization |
url | Yes | Website homepage URL |
telephone | Yes | International format: +61-2-4900-1234 |
address | Yes | PostalAddress (see below) |
email | Recommended | Primary contact email |
priceRange | Recommended | $ to $$$$ |
geo | Recommended | GeoCoordinates: latitude/longitude |
openingHoursSpecification | Recommended | See hours format below |
areaServed | Recommended | Cities/suburbs served |
sameAs | Recommended | Social media profile URLs |
taxID | Optional | ABN for Australian businesses |
logo | Optional | Business logo URL |
foundingDate | Optional | ISO 8601 date |
paymentAccepted | Optional | e.g. "Cash, Credit Card, EFTPOS" |
currenciesAccepted | Optional | AUD |
PostalAddress:
| Property | Example |
|---|---|
streetAddress | 123 Hunter Street |
addressLocality | Newcastle |
addressRegion | NSW |
postalCode | 2300 |
addressCountry | AU |
Example:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "ABC Plumbing Newcastle",
"image": "https://www.abcplumbing.com.au/og-image.jpg",
"description": "Professional plumbing services in Newcastle and Lake Macquarie.",
"@id": "https://www.abcplumbing.com.au/#organization",
"url": "https://www.abcplumbing.com.au",
"telephone": "+61-2-4900-1234",
"email": "info@abcplumbing.com.au",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Hunter Street",
"addressLocality": "Newcastle",
"addressRegion": "NSW",
"postalCode": "2300",
"addressCountry": "AU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -32.9283,
"longitude": 151.7817
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "08:00",
"closes": "12:00"
}
],
"areaServed": [
{ "@type": "City", "name": "Newcastle" },
{ "@type": "City", "name": "Lake Macquarie" }
],
"sameAs": [
"https://www.facebook.com/abcplumbing",
"https://www.instagram.com/abcplumbing"
]
}
Service (service pages — add per service):
| Property | Required | Notes |
|---|---|---|
name | Yes | Service name |
description | Yes | What the service provides |
provider | Yes | { "@id": "{url}/#organization" } |
areaServed | Recommended | City or region |
serviceType | Recommended | Category of service |
offers | Optional | Pricing/availability |
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Hot Water System Installation",
"description": "Professional hot water system installation and replacement in Newcastle.",
"provider": { "@id": "https://www.abcplumbing.com.au/#organization" },
"areaServed": { "@type": "City", "name": "Newcastle" },
"serviceType": "Plumbing",
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"priceRange": "$$"
}
}
FAQ (pages with FAQ sections):
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does a plumber cost in Newcastle?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Plumber callout fees in Newcastle typically range from $80-150."
}
}
]
}
Step 4: Generate robots.txt and sitemap.xml
robots.txt:
User-agent: *
Allow: /
Sitemap: {{SITE_URL}}/sitemap.xml
sitemap.xml:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>{{SITE_URL}}/</loc>
<lastmod>{{DATE}}</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
</urlset>
Step 5: Validate
Test structured data at: https://validator.schema.org/
Common validation errors:
- Missing
@context— every JSON-LD block needs it - Wrong phone format — must be international (
+61-...) - Missing
@id— needed for cross-referencing between schemas - Empty
areaServed— include at least one city
Australian-Specific Patterns
Phone Numbers
<a href="tel:+61249001234">(02) 4900 1234</a>
Schema telephone: "+61-2-4900-1234"
| Prefix | International |
|---|---|
| 02 | +612 |
| 04 | +614 |
| 1300 | Keep as-is |
ABN
Add to LocalBusiness schema when available:
{ "taxID": "12 345 678 901" }
Australian State Codes
| State | Code | Geo Region |
|---|---|---|
| New South Wales | NSW | AU-NSW |
| Victoria | VIC | AU-VIC |
| Queensland | QLD | AU-QLD |
| South Australia | SA | AU-SA |
| Western Australia | WA | AU-WA |
| Tasmania | TAS | AU-TAS |
| Northern Territory | NT | AU-NT |
| ACT | ACT | AU-ACT |
Service Areas
Use areaServed with Australian city and suburb names (see LocalBusiness example above).
Common questions
How do I install SEO local business in Cursor, Claude Code, or Codex?
Run npx skills add jezweb/claude-skills --skill seo-local-business in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only SEO local business, not every skill in the repository.
Where does SEO local business come from and what license is it under?
SEO local business comes from the jezweb/claude-skills repository on GitHub. That repository has 893 GitHub stars. The skill is published under the MIT license.
Prefer plain text? Read the SEO local business guide as markdown.