[object Object]

← back to Lawyer Directory Builder

Iter 42: landing — OG + Twitter card + JSON-LD structured data + canonical

4ff44cf471e2c4cf17f8eee76bc653d724828472 · 2026-05-04 08:45:07 -0700 · SteveStudio2

Landing had zero share-metadata. Link previews on LinkedIn / X / Discord /
Slack rendered as bare URLs, no preview card. Added the full set:

- <link rel="canonical" href="https://lawyers.agentabrams.com/">
- <meta name="robots" content="index, follow">
- og:type=website, og:site_name, og:title, og:description, og:url,
  og:locale=en_US (no og:image yet — use summary card; can add a CSS-
  rendered noir/champagne tile later if a paid social campaign needs it)
- twitter:card=summary, twitter:title, twitter:description (both tighter
  copy than OG so they fit X's 70-char render window)

JSON-LD structured data:
  Organization (@id #org) + WebSite (@id #website) graph entries
  - name, alternateName, url, description (with §6155 cite verbatim)
  - areaServed: California
  - knowsAbout: California attorneys, lawyer directory, California State
    Bar
  - sameAs: https://www.calbar.ca.gov/  (Schema.org disambiguation —
    tells Google + crawlers explicitly that we are NOT calbar.ca.gov,
    we just reference it as authoritative source — same §6155-correct
    disambiguation we already do in the visual eyebrow + title)
  - publisher relation linking WebSite to Organization
  - potentialAction: SearchAction targeting /find-a-lawyer?zip={zip}
    so Google can render a sitelinks search box

Deployed to prod via rsync (public/index.html only — static, no pm2
restart needed). Verified 14 meta + structured-data tags render live
at https://lawyers.agentabrams.com/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 4ff44cf471e2c4cf17f8eee76bc653d724828472
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Mon May 4 08:45:07 2026 -0700

    Iter 42: landing — OG + Twitter card + JSON-LD structured data + canonical
    
    Landing had zero share-metadata. Link previews on LinkedIn / X / Discord /
    Slack rendered as bare URLs, no preview card. Added the full set:
    
    - <link rel="canonical" href="https://lawyers.agentabrams.com/">
    - <meta name="robots" content="index, follow">
    - og:type=website, og:site_name, og:title, og:description, og:url,
      og:locale=en_US (no og:image yet — use summary card; can add a CSS-
      rendered noir/champagne tile later if a paid social campaign needs it)
    - twitter:card=summary, twitter:title, twitter:description (both tighter
      copy than OG so they fit X's 70-char render window)
    
    JSON-LD structured data:
      Organization (@id #org) + WebSite (@id #website) graph entries
      - name, alternateName, url, description (with §6155 cite verbatim)
      - areaServed: California
      - knowsAbout: California attorneys, lawyer directory, California State
        Bar
      - sameAs: https://www.calbar.ca.gov/  (Schema.org disambiguation —
        tells Google + crawlers explicitly that we are NOT calbar.ca.gov,
        we just reference it as authoritative source — same §6155-correct
        disambiguation we already do in the visual eyebrow + title)
      - publisher relation linking WebSite to Organization
      - potentialAction: SearchAction targeting /find-a-lawyer?zip={zip}
        so Google can render a sitelinks search box
    
    Deployed to prod via rsync (public/index.html only — static, no pm2
    restart needed). Verified 14 meta + structured-data tags render live
    at https://lawyers.agentabrams.com/.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 public/index.html | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/public/index.html b/public/index.html
index 6869bdb..20f1e32 100644
--- a/public/index.html
+++ b/public/index.html
@@ -5,6 +5,59 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <title>Counsel &amp; Bar — California attorney directory (independent · not the State Bar)</title>
 <meta name="description" content="An indexed directory of every licensed California attorney, drawn from the State Bar public roll. 89,000+ profiles, 42,000+ firms, 1,000+ independently audited sites. Browse, verify, contact directly.">
+<link rel="canonical" href="https://lawyers.agentabrams.com/">
+<meta name="robots" content="index, follow">
+
+<!-- Open Graph -->
+<meta property="og:type" content="website">
+<meta property="og:site_name" content="Counsel &amp; Bar">
+<meta property="og:title" content="Counsel &amp; Bar — California attorney directory (independent · not the State Bar)">
+<meta property="og:description" content="Every California-licensed attorney, indexed against the State Bar public roll. Independently audited against twelve published signals. We're a directory — not a referral service, not the State Bar.">
+<meta property="og:url" content="https://lawyers.agentabrams.com/">
+<meta property="og:locale" content="en_US">
+
+<!-- Twitter / X -->
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Counsel &amp; Bar — California attorney directory">
+<meta name="twitter:description" content="Every CA-licensed attorney, indexed. Independent audit, methodology v1.0 published. Not a referral service, not the State Bar.">
+
+<!-- Structured data: Organization + WebSite -->
+<script type="application/ld+json">
+{
+  "@context": "https://schema.org",
+  "@graph": [
+    {
+      "@type": "Organization",
+      "@id": "https://lawyers.agentabrams.com/#org",
+      "name": "Counsel & Bar",
+      "alternateName": "Counsel and Bar",
+      "url": "https://lawyers.agentabrams.com/",
+      "description": "An independent directory of California-licensed attorneys, drawn from the State Bar public roll. Not a lawyer referral service under California Business & Professions Code §6155.",
+      "areaServed": {
+        "@type": "AdministrativeArea",
+        "name": "California, United States"
+      },
+      "knowsAbout": ["California attorneys", "lawyer directory", "California State Bar"],
+      "sameAs": [
+        "https://www.calbar.ca.gov/"
+      ]
+    },
+    {
+      "@type": "WebSite",
+      "@id": "https://lawyers.agentabrams.com/#website",
+      "url": "https://lawyers.agentabrams.com/",
+      "name": "Counsel & Bar",
+      "publisher": {"@id": "https://lawyers.agentabrams.com/#org"},
+      "potentialAction": {
+        "@type": "SearchAction",
+        "target": "https://lawyers.agentabrams.com/find-a-lawyer?zip={zip}",
+        "query-input": "required name=zip"
+      }
+    }
+  ]
+}
+</script>
+
 <link rel="preconnect" href="https://fonts.googleapis.com">
 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">

← a0b97b0 Iter 40: landing footer — add methodology + State Bar lookup  ·  back to Lawyer Directory Builder  ·  Iter 43: OG + JSON-LD propagated to /methodology, /audit, /f ee84e9e →