seo-local-business
jezweb/claude-skills
Generate complete SEO setup for local business websites with meta tags, JSON-LD schema, robots.txt, and sitemap.xml.
What is seo-local-business?
Produces a full SEO package for local service businesses in Australia, including HTML head tags with Open Graph and geo tags, LocalBusiness structured data, robots.txt, and sitemap.xml. Use this when setting up SEO for tradies, cafés, clinics, agencies, or retailers serving specific suburbs.
- Generate complete HTML head section with meta tags, Open Graph, Twitter Cards, and geo tags
- Create JSON-LD LocalBusiness schema with optional Service and FAQ schemas
- Produce robots.txt configuration
- Generate sitemap.xml
- Support Australian business formats (+61 phone, ABN, suburb patterns)
- Provide title and meta description templates for homepage, service, about, and contact pages
How to install seo-local-business
npx skills add https://github.com/jezweb/claude-skills --skill seo-local-businessHow to use seo-local-business
- 1.Gather business information: name, primary service, location, phone number, website URL, and business description
- 2.Optionally collect ABN, opening hours, social media URLs, price range, service areas, and GPS coordinates
- 3.Use the provided HTML head template and fill in placeholders with business details
- 4.Select the appropriate LocalBusiness subtype (Plumber, Electrician, Restaurant, etc.) based on the business
- 5.Generate the LocalBusiness JSON-LD schema with required properties (name, image, description, address, telephone, geo)
- 6.Add Service schemas for each service page if applicable
- 7.Create robots.txt and sitemap.xml files
- 8.Insert the generated head section into your website's HTML and embed the JSON-LD script tag
Use cases
- Setting up SEO for a plumbing or electrical business serving Newcastle and suburbs
- Creating structured data for a café or restaurant in a specific location
- Generating meta tags and schema for a dental or medical practice
- Building SEO foundation for a real estate agent or accountant
- Adding LocalBusiness schema to an existing local service website
- Tradies and service providers (plumbers, electricians, roofers, HVAC)
- Beauty salons, dentists, and medical practices
- Restaurants, cafés, pubs, and accommodation providers
- Real estate agents and professional service providers
- Retailers and local shops
seo-local-business FAQ
The skill supports 15+ subtypes including Plumber, Electrician, RoofingContractor, HVACBusiness, AutoRepair, BeautySalon, Dentist, LegalService, AccountingService, RealEstateAgent, Restaurant, BarOrPub, Hotel, Store, and ProfessionalService for generic services.
Yes, it is optimized for Australian businesses with support for +61 phone format, ABN (Australian Business Number), Australian states (NSW, VIC, QLD, etc.), and suburb-based service areas.
GPS coordinates are recommended but optional. The skill can generate the schema without them, though including them improves local SEO performance.
Yes. Use LocalBusiness schema on the homepage and add Service schemas for each individual service page, linking them back to the main organization via the @id property.
No. Required fields are business name, service, location, phone, website URL, and description. Optional fields like ABN, hours, social media, and coordinates enhance the schema but are not mandatory.
Full instructions (SKILL.md)
Source of truth, from jezweb/claude-skills.
name: seo-local-business description: "Generate complete SEO setup for local business websites — HTML head tags, JSON-LD LocalBusiness schema, robots.txt, sitemap.xml. Australian-optimised with +61 phone, ABN, suburb patterns. Use whenever the user wants SEO for a local business (tradesman, café, clinic, agency, retailer), needs JSON-LD structured data, asks for LocalBusiness schema, or wants meta tags / robots.txt / sitemap for a suburb-serving business."
SEO 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">
<!-- Primary Meta Tags -->
<title>{{PAGE_TITLE}} | {{BUSINESS_NAME}}</title>
<meta name="title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta name="description" content="{{META_DESCRIPTION}}">
<!-- Canonical URL -->
<link rel="canonical" href="{{CANONICAL_URL}}">
<!-- Open Graph / Facebook -->
<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}}">
<!-- Twitter -->
<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}}">
<!-- Geo Tags (Local SEO) -->
<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}}">
<!-- Favicons -->
<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">
<!-- Structured Data -->
<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>
<!-- Add one <url> per page. Priority: 1.0 homepage, 0.8 services, 0.6 others -->
</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
<!-- Link: international format. Display: local format. -->
<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).
Related skills
More from jezweb/claude-skills and the wider catalog.

shadcn-ui
Install and configure shadcn/ui components for themed React projects with dependency management and UI recipes.

shopify-content
Create and manage Shopify pages, blog posts, navigation menus, redirects, and SEO metadata via the Admin API or browser automation. Use whenever the user wants to add a page to a Shopify store, write a Shopify blog post, update the storefront navigation, manage redirects, or tune SEO metadata on a Shopify site.

shopify-products
Create and manage Shopify products via the Admin GraphQL API or CSV import. Workflow: gather data, choose method, execute, verify. Use whenever the user wants to add products to Shopify, bulk-import a catalog from CSV/spreadsheet/URL, update variants or prices, manage inventory quantities, upload product images, or assign products to collections.

shopify-setup
Set up Shopify CLI auth and Admin API access for a store. Install CLI, authenticate, create custom app, store access token, verify. Use whenever the user wants to connect to a Shopify store, set up Shopify API access, install Shopify CLI, or troubleshoot Shopify auth / Admin API token issues.

social-media-posts
Create platform-specific social media posts for LinkedIn, Facebook, Instagram, and Reddit. Handles character limits, hashtag strategies, hook placement, and image specs per platform. Works from scratch, from existing content (blog, newsletter, announcement), or as a multi-platform campaign. Produces copy-paste-ready posts. Triggers: 'social media post', 'linkedin post', 'facebook post', 'instagram caption', 'reddit post', 'social posts', 'post to social', 'repurpose for social', 'social media campaign'.

strategy-document
Write structured strategic documents for small and medium businesses: SWOT analyses, lean business plans, OKRs, competitive analyses. Each mode has a defined structure and quality bar. Use whenever a business asks to articulate strategy, set goals, analyse competition, plan for growth, do a SWOT, write OKRs, or build a lean business plan. Produces actionable documents, not generic frameworks.