SEO local business

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.
Paste-ready

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.

Terminal
$ npx skills add jezweb/claude-skills --skill seo-local-business

Use in Profound

Copy this file into a new Profound Skill. That's it, nothing else to install.

Copy and create in Profound
SKILL.md

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

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):

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):

Use LocalBusiness or a more specific subtype:

SubtypeUse for
PlumberPlumbing services
ElectricianElectrical services
RoofingContractorRoofing
HVACBusinessAir conditioning/heating
AutoRepairMechanics
BeautySalonHair/beauty
DentistDental practices
LegalServiceLaw firms
AccountingServiceAccountants
RealEstateAgentReal estate
RestaurantRestaurants/cafes
BarOrPubPubs/bars
HotelAccommodation
StoreRetail shops
ProfessionalServiceGeneric professional

LocalBusiness schema properties:

PropertyRequiredNotes
@typeYesLocalBusiness or subtype from above
nameYesBusiness name as shown to customers
imageYesPrimary business image or logo
descriptionYes1-2 sentence business description
@idYesUnique ID, use {url}/#organization
urlYesWebsite homepage URL
telephoneYesInternational format: +61-2-4900-1234
addressYesPostalAddress (see below)
emailRecommendedPrimary contact email
priceRangeRecommended$ to $$$$
geoRecommendedGeoCoordinates: latitude/longitude
openingHoursSpecificationRecommendedSee hours format below
areaServedRecommendedCities/suburbs served
sameAsRecommendedSocial media profile URLs
taxIDOptionalABN for Australian businesses
logoOptionalBusiness logo URL
foundingDateOptionalISO 8601 date
paymentAcceptedOptionale.g. "Cash, Credit Card, EFTPOS"
currenciesAcceptedOptionalAUD

PostalAddress:

PropertyExample
streetAddress123 Hunter Street
addressLocalityNewcastle
addressRegionNSW
postalCode2300
addressCountryAU

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):

PropertyRequiredNotes
nameYesService name
descriptionYesWhat the service provides
providerYes{ "@id": "{url}/#organization" }
areaServedRecommendedCity or region
serviceTypeRecommendedCategory of service
offersOptionalPricing/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"

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

ABN

Add to LocalBusiness schema when available:

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

Australian State Codes

StateCodeGeo Region
New South WalesNSWAU-NSW
VictoriaVICAU-VIC
QueenslandQLDAU-QLD
South AustraliaSAAU-SA
Western AustraliaWAAU-WA
TasmaniaTASAU-TAS
Northern TerritoryNTAU-NT
ACTACTAU-ACT

Service Areas

Use areaServed with Australian city and suburb names (see LocalBusiness example above).

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.