{
  "version": "1.0",
  "schema": "https://entitymap.org/spec/v1.0",
  "publisher": {
    "name": "Jose Luis Hernando",
    "url": "https://jlhernando.com"
  },
  "generated": "2026-06-23T13:27:53.002Z",
  "entities": [
    {
      "entityId": "e_jose-luis-hernando",
      "@type": "Person",
      "name": "Jose Luis Hernando Sanz",
      "description": "Technical SEO consultant and marketing automation specialist based in Madrid. Leads SEO for coches.net and motos.net at Adevinta and speaks at brightonSEO.",
      "hasChunks": [
        {
          "chunkId": "e_jose-luis-hernando_c01",
          "text": "Jose Luis Hernando Sanz is a technical SEO consultant and marketing automation specialist based in Madrid. He leads SEO for coches.net and motos.net at Adevinta and has spoken at events like brightonSEO.",
          "sourceUrl": "https://jlhernando.com/about-me/",
          "pageTitle": "About Jose Luis Hernando",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "canonicalLabel": "Jose Luis Hernando",
      "alternateName": [
        "Jose Hernando",
        "jlhernando"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/jose-luis-hernando-sanz/",
        "https://github.com/jlhernando",
        "https://twitter.com/jlhernando",
        "https://www.searchenginejournal.com/author/jose-hernando/"
      ],
      "relations": [
        {
          "type": "worksFor",
          "target": "e_adevinta"
        },
        {
          "type": "creatorOf",
          "target": "e_gsc-index-coverage-extractor"
        },
        {
          "type": "creatorOf",
          "target": "e_free-bulk-google-index-inspect"
        }
      ]
    },
    {
      "entityId": "e_adevinta",
      "@type": "Organization",
      "name": "Adevinta",
      "description": "International online classifieds group, operator of coches.net and motos.net among other marketplaces. Current employer of Jose Luis Hernando.",
      "hasChunks": [
        {
          "chunkId": "e_adevinta_c01",
          "text": "Adevinta is the company where Jose Luis Hernando leads SEO for coches.net and motos.net, two of Spain's largest automotive marketplaces.",
          "sourceUrl": "https://jlhernando.com/about-me/",
          "pageTitle": "About Jose Luis Hernando",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "sameAs": [
        "https://www.adevinta.com/",
        "https://en.wikipedia.org/wiki/Adevinta"
      ]
    },
    {
      "entityId": "e_technical-seo",
      "@type": "Concept",
      "name": "Technical SEO",
      "description": "The discipline of optimising website infrastructure (crawling, rendering, indexing, structured data, performance) so search engines and AI agents can discover and understand content.",
      "hasChunks": [
        {
          "chunkId": "e_technical-seo_c01",
          "text": "I pushed jlhernando.com from no agent-readiness signals to Level 4 on isitagentready.com in one session. Here's what I shipped, what bit me, and what I chose to skip.",
          "sourceUrl": "https://jlhernando.com/blog/make-static-site-agent-ready/",
          "pageTitle": "How to Make a Static Site Agent-Ready: A Walkthrough",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_technical-seo_c02",
          "text": "How SEOs can use JavaScript to automate repetitive tasks, extract data at scale, and build custom tools. From browser consoles to cloud functions.",
          "sourceUrl": "https://jlhernando.com/blog/javascript-seo-automation/",
          "pageTitle": "How to Use JavaScript to Automate SEO",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "sameAs": [
        "https://en.wikipedia.org/wiki/Search_engine_optimization"
      ],
      "maturityStatus": "established"
    },
    {
      "entityId": "e_google-apps-script-seo",
      "@type": "Concept",
      "name": "Google Apps Script for SEO",
      "description": "Use of Google Apps Script — a serverless JavaScript runtime tied to Google Workspace — to automate SEO workflows inside Google Sheets, Drive, and Search Console.",
      "hasChunks": [
        {
          "chunkId": "e_google-apps-script-seo_c01",
          "text": "Google Apps Script picks up where spreadsheet formulas stop. A beginner's guide for SEOs who want to automate inside Google Sheets.",
          "sourceUrl": "https://jlhernando.com/blog/intro-google-apps-script-seo/",
          "pageTitle": "Intro to Google Apps Script for SEOs",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_google-apps-script-seo_c02",
          "text": "How Claude Code transformed my Apps Script SEO workflow. From debugging to building full features, the development experience is unrecognizable.",
          "sourceUrl": "https://jlhernando.com/blog/claude-code-apps-script-seo/",
          "pageTitle": "My new stack for SEO Automation: Claude Code + Apps Script",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "alternateName": [
        "Apps Script SEO automation"
      ],
      "sameAs": [
        "https://en.wikipedia.org/wiki/Google_Apps_Script"
      ]
    },
    {
      "entityId": "e_google-search-console",
      "@type": "Platform",
      "name": "Google Search Console",
      "description": "Free Google service that reports how Google crawls, indexes, and serves a website, including the Index Coverage report and URL Inspection tool used throughout this site's tutorials.",
      "hasChunks": [
        {
          "chunkId": "e_google-search-console_c01",
          "text": "Chrome extension and CLI tool to download all Index Coverage reports from Search Console in one go.",
          "sourceUrl": "https://jlhernando.com/blog/gsc-index-coverage-extractor/",
          "pageTitle": "GSC Index Coverage Extractor: Bulk Download",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_google-search-console_c02",
          "text": "Move your Search Console bulk data export to a new BigQuery project. Dataset setup, table copy, and service account permissions with zero gaps.",
          "sourceUrl": "https://jlhernando.com/blog/gsc-bulk-export-migration/",
          "pageTitle": "Migrate GSC Bulk Export Without Losing Data",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_google-search-console_c03",
          "text": "Node.js script to download Index Coverage Report stats from Google Search Console in bulk. Automate what GSC makes manual.",
          "sourceUrl": "https://jlhernando.com/blog/index-coverage-extractor/",
          "pageTitle": "Bulk Index Coverage Extraction with Node.js",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_google-search-console_c04",
          "text": "Chrome extension that overlays absolute and percentage changes on Search Console's Compare view scorecards. No more mental math.",
          "sourceUrl": "https://jlhernando.com/blog/search-console-compare-extension/",
          "pageTitle": "Stop Doing Maths in Search Console’s Compare View",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "alternateName": [
        "GSC",
        "Search Console"
      ],
      "sameAs": [
        "https://en.wikipedia.org/wiki/Google_Search_Console",
        "https://search.google.com/search-console"
      ]
    },
    {
      "entityId": "e_url-inspection-api",
      "@type": "Standard",
      "name": "Google URL Inspection API",
      "description": "Search Console API endpoint that returns the indexing status, canonical, and crawl details of a URL programmatically. Backbone of bulk index-checking automation.",
      "hasChunks": [
        {
          "chunkId": "e_url-inspection-api_c01",
          "text": "Check Google indexing status in bulk using the URL Inspection API endpoint from Search Console and Node.js.",
          "sourceUrl": "https://jlhernando.com/blog/google-url-inspection-api-nodejs/",
          "pageTitle": "URL Inspection API with Node.js: Bulk Index Status",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_url-inspection-api_c02",
          "text": "Automate Search Console's URL Inspection Tool with Node.js. Based on Hamlet Batista's original script, extended for bulk processing.",
          "sourceUrl": "https://jlhernando.com/blog/url-inspector-automator-node/",
          "pageTitle": "Automating URL Inspection with Node.js",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_url-inspection-api_c03",
          "text": "Rebuilt my bulk Google indexing checker into a proper CLI and a free web app. Check index status without touching a terminal.",
          "sourceUrl": "https://jlhernando.com/blog/google-index-inspect-v2-webapp/",
          "pageTitle": "Google Index Checker 2.0: Free Webapp + CLI Tool",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "sameAs": [
        "https://developers.google.com/webmaster-tools/v1/urlInspection.index/inspect"
      ],
      "relations": [
        {
          "type": "partOf",
          "target": "e_google-search-console"
        }
      ]
    },
    {
      "entityId": "e_agent-ready-website",
      "@type": "Concept",
      "name": "Agent-ready website",
      "description": "A website that publishes the machine-readable surfaces — llms.txt, llms-full.txt, Agent Skills, structured data, MCP and similar — that let AI crawlers and browser-driving agents discover, cite, and operate on its content.",
      "hasChunks": [
        {
          "chunkId": "e_agent-ready-website_c01",
          "text": "I pushed jlhernando.com from no agent-readiness signals to Level 4 on isitagentready.com in one session. Here's what I shipped, what bit me, and what I chose to skip.",
          "sourceUrl": "https://jlhernando.com/blog/make-static-site-agent-ready/",
          "pageTitle": "How to Make a Static Site Agent-Ready: A Walkthrough",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_agent-ready-website_c02",
          "text": "The LLM Lab on jlhernando.com is a working honeypot and tutorial about agent crawl behaviour, including a live Plausible widget breaking down recent AI agent reads of the site by bot family.",
          "sourceUrl": "https://jlhernando.com/llm-lab/",
          "pageTitle": "LLM Lab — how search engines and AI crawlers see your website",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_agent-ready-website_c03",
          "text": "jlhernando.com publishes an Anthropic-style Agent Skill at /SKILL.md describing how to use the site's machine-readable surfaces (llms.txt, per-post .md, sitemap, person schema) to answer technical SEO questions.",
          "sourceUrl": "https://jlhernando.com/SKILL.md",
          "pageTitle": "Agent Skill for jlhernando.com",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "alternateName": [
        "AI-ready website",
        "agent-readiness"
      ],
      "sameAs": [
        "https://llmstxt.org/"
      ],
      "maturityStatus": "proposed"
    },
    {
      "entityId": "e_gsc-index-coverage-extractor",
      "@type": "SoftwareProduct",
      "name": "GSC Index Coverage Extractor",
      "description": "Chrome extension by Jose Luis Hernando that exports Index Coverage, Sitemap Coverage, and historic data from Google Search Console into Excel and CSV files, with multi-property support and 100% local processing.",
      "hasChunks": [
        {
          "chunkId": "e_gsc-index-coverage-extractor_c01",
          "text": "Chrome extension and CLI tool to download all Index Coverage reports from Search Console in one go.",
          "sourceUrl": "https://jlhernando.com/blog/gsc-index-coverage-extractor/",
          "pageTitle": "GSC Index Coverage Extractor: Bulk Download",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_gsc-index-coverage-extractor_c02",
          "text": "Node.js script to download Index Coverage Report stats from Google Search Console in bulk. Automate what GSC makes manual.",
          "sourceUrl": "https://jlhernando.com/blog/index-coverage-extractor/",
          "pageTitle": "Bulk Index Coverage Extraction with Node.js",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_gsc-index-coverage-extractor_c03",
          "text": "The GSC Index Coverage Extractor is a Chrome extension that exports Index Coverage, Sitemap Coverage, and historic data from Google Search Console into Excel and CSV files. It supports multi-property extraction, configurable pacing, and local-only processing.",
          "sourceUrl": "https://jlhernando.com/",
          "pageTitle": "Jose Luis Hernando — Technical SEO consultant",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "sameAs": [
        "https://chromewebstore.google.com/detail/gsc-index-coverage-extrac/difndjfaeoinhbcimnkinlfcbooglbkh"
      ],
      "relations": [
        {
          "type": "integratesWith",
          "target": "e_google-search-console"
        }
      ]
    },
    {
      "entityId": "e_free-bulk-google-index-inspect",
      "@type": "SoftwareProduct",
      "name": "Free Bulk Google Index Inspect",
      "description": "Free web app by Jose Luis Hernando that checks indexing status of up to 2,000 URLs per day via the Google URL Inspection API. Upload a CSV or paste URLs — runs 100% in the browser.",
      "hasChunks": [
        {
          "chunkId": "e_free-bulk-google-index-inspect_c01",
          "text": "Rebuilt my bulk Google indexing checker into a proper CLI and a free web app. Check index status without touching a terminal.",
          "sourceUrl": "https://jlhernando.com/blog/google-index-inspect-v2-webapp/",
          "pageTitle": "Google Index Checker 2.0: Free Webapp + CLI Tool",
          "publisher": "Jose Luis Hernando"
        },
        {
          "chunkId": "e_free-bulk-google-index-inspect_c02",
          "text": "Free Bulk Google Index Inspect lets users check the indexing status of up to 2,000 URLs per day using Google's URL Inspection API. CSV upload and paste-in are both supported, and processing stays 100% client-side.",
          "sourceUrl": "https://jlhernando.com/tools/free-bulk-google-index-inspect/",
          "pageTitle": "Free Bulk Google Index Inspect",
          "publisher": "Jose Luis Hernando"
        }
      ],
      "sameAs": [
        "https://jlhernando.com/tools/free-bulk-google-index-inspect/"
      ],
      "relations": [
        {
          "type": "integratesWith",
          "target": "e_url-inspection-api"
        }
      ]
    }
  ]
}
