Get the FREE Ultimate OpenClaw Setup Guide β†’

seo-local-business

npx machina-cli add skill jezweb/claude-skills/seo-local-business --openclaw
Files (1)
SKILL.md
5.2 KB

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

  1. Complete <head> section with meta tags, Open Graph, Twitter Cards
  2. JSON-LD structured data (LocalBusiness + Service + FAQ schemas)
  3. robots.txt
  4. sitemap.xml

Workflow

Step 1: Gather Business Info

Ask for (or extract from existing site):

RequiredOptional
Business nameABN
Primary serviceOpening hours
Location (city/suburb)Social media URLs
Phone numberPrice range
Website URLService areas (suburbs)
Business descriptionGPS coordinates

Step 2: Generate Head Tags

Use assets/head-template.html as your base. Fill in all placeholders.

Title tag patterns (50-60 chars max):

PagePatternExample
HomepageBrand - TaglineNewcastle Plumbing - 24/7 Emergency Service
ServiceService in Location | BrandHot Water Repairs Newcastle | ABC Plumbing
AboutAbout Us | BrandAbout Us | ABC Plumbing Newcastle
ContactContact | BrandContact Us | ABC Plumbing Newcastle

Meta description patterns (150-160 chars):

PagePattern
Homepage[USP]. [Service] in [Location]. [CTA]. Call [phone].
ServiceProfessional [service] in [location]. [Benefit]. [Trust signal]. Get a free quote today.
About[X] years serving [location]. [Team info]. [Credentials]. Learn about [brand].
ContactContact [brand] for [service] in [location]. [Hours]. Call [phone] or request a quote online.

Step 3: Generate Structured Data

LocalBusiness (homepage β€” always include):

{
  "@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"
    }
  ],
  "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):

{
  "@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

Use assets/robots-template.txt and assets/sitemap-template.xml. Populate with all site pages.

Step 5: Validate

Test structured data at: https://validator.schema.org/

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"

PrefixInternational
02+612
04+614
1300Keep as-is

ABN

Add to LocalBusiness schema when available:

{ "taxID": "12 345 678 901" }

Service Areas

Use Australian city and suburb names:

"areaServed": [
  { "@type": "City", "name": "Newcastle" },
  { "@type": "City", "name": "Maitland" },
  { "@type": "City", "name": "Lake Macquarie" }
]

Geo Tags

Include state-specific geo meta tags:

<meta name="geo.region" content="AU-NSW">
<meta name="geo.placename" content="Newcastle">
<meta name="geo.position" content="-32.9283;151.7817">
<meta name="ICBM" content="-32.9283, 151.7817">

See references/schema-properties.md for the full list of LocalBusiness and Service schema properties.

Source

git clone https://github.com/jezweb/claude-skills/blob/main/plugins/web-design/skills/seo-local-business/SKILL.mdView on GitHub

Overview

Generates a complete local SEO package for business websites, including the HTML head, JSON-LD LocalBusiness (plus Service and FAQ schemas), robots.txt, and sitemap.xml. It’s designed for Australia with +61 phone formatting, ABN handling, and suburb-based areaServed patterns to boost local visibility.

How This Skill Works

Step 1 collects essential business data (name, ABN, location, phone, hours, services). Step 2 fills the head-template.html to create page-specific title tags, meta descriptions, and OG/Twitter meta. Step 3 outputs LocalBusiness, Service, and FAQ JSON-LD schemas, plus robots.txt and sitemap.xml for search engines.

When to Use It

  • Launching or reworking a local business site in Australia
  • Improving local search visibility for city or suburb targets
  • Adding service pages with structured data and local context
  • Updating contact info, opening hours, or service areas
  • Implementing crawlable structure with robots.txt and a current sitemap.xml

Quick Start

  1. Step 1: Gather essential business data (name, ABN, location, +61 phone, hours, services, address, suburbs served)
  2. Step 2: Generate the head tags using assets/head-template.html and apply page-specific title/meta patterns
  3. Step 3: Produce LocalBusiness + Service + FAQ JSON-LD, plus robots.txt and sitemap.xml, then publish

Best Practices

  • Collect accurate business data (including ABN and +61 phone formatting) and confirm suburb patterns
  • Maintain consistent NAP (name, address, phone) across all pages
  • Validate JSON-LD with Google's schema testing tools after generation
  • Adhere to title and meta description length guidelines for each page type
  • Keep robots.txt and sitemap.xml up to date and reflect site changes

Example Use Cases

  • ABC Plumbing Newcastle (NSW) with LocalBusiness + Service schemas and suburb-based areaServed
  • BrightCare Electrical Sydney (NSW) featuring full HTML head, FAQ JSON-LD, and service pages
  • Coastal Bakery Wollongong (NSW) using LocalBusiness data and region-specific contact details
  • GreenLeaf Landscaping Newcastle (NSW) employing ABN +61 formatting and areaServed patterns
  • Harbor IT Services Port Melbourne (VIC) with robots.txt and sitemap.xml tuned for crawlability

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers β†—