{"id":51451471,"url":"https://github.com/getappz/pageflare-cli","last_synced_at":"2026-07-05T21:14:52.465Z","repository":{"id":345481690,"uuid":"1186062558","full_name":"getappz/pageflare-cli","owner":"getappz","description":"Optimize static sites for PageSpeed — HTML, CSS, JS minification, image optimization, font subsetting, critical CSS, and more.","archived":false,"fork":false,"pushed_at":"2026-04-14T08:16:33.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T04:06:46.365Z","etag":null,"topics":["core-web-vitals","lighthouse","pagespeed","performance","static-site-optimization","web-performance","wordpress"],"latest_commit_sha":null,"homepage":"https://pageflare.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getappz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-19T08:21:28.000Z","updated_at":"2026-04-14T08:16:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/getappz/pageflare-cli","commit_stats":null,"previous_names":["getappz/pageflare-cli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/getappz/pageflare-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappz%2Fpageflare-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappz%2Fpageflare-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappz%2Fpageflare-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappz%2Fpageflare-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getappz","download_url":"https://codeload.github.com/getappz/pageflare-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappz%2Fpageflare-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35170189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["core-web-vitals","lighthouse","pagespeed","performance","static-site-optimization","web-performance","wordpress"],"created_at":"2026-07-05T21:14:51.788Z","updated_at":"2026-07-05T21:14:52.445Z","avatar_url":"https://github.com/getappz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @pageflare/cli\n\nOptimize static site output for PageSpeed. Pageflare processes your SSG build output (HTML, CSS, JS, images) and applies production-grade optimizations.\n\n## GitHub Action\n\nAdd one step to your workflow — no install needed:\n\n```yaml\n- uses: getappz/pageflare-cli@v1\n```\n\nWith options:\n\n```yaml\n- uses: getappz/pageflare-cli@v1\n  with:\n    args: \"dist -o optimized --platform vercel\"\n```\n\n| Input | Default | Description |\n|-------|---------|-------------|\n| `version` | `latest` | CLI version to install |\n| `args` | | Arguments passed to `pageflare optimize` |\n\n## Install\n\n```bash\nnpm install -g @pageflare/cli\n```\n\nOr as a dev dependency:\n\n```bash\nnpm install -D @pageflare/cli\n```\n\n## Usage\n\n```bash\n# Optimize current directory\npageflare\n\n# Optimize a specific build directory\npageflare dist\n\n# Write optimized files to a separate output directory\npageflare dist -o optimized\n\n# Optimize the build directory in place (overwrite files in dist/)\npageflare dist -o dist\n\n# Wipe the output directory before writing (full reset; refuses if input == output)\npageflare dist -o optimized --clean-output\n\n# Build pipeline integration — opt into GEO + SEO + audit during optimize\npageflare dist -o dist --with-geo --with-seo --with-audit\npageflare dist -o dist --with-pwa                     # generate manifest/SW/icons too\npageflare dist -o dist --fail-on-broken-refs          # exit non-zero on internal 404s\n\n# Skip the browser-driven extractor (for CI environments without Chrome)\npageflare dist --no-browser\n\n# Generate a config file\npageflare init\n\n# Output manifest as JSON\npageflare dist --json\n\n# Audit site for performance issues\npageflare audit dist\n\n# Audit AI-readiness (GEO score) — auto-classifies as Content / API / All\npageflare geo audit --path dist/\npageflare geo audit --url https://example.com\npageflare geo audit --path dist/ --format github --badge\n\n# Force a profile, or explain which signals drove auto-classification\npageflare geo audit --path dist/ --profile content\npageflare geo audit --path dist/ --explain-profile\n\n# Auto-fix GEO issues (deterministic, no API key — requires Solo license)\npageflare geo fix dist/ --auto\npageflare geo fix dist/ --auto --profile api   # API/app sites only get API/MCP/agent-card templates\n\n# Audit SEO (technical SEO score, free)\npageflare seo audit dist/\n\n# Auto-fix SEO issues (deterministic — requires Solo license)\npageflare seo fix dist/ --auto\n\n# PWA: generate manifest + service worker + icons locally (free)\npageflare pwa build\n\n# Update to the latest version\npageflare upgrade\n```\n\n## Reference\n\n\u003c!-- BEGIN cli-reference (auto-generated by `just docs` in pageflare-crates — do not edit) --\u003e\n\n**Command Overview:**\n\n* [`pageflare`↴](#pageflare)\n* [`pageflare optimize`↴](#pageflare-optimize)\n* [`pageflare audit`↴](#pageflare-audit)\n* [`pageflare init`↴](#pageflare-init)\n* [`pageflare login`↴](#pageflare-login)\n* [`pageflare logout`↴](#pageflare-logout)\n* [`pageflare upgrade`↴](#pageflare-upgrade)\n* [`pageflare geo`↴](#pageflare-geo)\n* [`pageflare geo audit`↴](#pageflare-geo-audit)\n* [`pageflare geo fix`↴](#pageflare-geo-fix)\n* [`pageflare geo run`↴](#pageflare-geo-run)\n* [`pageflare seo`↴](#pageflare-seo)\n* [`pageflare seo audit`↴](#pageflare-seo-audit)\n* [`pageflare seo fix`↴](#pageflare-seo-fix)\n* [`pageflare sites`↴](#pageflare-sites)\n* [`pageflare sites add`↴](#pageflare-sites-add)\n* [`pageflare sites list`↴](#pageflare-sites-list)\n* [`pageflare sites remove`↴](#pageflare-sites-remove)\n* [`pageflare sites prune`↴](#pageflare-sites-prune)\n* [`pageflare sites set`↴](#pageflare-sites-set)\n* [`pageflare sites pages`↴](#pageflare-sites-pages)\n* [`pageflare sites pages list`↴](#pageflare-sites-pages-list)\n* [`pageflare sites pages label`↴](#pageflare-sites-pages-label)\n* [`pageflare sites pages exclude`↴](#pageflare-sites-pages-exclude)\n* [`pageflare schedule`↴](#pageflare-schedule)\n* [`pageflare schedule add`↴](#pageflare-schedule-add)\n* [`pageflare schedule list`↴](#pageflare-schedule-list)\n* [`pageflare schedule remove`↴](#pageflare-schedule-remove)\n* [`pageflare schedule pause`↴](#pageflare-schedule-pause)\n* [`pageflare schedule resume`↴](#pageflare-schedule-resume)\n* [`pageflare studio`↴](#pageflare-studio)\n* [`pageflare speed`↴](#pageflare-speed)\n* [`pageflare pwa`↴](#pageflare-pwa)\n* [`pageflare pwa init`↴](#pageflare-pwa-init)\n* [`pageflare pwa build`↴](#pageflare-pwa-build)\n* [`pageflare pwa config`↴](#pageflare-pwa-config)\n* [`pageflare pwa config set`↴](#pageflare-pwa-config-set)\n* [`pageflare pwa disable`↴](#pageflare-pwa-disable)\n* [`pageflare pwa push`↴](#pageflare-pwa-push)\n* [`pageflare pwa push send`↴](#pageflare-pwa-push-send)\n* [`pageflare pwa push list`↴](#pageflare-pwa-push-list)\n* [`pageflare pwa stats`↴](#pageflare-pwa-stats)\n* [`pageflare deploy`↴](#pageflare-deploy)\n\n## `pageflare`\n\nOptimize static site output for PageSpeed\n\n**Usage:** `pageflare [OPTIONS] [COMMAND]`\n\nWith no subcommand, runs 'optimize' by default.\n\nExamples:\n  pageflare                    Optimize current directory\n  pageflare init               Generate config file\n  pageflare optimize --help    Show optimize options\n  pageflare upgrade            Upgrade to latest version\n  pageflare speed https://example.com  Measure page speed\n\n###### **Subcommands:**\n\n* `optimize` — Optimize a static site directory (default)\n* `audit` — Audit a static site (performance + SEO + GEO)\n* `init` — Generate a pageflare.jsonc config file\n* `login` — Authenticate and activate a Pro license\n* `logout` — Remove license and deactivate this machine\n* `upgrade` — Upgrade to the latest version of pageflare\n* `geo` — Audit and fix AI-readiness (GEO)\n* `seo` — SEO audit and fix tools\n* `sites` — Manage monitored sites\n* `schedule` — Manage scan schedules\n* `studio` — Launch Pageflare Studio dashboard\n* `speed` — Measure page speed via Google PageSpeed Insights\n* `pwa` — PWA configuration and management\n* `deploy` — Optimize and deploy to platform (vercel, netlify, cloudflare-pages)\n\n###### **Options:**\n\n* `--log \u003cLOG\u003e` — Set log level (off, error, warn, info, debug, trace)\n\n  Default value: `warn`\n* `--json` — Output results as JSON\n\n\n\n## `pageflare optimize`\n\nOptimize a static site directory (default)\n\n**Usage:** `pageflare optimize [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the SSG output directory to process\n\n  Default value: `.`\n\n###### **Options:**\n\n* `-o`, `--output \u003cOUTPUT\u003e` — Output directory. If omitted, writes to `\u003cinput\u003e/.appz/output/static/`\n* `--json` — Output manifest as JSON instead of summary table\n* `--force` — Force reprocessing even if no files have changed\n* `--clean-output` — Clean the output directory before writing. Removes every file and subdirectory inside the output dir at the start of the run. Use after pageflare-side changes that rename or drop files (e.g. content-hashed filenames, framework upgrade) to avoid stale leftovers from prior builds. Refuses to run when output is in-place — that would nuke the source\n* `-c`, `--config \u003cCONFIG\u003e` — Path to config file. Defaults to `\u003cinput\u003e/pageflare.jsonc`\n* `--login` — Log in to activate your Pro license\n* `--platform \u003cPLATFORM\u003e` — Deployment platform for image optimization (auto, vercel, netlify, cloudflare-pages, none)\n* `--prod` — Production build. Enables platform CDN image rewrites\n* `--no-progress` — Disable progress spinners (auto-detected in non-TTY environments)\n* `--with-geo` — Run GEO (agent-readiness + crawler discovery) optimizations: - /sitemap.xml - /robots.txt + /llms.txt + /llms-full.txt + per-page .md - /.well-known/agent-card.json (A2A) - /.well-known/mcp/server-card.json - /.well-known/agent-skills/index.json - /.well-known/api-catalog (RFC 9727) - /ai/summary.json + /ai/faq.json\n\n   Default optimize is a pagespeed optimizer; this flag is needed unless you explicitly enable sitemap/llm in your pageflare.jsonc. Non-destructive — skips any file already present in the source.\n* `--with-seo` — Run SEO HTML injections during build (idempotent — never overwrites author-supplied tags): - \u003cmeta name=\"viewport\"\u003e when missing - \u003cmeta charset=\"utf-8\"\u003e when missing - \u003clink rel=\"canonical\" href=\"…\"\u003e derived from page url - basic OG tags (og:title, og:url, og:type) from page title\n\n   Page-level only. Title text and meta-description content are author concerns — use `pageflare seo fix` for LLM-driven content fixes.\n* `--with-audit` — Run audit checks during build and emit `audit.json` to the output dir. Idempotent — overwrites previous audit.json\n* `--with-pwa` — Run PWA build (manifest, service worker, icons) after the main pipeline finishes. Reads `pageflare.pwa.json` from the project root\n* `--fail-on-broken-refs` — Exit with non-zero status when broken references (404 internal links) are detected. Off by default so CI doesn't break on legacy content; turn on to gate deploys on link integrity\n* `--no-browser` — Disable all browser-rendering features unconditionally. Forces pageflare onto the heuristic fallback paths — byte-position LCP detection, source-order font preload, legacy critical-CSS inliner — regardless of which features would otherwise run. Use this in environments where no browser is available, when CI restrictions block the auto-install prompt, or to deliberately compare optimized output against the heuristic baseline.\n\n   When set, this suppresses the default critical-CSS apply pass and forces every render-pass-driven config flag off (`font_preload_from_render`, `image_preload_from_render`, `content_visibility_lazy_render`). The static-analysis fallback paths (critters-rs critical CSS, byte-position LCP heuristic, source-order font preload) take over.\n\n\n\n## `pageflare audit`\n\nAudit a static site (performance + SEO + GEO)\n\n**Usage:** `pageflare audit [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the static site output directory\n\n  Default value: `.`\n\n###### **Options:**\n\n* `--json` — Output findings as JSON instead of terminal summary\n* `--no-report` — Skip HTML report generation\n* `-o`, `--output \u003cOUTPUT\u003e` — Custom path for HTML report\n* `-c`, `--config \u003cCONFIG\u003e` — Path to config file\n* `--platform \u003cPLATFORM\u003e` — Deployment platform (auto, vercel, netlify, cloudflare-pages, none)\n* `--fail-under \u003cFAIL_UNDER\u003e` — Exit with code 2 if any audit score falls below this threshold\n* `--fail-on-finding \u003cFAIL_ON_FINDING\u003e` — Exit with code 2 when any performance finding at or above this severity exists. One of: error, warning, info. Independent of --fail-under (which gates SEO/GEO scores)\n\n  Possible values: `error`, `warning`, `info`\n\n* `--no-save` — Skip auto-saving to monitor DB\n\n\n\n## `pageflare init`\n\nGenerate a pageflare.jsonc config file\n\n**Usage:** `pageflare init [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the directory to generate config in\n\n  Default value: `.`\n\n\n\n## `pageflare login`\n\nAuthenticate and activate a Pro license\n\n**Usage:** `pageflare login`\n\n\n\n## `pageflare logout`\n\nRemove license and deactivate this machine\n\n**Usage:** `pageflare logout`\n\n\n\n## `pageflare upgrade`\n\nUpgrade to the latest version of pageflare\n\n**Usage:** `pageflare upgrade [OPTIONS]`\n\n**Command Alias:** `up`\n\n###### **Options:**\n\n* `--force` — Force reinstall even if already on latest version\n\n\n\n## `pageflare geo`\n\nAudit and fix AI-readiness (GEO)\n\n**Usage:** `pageflare geo \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `audit` — Audit site for AI-readiness score\n* `fix` — Fix GEO issues using an LLM (Pro license)\n* `run` — Audit + apply deterministic fixes in one step (equivalent to `geo fix --auto`). For LLM-driven patches, use `geo fix`\n\n\n\n## `pageflare geo audit`\n\nAudit site for AI-readiness score\n\n**Usage:** `pageflare geo audit [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the site directory (project root or build output)\n\n  Default value: `.`\n\n###### **Options:**\n\n* `--url \u003cURL\u003e` — Single URL to audit (fetches live, overrides path input)\n* `--base-url \u003cBASE_URL\u003e` — Base URL for path mode (for robots.txt/llms.txt checks)\n* `--max-pages \u003cMAX_PAGES\u003e` — Maximum number of pages to audit\n* `--format \u003cFORMAT\u003e` — Output format: json, table, markdown, github, html, sarif\n\n  Default value: `table`\n* `-o`, `--output \u003cOUTPUT\u003e` — Write report to file instead of stdout\n* `--fail-under \u003cFAIL_UNDER\u003e` — Exit code 2 if score is below this threshold (for CI)\n* `--verbose` — Show all rules including passed ones\n* `--badge` — Output badge snippets (Markdown, HTML) after the audit\n* `--no-save` — Skip auto-saving to monitor DB\n* `--fail-on-finding \u003cFAIL_ON_FINDING\u003e` — Exit with code 2 when any finding at or above this severity exists. One of: critical, warning, info. Independent of --fail-under (which gates on score)\n\n  Possible values: `critical`, `warning`, `info`\n\n* `--profile \u003cPROFILE\u003e` — Profile filter: auto (classify), all, content, api\n\n  Default value: `auto`\n\n  Possible values: `auto`, `all`, `content`, `api`\n\n* `--explain-profile` — Print resolved profile + classifier signals to stderr\n\n\n\n## `pageflare geo fix`\n\nFix GEO issues using an LLM (Pro license)\n\n**Usage:** `pageflare geo fix [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the site directory (project root or build output)\n\n  Default value: `.`\n\n###### **Options:**\n\n* `-o`, `--output \u003cOUTPUT\u003e` — Output directory. If omitted, uses resolved output dir\n* `--auto` — Run deterministic fixes without LLM (free, no API key needed)\n* `--audit-report \u003cAUDIT_REPORT\u003e` — Path to JSON audit report (runs audit if omitted)\n* `--model \u003cMODEL\u003e` — LLM model identifier\n* `--provider \u003cPROVIDER\u003e` — LLM provider: openai, anthropic, custom\n\n  Default value: `anthropic`\n* `--max-fixes \u003cMAX_FIXES\u003e` — Maximum pages to fix\n\n  Default value: `10`\n* `--profile \u003cPROFILE\u003e` — Profile filter: auto (classify), all, content, api\n\n  Default value: `auto`\n\n  Possible values: `auto`, `all`, `content`, `api`\n\n* `--explain-profile` — Print resolved profile + classifier signals to stderr\n\n\n\n## `pageflare geo run`\n\nAudit + apply deterministic fixes in one step (equivalent to `geo fix --auto`). For LLM-driven patches, use `geo fix`\n\n**Usage:** `pageflare geo run [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the site directory (project root or build output)\n\n  Default value: `.`\n\n###### **Options:**\n\n* `-o`, `--output \u003cOUTPUT\u003e` — Output directory. If omitted, uses resolved output dir\n* `--auto` — Run deterministic fixes without LLM (free, no API key needed)\n* `--audit-report \u003cAUDIT_REPORT\u003e` — Path to JSON audit report (runs audit if omitted)\n* `--model \u003cMODEL\u003e` — LLM model identifier\n* `--provider \u003cPROVIDER\u003e` — LLM provider: openai, anthropic, custom\n\n  Default value: `anthropic`\n* `--max-fixes \u003cMAX_FIXES\u003e` — Maximum pages to fix\n\n  Default value: `10`\n* `--profile \u003cPROFILE\u003e` — Profile filter: auto (classify), all, content, api\n\n  Default value: `auto`\n\n  Possible values: `auto`, `all`, `content`, `api`\n\n* `--explain-profile` — Print resolved profile + classifier signals to stderr\n\n\n\n## `pageflare seo`\n\nSEO audit and fix tools\n\n**Usage:** `pageflare seo \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `audit` — Run SEO audit on a site\n* `fix` — Generate SEO fixes using LLM (Pro license)\n\n\n\n## `pageflare seo audit`\n\nRun SEO audit on a site\n\n**Usage:** `pageflare seo audit [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the site directory (project root or build output)\n\n  Default value: `.`\n\n###### **Options:**\n\n* `--url \u003cURL\u003e` — Single URL to audit (live fetch, overrides path input)\n* `--base-url \u003cBASE_URL\u003e` — Base URL for path mode (used for site-level checks)\n* `--format \u003cFORMAT\u003e` — Output format: json, table, markdown, github, html, sarif\n\n  Default value: `table`\n* `-o`, `--output \u003cOUTPUT\u003e` — Write report to file\n* `--fail-under \u003cFAIL_UNDER\u003e` — Exit with code 2 if score is below this threshold\n* `--verbose` — Show all rules including passed\n* `--no-save` — Skip auto-saving to monitor DB\n* `--max-pages \u003cMAX_PAGES\u003e` — Cap the number of pages scanned (path mode). Useful on large sites to bound audit duration. Pages are taken in scanner order; no flag means scan every HTML file\n* `--fail-on-finding \u003cFAIL_ON_FINDING\u003e` — Exit with code 2 when any finding at or above this severity exists. One of: critical, warning, info. Independent of --fail-under (which gates on score)\n\n  Possible values: `critical`, `warning`, `info`\n\n\n\n\n## `pageflare seo fix`\n\nGenerate SEO fixes using LLM (Pro license)\n\n**Usage:** `pageflare seo fix [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the site directory (project root or build output)\n\n  Default value: `.`\n\n###### **Options:**\n\n* `-o`, `--output \u003cOUTPUT\u003e` — Output directory. If omitted, uses resolved output dir\n* `--audit-report \u003cAUDIT_REPORT\u003e` — Path to audit report JSON (runs audit if omitted)\n* `--max-fixes \u003cMAX_FIXES\u003e` — Maximum pages to fix\n\n  Default value: `10`\n* `--provider \u003cPROVIDER\u003e` — LLM provider (e.g., anthropic, openai, groq)\n\n  Default value: `anthropic`\n* `--model \u003cMODEL\u003e` — LLM model identifier\n\n  Default value: `claude-sonnet-4-6`\n* `--auto` — Generate deterministic fixes without LLM (free, no API key needed)\n\n\n\n## `pageflare sites`\n\nManage monitored sites\n\n**Usage:** `pageflare sites \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `add` — Register a site for monitoring\n* `list` — List monitored sites\n* `remove` — Remove a monitored site\n* `prune` — Remove old scan data\n* `set` — Set site configuration\n* `pages` — Manage tracked pages for a site\n\n\n\n## `pageflare sites add`\n\nRegister a site for monitoring\n\n**Usage:** `pageflare sites add [OPTIONS] \u003cURL\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — URL of the site to monitor\n\n###### **Options:**\n\n* `--name \u003cNAME\u003e` — Human-readable name for the site\n\n\n\n## `pageflare sites list`\n\nList monitored sites\n\n**Usage:** `pageflare sites list`\n\n\n\n## `pageflare sites remove`\n\nRemove a monitored site\n\n**Usage:** `pageflare sites remove \u003cID\u003e`\n\n###### **Arguments:**\n\n* `\u003cID\u003e` — Site ID to remove\n\n\n\n## `pageflare sites prune`\n\nRemove old scan data\n\n**Usage:** `pageflare sites prune --older-than \u003cOLDER_THAN\u003e`\n\n###### **Options:**\n\n* `--older-than \u003cOLDER_THAN\u003e` — Remove scans older than this duration (e.g., \"90d\", \"30d\")\n\n\n\n## `pageflare sites set`\n\nSet site configuration\n\n**Usage:** `pageflare sites set [OPTIONS] \u003cURL\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — Site URL\n\n###### **Options:**\n\n* `--psi-api-key \u003cPSI_API_KEY\u003e` — Google PageSpeed Insights API key for this site\n\n\n\n## `pageflare sites pages`\n\nManage tracked pages for a site\n\n**Usage:** `pageflare sites pages \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `list` — List tracked pages\n* `label` — Set a label for a page\n* `exclude` — Toggle page exclusion\n\n\n\n## `pageflare sites pages list`\n\nList tracked pages\n\n**Usage:** `pageflare sites pages list \u003cURL\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — Site URL\n\n\n\n## `pageflare sites pages label`\n\nSet a label for a page\n\n**Usage:** `pageflare sites pages label \u003cURL\u003e \u003cPATH\u003e \u003cLABEL\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — Site URL\n* `\u003cPATH\u003e` — Page path (e.g. /blog/post)\n* `\u003cLABEL\u003e` — Label to assign to the page\n\n\n\n## `pageflare sites pages exclude`\n\nToggle page exclusion\n\n**Usage:** `pageflare sites pages exclude [OPTIONS] \u003cURL\u003e \u003cPATH\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — Site URL\n* `\u003cPATH\u003e` — Page path\n\n###### **Options:**\n\n* `--exclude` — Force-exclude the page (idempotent for scripted use)\n* `--include` — Force-include the page (idempotent for scripted use)\n\n\n\n## `pageflare schedule`\n\nManage scan schedules\n\n**Usage:** `pageflare schedule \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `add` — Add a scan schedule\n* `list` — List scan schedules\n* `remove` — Remove a scan schedule\n* `pause` — Pause a schedule (mark disabled in DB and remove from OS crontab)\n* `resume` — Resume a paused schedule (mark enabled in DB and re-add to crontab)\n\n\n\n## `pageflare schedule add`\n\nAdd a scan schedule\n\n**Usage:** `pageflare schedule add [OPTIONS] --site \u003cSITE\u003e`\n\n###### **Options:**\n\n* `--site \u003cSITE\u003e` — Site URL or ID to schedule\n* `--every \u003cEVERY\u003e` — Scan interval shorthand (e.g., \"1h\", \"6h\", \"24h\")\n* `--cron \u003cCRON\u003e` — Custom cron expression\n* `--types \u003cTYPES\u003e` — Scan types to run (comma-separated: psi,seo,geo). Default: all\n\n  Default value: `seo,geo`\n\n\n\n## `pageflare schedule list`\n\nList scan schedules\n\n**Usage:** `pageflare schedule list`\n\n\n\n## `pageflare schedule remove`\n\nRemove a scan schedule\n\n**Usage:** `pageflare schedule remove \u003cID\u003e`\n\n###### **Arguments:**\n\n* `\u003cID\u003e` — Schedule ID to remove\n\n\n\n## `pageflare schedule pause`\n\nPause a schedule (mark disabled in DB and remove from OS crontab)\n\n**Usage:** `pageflare schedule pause \u003cID\u003e`\n\n###### **Arguments:**\n\n* `\u003cID\u003e` — Schedule ID\n\n\n\n## `pageflare schedule resume`\n\nResume a paused schedule (mark enabled in DB and re-add to crontab)\n\n**Usage:** `pageflare schedule resume \u003cID\u003e`\n\n###### **Arguments:**\n\n* `\u003cID\u003e` — Schedule ID\n\n\n\n## `pageflare studio`\n\nLaunch Pageflare Studio dashboard\n\n**Usage:** `pageflare studio [OPTIONS]`\n\n###### **Options:**\n\n* `--port \u003cPORT\u003e` — Port to serve on\n\n  Default value: `9876`\n\n\n\n## `pageflare speed`\n\nMeasure page speed via Google PageSpeed Insights\n\n**Usage:** `pageflare speed [OPTIONS] \u003cURL\u003e`\n\n###### **Arguments:**\n\n* `\u003cURL\u003e` — URL to test\n\n###### **Options:**\n\n* `--strategy \u003cSTRATEGY\u003e` — Strategy: mobile or desktop\n\n  Default value: `mobile`\n* `--format \u003cFORMAT\u003e` — Output format: table or json\n\n  Default value: `table`\n* `--fail-under \u003cFAIL_UNDER\u003e` — Exit with code 2 if Lighthouse performance score is below this threshold (0-100). Useful for CI gating\n* `--no-save` — Skip auto-saving the result to the monitor DB\n\n\n\n## `pageflare pwa`\n\nPWA configuration and management\n\n**Usage:** `pageflare pwa \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `init` — Scaffold pageflare.pwa.jsonc and generate all PWA assets (icons, manifest, SW, SDK)\n* `build` — Generate / rebuild all PWA assets from pageflare.pwa.jsonc\n* `config` — Cloud-mode: display or update PWA config via API\n* `disable` — Cloud-mode: disable PWA for site via API\n* `push` — Cloud-mode: push notification commands\n* `stats` — Cloud-mode: show PWA analytics summary (last 30 days)\n\n\n\n## `pageflare pwa init`\n\nScaffold pageflare.pwa.jsonc and generate all PWA assets (icons, manifest, SW, SDK)\n\n**Usage:** `pageflare pwa init`\n\n\n\n## `pageflare pwa build`\n\nGenerate / rebuild all PWA assets from pageflare.pwa.jsonc\n\n**Usage:** `pageflare pwa build [OPTIONS]`\n\n###### **Options:**\n\n* `-c`, `--config \u003cCONFIG\u003e` — Path to config file (default: pageflare.pwa.jsonc)\n* `-f`, `--force` — Force rebuild even if nothing changed\n\n\n\n## `pageflare pwa config`\n\nCloud-mode: display or update PWA config via API\n\n**Usage:** `pageflare pwa config [COMMAND]`\n\n###### **Subcommands:**\n\n* `set` — Set a config field\n\n\n\n## `pageflare pwa config set`\n\nSet a config field\n\n**Usage:** `pageflare pwa config set \u003cKEY\u003e \u003cVALUE\u003e`\n\n###### **Arguments:**\n\n* `\u003cKEY\u003e` — Config key\n* `\u003cVALUE\u003e` — Config value\n\n\n\n## `pageflare pwa disable`\n\nCloud-mode: disable PWA for site via API\n\n**Usage:** `pageflare pwa disable`\n\n\n\n## `pageflare pwa push`\n\nCloud-mode: push notification commands\n\n**Usage:** `pageflare pwa push \u003cCOMMAND\u003e`\n\n###### **Subcommands:**\n\n* `send` — Send a push notification to all subscribers\n* `list` — List push messages and subscriber count\n\n\n\n## `pageflare pwa push send`\n\nSend a push notification to all subscribers\n\n**Usage:** `pageflare pwa push send [OPTIONS] \u003cTITLE\u003e \u003cBODY\u003e`\n\n###### **Arguments:**\n\n* `\u003cTITLE\u003e` — Notification title\n* `\u003cBODY\u003e` — Notification body text\n\n###### **Options:**\n\n* `--url \u003cURL\u003e` — Optional URL to open on click\n\n\n\n## `pageflare pwa push list`\n\nList push messages and subscriber count\n\n**Usage:** `pageflare pwa push list`\n\n\n\n## `pageflare pwa stats`\n\nCloud-mode: show PWA analytics summary (last 30 days)\n\n**Usage:** `pageflare pwa stats`\n\n\n\n## `pageflare deploy`\n\nOptimize and deploy to platform (vercel, netlify, cloudflare-pages)\n\n**Usage:** `pageflare deploy [OPTIONS] [INPUT]`\n\n###### **Arguments:**\n\n* `\u003cINPUT\u003e` — Path to the SSG output directory [default: .]\n\n  Default value: `.`\n\n###### **Options:**\n\n* `--platform \u003cPLATFORM\u003e` — Deployment platform (auto-detected from project files if omitted)\n* `--prod` — Production build (enables platform CDN image rewrites)\n* `--with-geo \u003cWITH_GEO\u003e` — Run GEO optimizations (sitemap, llms.txt, etc.) [default: true]. Pass `--with-geo=false` to opt out\n\n  Default value: `true`\n\n  Possible values: `true`, `false`\n\n* `--with-seo \u003cWITH_SEO\u003e` — Run SEO HTML injections [default: true]. Pass `--with-seo=false` to opt out\n\n  Default value: `true`\n\n  Possible values: `true`, `false`\n\n* `--force` — Force reprocess even if no files changed\n* `-c`, `--config \u003cCONFIG\u003e` — Path to config file\n\n\n\n\n\u003c!-- END cli-reference --\u003e\n\nPageflare auto-detects your SSG framework (Next.js, Astro, Gatsby, Nuxt, Vite, Hugo, Jekyll, and more) and resolves the correct build output directory.\n\n## Documentation\n\n- [Getting Started](https://pageflare.dev/docs/getting-started) — install, configure, and run your first optimization\n- [CLI Commands](https://pageflare.dev/docs/cli/commands) — full reference for all subcommands and flags\n- [Configuration](https://pageflare.dev/docs/cli/configuration) — `pageflare.jsonc` options and per-feature settings\n- [Changelog](https://pageflare.dev/docs/changelog) — release notes and version history\n- [WordPress Guide](https://pageflare.dev/wordpress) — static export and edge optimization workflows\n- [Free Audit](https://pageflare.dev/audit) — live PageSpeed analysis with fix recommendations\n\n## Supported Platforms\n\nThis package installs a platform-specific binary via optional dependencies:\n\n| Platform | Package |\n|---|---|\n| Linux x64 (glibc) | `@pageflare/cli-linux-x64` |\n| Linux arm64 (glibc) | `@pageflare/cli-linux-arm64` |\n| Linux x64 (musl) | `@pageflare/cli-linux-x64-musl` |\n| Linux arm64 (musl) | `@pageflare/cli-linux-arm64-musl` |\n| Windows x64 | `@pageflare/cli-win32-x64` |\n\nmacOS support is planned but not yet shipped. macOS users can run pageflare via Docker (`docker run --rm -v $(pwd):/site pageflare/cli /site`) or via WSL/a Linux VM in the meantime.\n\n## Alternative Install Methods\n\n```bash\n# Homebrew\nbrew tap getappz/tap \u0026\u0026 brew install pageflare\n\n# Shell (Linux/macOS)\ncurl -fsSL https://get.appz.dev/pageflare/install.sh | sh\n\n# PowerShell (Windows)\nirm https://get.appz.dev/pageflare/install.ps1 | iex\n\n# Docker\ndocker run --rm -v $(pwd):/site pageflare/cli /site\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetappz%2Fpageflare-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetappz%2Fpageflare-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetappz%2Fpageflare-cli/lists"}