<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Farrukh Abdullah</title>
    <description>The latest articles on DEV Community by Farrukh Abdullah (@farrukh_abdullah_seo).</description>
    <link>https://dev.to/farrukh_abdullah_seo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4062004%2Fb7416faa-020c-4899-b655-0d1d6a054bc7.jpg</url>
      <title>DEV Community: Farrukh Abdullah</title>
      <link>https://dev.to/farrukh_abdullah_seo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/farrukh_abdullah_seo"/>
    <language>en</language>
    <item>
      <title>How to Architect JSON-LD Entity Graphs for AI Search &amp; LLM Citation (GEO)</title>
      <dc:creator>Farrukh Abdullah</dc:creator>
      <pubDate>Wed, 28 Oct 2026 10:35:08 +0000</pubDate>
      <link>https://dev.to/farrukh_abdullah_seo/how-to-architect-json-ld-entity-graphs-for-ai-search-llm-citation-geo-5hg7</link>
      <guid>https://dev.to/farrukh_abdullah_seo/how-to-architect-json-ld-entity-graphs-for-ai-search-llm-citation-geo-5hg7</guid>
      <description>&lt;p&gt;Entity SEO for AI search runs on 3 layers: a canonical Entity Home, cross-platform &lt;code&gt;sameAs&lt;/code&gt; corroboration, and attribute-rich service and local entity mapping. This post shows the JSON-LD behind each layer, as we apply it at Farrukh Abdullah Advisory, where &lt;a href="https://farrukh.top/services/ai-seo-consulting" rel="noopener noreferrer"&gt;AI SEO Consulting &amp;amp; Visibility Measurement&lt;/a&gt; restructures websites into verifiable knowledge graphs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does entity SEO differ from keyword SEO?
&lt;/h2&gt;

&lt;p&gt;Entity SEO differs from keyword SEO in its unit of optimization: &lt;strong&gt;the entity (an organization, person, service, or place)&lt;/strong&gt; rather than the keyword string. Google AI Overviews, ChatGPT Search, and Perplexity each compose answers from retrieved sources, so a brand with no unambiguous entity markup gives those systems less to verify. JSON-LD is a disambiguation signal, not a ranking switch.&lt;/p&gt;

&lt;p&gt;Layer 1 turns that principle into markup by giving each entity one permanent address.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: What is an Entity Home?
&lt;/h2&gt;

&lt;p&gt;An Entity Home is &lt;strong&gt;the single page on your domain that holds the canonical record of one entity&lt;/strong&gt;, identified in JSON-LD by a persistent &lt;code&gt;@id&lt;/code&gt;. Assign each entity one &lt;code&gt;@id&lt;/code&gt; as a URI fragment, such as &lt;code&gt;https://yourdomain.com/#organization&lt;/code&gt; and &lt;code&gt;https://yourdomain.com/#person&lt;/code&gt;, and reference that &lt;code&gt;@id&lt;/code&gt; from every service page and article instead of redeclaring the entity.&lt;/p&gt;

&lt;p&gt;Markup without an &lt;code&gt;@id&lt;/code&gt; creates an anonymous node, so two pages that each declare an Organization produce two unconnected Organizations instead of one shared one. A service page that references the Entity Home's &lt;code&gt;@id&lt;/code&gt; joins the existing node:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
json
{
  "@context": "[https://schema.org](https://schema.org)",
  "@type": "Service",
  "name": "Local SEO for HVAC Companies",
  "provider": { "@id": "[https://farrukh.top/#organization](https://farrukh.top/#organization)" }
}

Once each entity has an @id, layer 2 connects that node to Wikidata, ORCID, GitHub, and Crunchbase.

Layer 2: What belongs in a sameAs array?
Four types of identity nodes belong in a sameAs array: structured knowledge bases, researcher registries, developer hubs, and B2B verification directories. Each entry is an independent page describing the same entity, so each one corroborates your Entity Home.

Structured knowledge bases, such as Wikidata item Q141886354

Researcher registries, such as ORCID profile 0009-0001-9570-3897

Developer hubs, such as the GitHub profile yes155

B2B verification directories, such as GoodFirms, Clutch, and Crunchbase

Each node belongs on the entity it describes: a Crunchbase person profile belongs on the Person, and a GoodFirms or Clutch company profile belongs on the Organization.

Two further node types attach through other properties. Published research, such as the Zenodo whitepaper (DOI 10.5281/zenodo.23701870), belongs on a CreativeWork node whose author is your Person @id. Industry credentials from IBM, Moz, and BrightLocal belong under hasCredential. Those pages describe your work and qualifications rather than your identity, so sameAs is the wrong property for them.

The full graph looks like this:

JSON
{
  "@context": "[https://schema.org](https://schema.org)",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "[https://farrukh.top/#organization](https://farrukh.top/#organization)",
      "name": "Farrukh Abdullah Advisory",
      "url": "[https://farrukh.top/](https://farrukh.top/)",
      "sameAs": [
        "[https://www.goodfirms.co/company/farrukh-abdullah-geo-semantic-seo-consultant](https://www.goodfirms.co/company/farrukh-abdullah-geo-semantic-seo-consultant)",
        "[https://clutch.co/pk/affiliate-marketing?page=2](https://clutch.co/pk/affiliate-marketing?page=2)"
      ]
    },
    {
      "@type": "Person",
      "@id": "[https://farrukh.top/#person](https://farrukh.top/#person)",
      "name": "Farrukh Abdullah",
      "jobTitle": "Semantic SEO &amp;amp; GEO Consultant",
      "worksFor": { "@id": "[https://farrukh.top/#organization](https://farrukh.top/#organization)" },
      "sameAs": [
        "[https://orcid.org/0009-0001-9570-3897](https://orcid.org/0009-0001-9570-3897)",
        "[https://www.wikidata.org/wiki/Q141886354](https://www.wikidata.org/wiki/Q141886354)",
        "[https://github.com/yes155](https://github.com/yes155)",
        "[https://www.crunchbase.com/person/farrukh-abdullah](https://www.crunchbase.com/person/farrukh-abdullah)"
      ]
    },
    {
      "@type": "CreativeWork",
      "name": "Entity-First Generative Engine Optimization (GEO): Structuring Machine-Readable Knowledge Graphs for AI Search Citation",
      "url": "[https://zenodo.org/records/23701870](https://zenodo.org/records/23701870)",
      "identifier": "[https://doi.org/10.5281/zenodo.23701870](https://doi.org/10.5281/zenodo.23701870)",
      "author": { "@id": "[https://farrukh.top/#person](https://farrukh.top/#person)" }
    }
  ]
}
Which attributes must match across every node?
Three attributes must match character for character on every node: the entity name, the job title, and the third-person description. Entity reconciliation compares strings first, so "SEO Consultant" on one profile and "SEO Specialist" on another introduces an ambiguity that a single canonical string prevents. Copy each value from the Entity Home into every external profile, and re-check them whenever one changes.

With identity established, layer 3 attaches areaServed and outcome metrics to those entities.

Layer 3: How do you map service and local entities?
To map service and local entities, declare areaServed with an explicit City or GeoShape in markup, and publish at least one verifiable outcome metric on the same page. The pattern holds for every local service vertical, and Local Entity SEO: Accurate Business Information and Useful Service Content covers the general case.

The following example declares one named city and a 50 km radius for a hypothetical HVAC business:

JSON
{
  "@context": "[https://schema.org](https://schema.org)",
  "@type": "HVACBusiness",
  "@id": "[https://example-hvac.com/#organization](https://example-hvac.com/#organization)",
  "name": "Example HVAC Co.",
  "areaServed": [
    { "@type": "City", "name": "Austin" },
    {
      "@type": "GeoCircle",
      "geoMidpoint": { "@type": "GeoCoordinates", "latitude": 30.2672, "longitude": -97.7431 },
      "geoRadius": 50000
    }
  ]
}
areaServed accepts City, GeoShape, and plain text; a typed City or GeoCircle states the service area exactly, while plain text leaves it open to interpretation.

The case studies below show what those attributes produced.

Does entity clustering produce measurable results?
Entity clustering produced measurable results in two documented case studies: +112% organic lead growth in 6 months and 1,200+ attributed inbound calls in 12 months.

The +112% organic lead growth came from FinTech platform Windcave (windcave.com), where payment category entity clusters and a payment-processing taxonomy restructuring drove the 6-month deployment.

The 1,200+ inbound calls came from 12 regional US service assets in four competitive verticals (contractors, HVAC, plumbing, and legal), attributed through dedicated call-tracking numbers, with the assets ranked in the Google Local 3-Pack.

Each metric names its measurement source, which keeps the figure verifiable. The SEO Case Studies page documents both results.

Where can developers find the open-source GEO toolkit?
The open-source GEO toolkit lives at github.com/yes155/awesome-geo-seo, the curated collection for generative engine optimization.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>seo</category>
      <category>jsonltd</category>
    </item>
    <item>
      <title>61% clicks on most websites are gone. Here’s exactly who Google gave them to instead.</title>
      <dc:creator>Farrukh Abdullah</dc:creator>
      <pubDate>Tue, 04 Aug 2026 08:04:48 +0000</pubDate>
      <link>https://dev.to/farrukh_abdullah_seo/61-clicks-on-most-websites-are-gone-heres-exactly-who-google-gave-them-to-instead-23e6</link>
      <guid>https://dev.to/farrukh_abdullah_seo/61-clicks-on-most-websites-are-gone-heres-exactly-who-google-gave-them-to-instead-23e6</guid>
      <description>&lt;p&gt;61% of your organic clicks are gone the moment an AI Overview shows up. That’s not a guess, it’s what Seer Interactive found tracking 5.47 million queries for over a year.&lt;/p&gt;

&lt;p&gt;Most of what’s written about this treats it as a flat loss. It isn’t. Some pages are getting crushed. Others are quietly gaining traffic they’d never have gotten before. The difference between the two has nothing to do with how well you rank.&lt;/p&gt;

&lt;p&gt;Here’s what the data actually shows, and what I’m doing about it for clients right now.&lt;/p&gt;

&lt;p&gt;Seer Interactive tracked over 5 million queries across 53 brands from January 2025 through February 2026. Organic CTR on pages where an AI Overview showed up fell from 1.76% to 0.61%. That’s a 61% drop. Ahrefs ran a separate analysis across 300,000 keywords and landed close to the same place, a 58% CTR decline for the page sitting in position one once an AI Overview appears above it.&lt;/p&gt;

&lt;p&gt;Pew Research measured actual click behavior on a user panel and found people click through to an organic result 8% of the time when an AI Overview is present, against 15% when it’s not. More than a quarter of people end the search right there.&lt;/p&gt;

&lt;p&gt;Who’s actually losing, and who isn’t&lt;/p&gt;

&lt;p&gt;This part gets skipped in most GEO content. The damage isn’t evenly spread.&lt;/p&gt;

&lt;p&gt;Branded queries are gaining ground under AI Overviews, up around 18.7% by one estimate, because the summary adds context that makes people more likely to click through, not less. Informational, definitional content is where it concentrates.&lt;/p&gt;

&lt;p&gt;It’s also not really about ranking anymore. Sites already sitting in the top 10 grew slightly through this shift. The ones getting squeezed hardest sit further down, roughly ranked 100th to 10,000th. Ranking well used to be enough to survive an algorithm change. This time the floor moved under everyone in the middle.&lt;/p&gt;

&lt;p&gt;What I’m actually changing for clients.&lt;br&gt;
Two things, not ten:&lt;/p&gt;

&lt;p&gt;Building pages that clearly define who a brand is and how it connects to known entities, linked with sameAs schema to Wikidata. This is what makes a brand machine-readable enough to get pulled into an answer instead of buried below one.&lt;br&gt;
Structuring content in Q&amp;amp;A blocks with FAQ and HowTo schema, since that’s the format AI engines lift directly. You can get cited without ranking first. That lever barely existed five years ago.&lt;br&gt;
The part people don’t want to hear&lt;/p&gt;

&lt;p&gt;Wil Reynolds at Seer Interactive said his own SEO traffic was down 41%, and instead of chasing it back, his team leaned into what was still working. Newsletter signups were up 65% over the same period, and revenue held flat. Losing search traffic and growing the business aren’t mutually exclusive once you stop treating Google as the only door in.&lt;/p&gt;

&lt;p&gt;That’s the conversation I’m having with clients now. Not “how do we get the old traffic back” but “which channel doesn’t depend on Google’s mood.” For some accounts that’s a newsletter. For others it’s Reddit or YouTube. The goal isn’t abandoning SEO, it’s not betting the whole business on one algorithm again.&lt;/p&gt;

&lt;p&gt;The part people don’t want to hear&lt;/p&gt;

&lt;p&gt;Wil Reynolds at Seer Interactive said his own SEO traffic was down 41%, and instead of chasing it back, his team leaned into what was still working. Newsletter signups were up 65% over the same period, and revenue held flat. Losing search traffic and growing the business aren’t mutually exclusive once you stop treating Google as the only door in.&lt;/p&gt;

&lt;p&gt;That’s the conversation I’m having with clients now. Not “how do we get the old traffic back” but “which channel doesn’t depend on Google’s mood.” For some accounts that’s a newsletter. For others it’s Reddit or YouTube. The goal isn’t abandoning SEO, it’s not betting the whole business on one algorithm again.&lt;/p&gt;

&lt;p&gt;One thing worth tracking&lt;/p&gt;

&lt;p&gt;If Perplexity citations matter to you, know that it weights content freshness harder than almost any other AI engine measured so far, more than Google’s AI Overviews and more than ChatGPT. Independent citation studies put competitive topics somewhere around a 60 to 90 day refresh window before older pages start losing ground. If your best pages haven’t been touched in months, that’s worth fixing before anything else on this list.&lt;/p&gt;

&lt;p&gt;If you’re still writing for 2019 Google in 2026, you’re invisible to both Google and the engines replacing it in your reader’s habits.&lt;/p&gt;

&lt;p&gt;Farrukh Abdullah&lt;/p&gt;

&lt;p&gt;Semantic SEO &amp;amp; GEO Consultant&lt;/p&gt;

&lt;p&gt;P.S. If you want your AI search visibility audited, reply to this or visit &lt;a href="https://farrukh.top" rel="noopener noreferrer"&gt;https://farrukh.top&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
