Back to all work
Tools · Terminal Application · SEO

Safi Studio Scanner

A terminal website audit tool and npm SDK that crawls a site and scores 93 checks across 15 categories: SEO, accessibility, performance, security, structured data, and more. Built with TypeScript on Node, cheerio for parsing, and Playwright as an optional engine.

Typescript Javascript Playwright
Role
Design and development
Timeline
2026
Year
2026
Status
Completed
Safi Studio Scanner
01 / The overview

Safi Studio Scanner is a website audit tool that runs in the terminal and also installs as an npm SDK. It crawls a site, audits every page against 93 rules across 15 categories, and exports one report as HTML, Markdown, or JSON. The categories cover Core SEO, content, links, images, structured data, security, crawlability, URL structure, social media, internationalization, legal, analytics, E-E-A-T, accessibility, and performance. It is built with TypeScript on Node, with cheerio for parsing and Playwright as an optional engine for accessibility and Core Web Vitals.

02 / The challenge

Commercial site auditors are closed and paid, and most run only as a hosted service. I wanted a scriptable tool I could run from the terminal or import into other projects, with full control over the rules and the report. It also had to stay small: the core install should not drag in a browser unless you ask for deep accessibility and performance checks.

03 / The solution

The engine is a short pipeline. A concurrent crawler fetches pages several at a time, each page becomes a parsed context, a registry of rules runs against it, and a severity-weighted scorer produces a health score per category and overall. Rules are one small file per category, so the catalog grows by dropping in a file. The core depends only on cheerio. Playwright and the axe-core accessibility audit are optional and load lazily, and a Google PageSpeed Insights provider gives real Core Web Vitals with no local browser at all. The same engine powers the CLI and the SDK functions like audit() and auditToHtml().

FAQ

About this project

93 rules across 15 categories, including Core SEO, content, links, images, structured data, security, crawlability, URL structure, social media, internationalization, legal, analytics, E-E-A-T, accessibility, and Core Web Vitals.

Yes. It installs from GitHub as an npm package and exposes functions like audit(url) and auditToHtml(url), so you can run audits from your own code, not just the terminal.

No for the core static checks, which use a fast HTML parser. Accessibility and Core Web Vitals use an optional headless browser, or Google PageSpeed Insights with no local browser at all.

Next project Vault CRM

Want something like this?

Start a conversation →