Audit websites for SEO, technical, content, and security issues using squirrelscan CLI...
Audit websites for SEO, technical, content, performance and security issues using the squirrelscan cli.
squirrelscan provides a cli tool squirrel - available for macos, windows and linux. It carries out extensive website auditing by emulating a browser, search crawler, and analyzing the website's structure and content against over 140+ rules.
It will provide you a list of issues as well as suggestions on how to fix them.
You can look up the docs for any rule with this template:
https://docs.squirrelscan.com/rules/{rule_category}/{rule_id}
example:
https://docs.squirrelscan.com/rules/links/external-links
This skill enables AI agents to audit websites for over 140 rules in 20 categories, including:
and more!
The audit crawls the website, analyzes each page against audit rules, and returns a comprehensive report with:
Use this skill when you need to:
This skill requires the squirrel CLI to be installed and available in your PATH.
If squirrel is not already installed, you can install it using:
curl -fsSL https://squirrelscan.com/install | bash
This will:
~/.local/share/squirrel/releases/{version}/~/.local/bin/squirrel~/.squirrel/settings.jsonIf ~/.local/bin is not in your PATH, add it to your shell configuration:
export PATH="$HOME/.local/bin:$PATH"
Install using PowerShell:
irm https://squirrelscan.com/install.ps1 | iex
This will:
%LOCALAPPDATA%\squirrel\If using Command Prompt, you may need to restart your terminal for PATH changes to take effect.
Check that squirrel is installed and accessible:
squirrel --version
Running squirrel init will setup a squirrel.toml file for configuration in the current directory.
Each project should have a squirrel project name for the database - by default this is the name of the website you audit - but you can set it yourself so that you can place all audits for a project in one database
You do this either on init with:
squirrel init --project-name my-project
or config:
squirrel config set project.name my-project
If there is no squirrel.toml in the directory you're running from CREATE ONE with squirrel init and specify the '-n'
parameter for a project name (infer this)
The project name is used to identify the project in the database and is used to generate the database name.
It is stored in ~/.squirrel/projects/
There are three processes that you can run and they're all cached in the local project database:
the 'audit' command is a wrapper around these three processes and runs them sequentially:
squirrel audit https://example.com --format llm
YOU SHOULD always prefer format option llm - it was made for you and provides an exhaustive and compact output format.
If the user doesn't provide a website to audit - extrapolate the possibilities in the local directory and checking environment variables (ie. linked vercel projects, references in memory or the code).
If the directory you're running for provides for a method to run or restart a local dev server - run the audit against that.
If you have more than one option on a website to audit that you discover - prompt the user to choose which one to audit.
If there is no website - either local, or on the web to discover to audit, then ask the user which URL they would like to audit.
You should PREFER to audit live websites - only there do we get a TRUE representation of the website and performance or rendering issuers.
If you have both local and live websites to audit, prompt the user to choose which one to audit and SUGGEST they choose live.
You can apply fixes from an audit on the live site against the local code.
When planning scope tasks so they can run concurrently as sub-agents to speed up fixes.
When implementing fixes take advantage of subagents to speed up implementation of fixes.
Run typechecking and formatting against generated code when you finish if available in the environment (ruff for python, biome and tsc for typescript etc.)
The audit process is two steps:
# Step 1: Run audit (default: console output)
squirrel audit https://example.com
# Step 2: Export as LLM format
squirrel report <audit-id> --format llm
Audit more pages:
squirrel audit https://example.com --max-pages 200
Force fresh crawl (ignore cache):
squirrel audit https://example.com --refresh
Resume interrupted crawl:
squirrel audit https://example.com --resume
Verbose output for debugging:
squirrel audit https://example.com --verbose
| Option | Alias | Description | Default |
|---|---|---|---|
--format <fmt> |
-f <fmt> |
Output format: console, text, json, html, markdown, llm | console |
--max-pages <n> |
-m <n> |
Maximum pages to crawl (max 500) | 500 |
--refresh |
-r |
Ignore cache, fetch all pages fresh | false |
--resume |
- | Resume interrupted crawl | false |
--verbose |
-v |
Verbose output | false |
--debug |
- | Debug logging | false |
| Option | Alias | Description |
|---|---|---|
--format <fmt> |
-f <fmt> |
Output format: console, text, json, html, markdown, xml, llm |
The audit command shows human-readable console output by default with colored output and progress indicators.
To get LLM-optimized output, use the report command with --format llm:
squirrel report <audit-id> --format llm
The LLM format is a compact XML/text hybrid optimized for token efficiency (40% smaller than verbose XML):
See OUTPUT-FORMAT.md for detailed format specification.
# User asks: "Check squirrelscan.com for SEO issues"
squirrel audit https://squirrelscan.com --format llm
# User asks: "Do a thorough audit of my blog with up to 500 pages"
squirrel audit https://myblog.com --max-pages 500 --format llm
# User asks: "Re-audit the site and ignore cached results"
squirrel audit https://example.com --refresh --format llm
# First run an audit
squirrel audit https://example.com
# Note the audit ID from output (e.g., "a1b2c3d4")
# Later, export in different format
squirrel report a1b2c3d4 --format llm
On completion give the user a summary of all of the changes you made.
If you see this error, squirrel is not installed or not in your PATH.
Solution:
curl -fsSL https://squirrelscan.com/install | bashexport PATH="$HOME/.local/bin:$PATH"squirrel --versionIf squirrel is not executable:
chmod +x ~/.local/bin/squirrel
For very large sites, the audit may take several minutes. Use --verbose to see progress:
squirrel audit https://example.com --format llm --verbose
Ensure the URL includes the protocol (http:// or https://):
# ✗ Wrong
squirrel audit example.com
# ✓ Correct
squirrel audit https://example.com
The audit is stored in a local database and can be retrieved later with squirrel report commands.
squirrel audit --help