Skip to content

Instantly share code, notes, and snippets.

@quantumproxies
Created August 21, 2026 12:42
Show Gist options
  • Select an option

  • Save quantumproxies/ca4bf3c5afbaa94bd13a1f44416908ac to your computer and use it in GitHub Desktop.

Select an option

Save quantumproxies/ca4bf3c5afbaa94bd13a1f44416908ac to your computer and use it in GitHub Desktop.
Is your page indexable without JavaScript? One curl answers it — QuanticData SEO Audit API https://quanticdata.io/blog/how-to-perform-an-seo-audit/
#!/usr/bin/env bash
# Fetch a URL twice — as a no-JS bot and fully rendered — and show the difference.
# That diff is invisible in a browser: your eyes always see the rendered view.
#
# export QD_API_KEY=qd_live_...
# ./qd-seo-audit.sh https://example.com
#
# Needs curl and jq. $0.0012 a URL. https://quanticdata.io/seo-audit/
# Guide: https://quanticdata.io/blog/how-to-perform-an-seo-audit/
set -euo pipefail
: "${QD_API_KEY:?export QD_API_KEY — https://app.quanticdata.io/register}"
URL="${1:?usage: ./qd-seo-audit.sh <url>}"
curl -sS https://api.quanticdata.io/v1/seo-audit \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg url "$URL" '{url: $url}')" \
| jq -r '
if .type == "error" then "error: " + .message
else .payload as $a |
"\($a.url) -> \($a.finalUrl)\n",
" no-JS bot rendered",
"title \($a.noJs.title // "-") | \($a.render.title // "-")",
"h1 \($a.noJs.h1 // "-") | \($a.render.h1 // "-")",
"words \($a.noJs.wordCount) | \($a.render.wordCount)",
"canonical \($a.noJs.canonical // "MISSING")",
"robots \($a.meta.robots // "(none)")",
"json-ld \($a.meta.jsonldTypes | join(", "))",
"",
"findings:",
( $a.diff | to_entries[] | select(.value == true) |
" " + (
if .key == "contentOnlyInJs" then "CRITICAL the page is essentially blank without JavaScript"
elif .key == "canonicalMissingNoJs" then "HIGH canonical only appears after JS runs"
elif .key == "h1OnlyInRender" then "MEDIUM no H1 in the served HTML"
elif .key == "titleChanged" then "MEDIUM title is rewritten client-side"
else "LOW " + .key end ) ),
( if ($a.diff | to_entries | map(select(.value == true)) | length) == 0
then " none — the served HTML already carries the page" else empty end )
end'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment