Loading…
Skip to main content

CLI

The signaldiff executable crawls a sitemap locally (HTML report) or talks to the paid Agent API from a terminal. Cursor, Copilot, Claude, and other coding tools can run it with no MCP host to configure.

On this page

1. Install

Self-contained binaries — no .NET SDK and no repository clone. The installer verifies SHA256 and puts signaldiff on your PATH.

Windows

irm 'https://signaldiff.dev/install/cli.ps1' -OutFile "$env:TEMP\signaldiff-install-cli.ps1"
& "$env:TEMP\signaldiff-install-cli.ps1"

Linux / macOS

curl -fsSL 'https://signaldiff.dev/install/cli.sh' | bash

Open a new terminal so PATH updates apply (Linux/macOS: ~/.local/bin). Manual zips and checksums: downloads/cli. RID zips are typically about 30–32 MB to download (compressed single-file publish); size changes apply after the next cli-v* release. Pin a version with -Version / --version (published zips stay in blob storage). Contributors can still dotnet run --project SignalDiff from a clone.

Update

signaldiff update
signaldiff update --check

Replaces the current install with the latest published release (SHA256 verified). Use --check to report availability without downloading. --version pins a release; --force reinstalls the same version. .NET global tool installs should use dotnet tool update -g SignalDiff.Cli instead.

2. First command (local, free)

Pass --sitemap (no subcommand) to crawl from this machine and write an HTML report. No sign-in and no API key. signaldiff with no arguments prints help and exits 1 — it does not start a crawl.

signaldiff --sitemap https://example.com/sitemap.xml --output seo-report.html

Optional: --output (report path; missing parent directories are created before crawling), --max-pages (cap pages fetched; 0 / omitted is unlimited and warns on stderr), and --quiet (short summary on stdout; crawler logs at Warning+ on stderr). Crawler progress logs go to stderr; summary and report path stay on stdout. --json is for cloud subcommands only — with a local --sitemap crawl it exits 1 (HTML report remains the local output).

3. Use with AI coding tools

Paste this into Cursor, Copilot, Claude Code, or any coding tool that can run a terminal. It installs the CLI, runs a local crawl, and reads the report. Cloud commands run only if SIGNALDIFF_API_KEY is already set.

Install the Signal Diff CLI from https://signaldiff.dev/docs/cli (no .NET SDK required).

Windows:
irm 'https://signaldiff.dev/install/cli.ps1' -OutFile "$env:TEMP\signaldiff-install-cli.ps1"
& "$env:TEMP\signaldiff-install-cli.ps1"

Linux/macOS:
curl -fsSL 'https://signaldiff.dev/install/cli.sh' | bash

Open a new terminal, then crawl this sitemap locally:
signaldiff --sitemap https://example.com/sitemap.xml --output seo-report.html

Read seo-report.html and summarize SEO and crawl issues with suggested fixes.

If SIGNALDIFF_API_KEY is set, use cloud commands instead (base URL https://signaldiff.dev/api — include /api):
signaldiff sites list
signaldiff runs summary <runId>
signaldiff diff get <runId>

4. Cloud commands

Subcommands (sites, runs, diff, findings, scan) call Signal Diff in the cloud and need a paid API key.

signaldiff sites list
signaldiff runs list --site example.com
signaldiff runs get <runId>
signaldiff runs summary <runId>
signaldiff diff get <runId>
signaldiff findings list <runId> --severity Error --limit 50
signaldiff scan start --sitemap https://example.com/sitemap.xml
signaldiff scan wait <scanId> --json
signaldiff scan get <scanId>
signaldiff scan cancel <scanId>

Add --json for scripting on cloud commands (tables and key-value text are the default). Contract: success JSON on stdout; failures are one JSON object on stderr (error, optional statusCode / retryAfterSeconds — e.g. 401 unauthorized or 429 with retry-after) so pipes stay clean. Local --sitemap crawls reject --json (exit 1, no crawl). scan wait exits 0 when the scan completes and 1 when it fails; --interval (seconds, default 2) and optional --timeout control polling.

{
  "error": "Rate limit exceeded.",
  "statusCode": 429,
  "retryAfterSeconds": 30
}

Customer-hosted crawls: scan start --execution-mode Agent --agent-pool-id <pool> (see Customer agent setup).

5. Authentication

Cloud commands need a paid key from Developers → API keys. The same secret value works for GitHub Actions; the environment names and base URL differ.

Consumer Key variable Base URL
CLI / Agent API SIGNALDIFF_API_KEY https://signaldiff.dev/api (include /api)
GitHub Action SIGNALDIFF_CI_API_KEY https://signaldiff.dev (no /api)

Linux / macOS

export SIGNALDIFF_API_KEY=sck_…
export SIGNALDIFF_API_BASE_URL=https://signaldiff.dev/api

Windows PowerShell

$env:SIGNALDIFF_API_KEY = "sck_…"
$env:SIGNALDIFF_API_BASE_URL = "https://signaldiff.dev/api"

Staging: https://staging.signaldiff.dev/api. Flags --api-key and --base-url override the environment; the flag is visible in process lists—prefer the variable in CI.