Structured data audit
Crawls a site, pulls every JSON-LD block out of the markup, and stitches the entities into one graph so you can see what search engines actually see: what is linked, what is duplicated, and what points at nothing.
A browser cannot read another site's HTML unless that site allows it, so the app needs something to fetch on its behalf. Run the relay that ships with this app and it is yours alone: no third-party service, nothing shared, nothing throttling you. It is one file and needs only Node.
node relay.js and open
http://localhost:8787.
The app is served from there and uses the relay on its own, nothing to paste.
A Dockerfile and hosting notes are in the comment at the top of relay.js.The public relays are shared and throttle hard, so they suit a quick look at a handful of pages and little else. If you own the site you are auditing, the simplest route of all is to upload this file to it and open it from there, then pick "Direct request": same origin means no relay and no limits.
Raise this if a relay starts refusing pages. 1000 is gentle enough for almost any relay to keep up with.
Leave it blank and the sitemaps named in robots.txt are used; if it names none, /sitemap.xml, /sitemap_index.xml (Yoast), /wp-sitemap.xml (WordPress core) and /sitemap-index.xml are tried. Or give a path relative to the start URL, or a full URL on any host, several separated by commas. Sitemap index files are followed all the way down, and every sitemap is read in full before the page limit applies.
Paste view-source output or a raw JSON-LD block. Useful for checking markup before it ships, or for a page behind a login.
Reopens a graph saved from this page, or one produced by the command line crawler. Handy for comparing a crawl against last month's. It also takes the output of a JSON-LD crawler that returns a list of pages with their blocks, so if you already have a crawl in JSON, drop it here.