npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@speed.press/kit

v2.3.0

Published

Convert WordPress sites into pixel-faithful Astro frontends

Readme

@speed.press/kit

Turn any WordPress site into a fast static site — in one command.

npx @speed.press/kit mirror https://your-wordpress-site.com

No install, no config. You get a deployable Astro project in ./mirror-site — your pages captured with their styling, images and CSS self-hosted, and a Dockerfile. WordPress stays your CMS.

cd mirror-site && npm install && npm run dev     # → http://localhost:4321

Stop the dev server when you have seen enough, then build:

npm run build                                    # → static output in dist/

Requires Node 22.12+ (generated projects build on Astro 7 / Vite 8).

Defaults worth knowing

The one-liner is tuned for a typical site. Three limits, all flags:

| Default | Why it might not suit you | Flag | |---|---|---| | 500 pages, 2,000 assets | A bigger site is captured up to the cap and the rest is left behind | --max-pages, --max-assets — or run xch inventory <url> first and convert in batches | | Video and audio stream from the original host | Lets you cut over without moving gigabytes; but the old host stays load-bearing | --media localize before you retire the source | | Renders with Chromium when Playwright is installed, plain HTML fetch otherwise | Playwright is not a dependency of this package, so a JavaScript-rendered site captures as its pre-render HTML | install both locally (below), then --render chromium |

xch mirror-verify reports which live pages the clone missed, so you do not have to guess whether any of this bit you.

Chromium rendering needs Playwright resolvable from the kit, which an npx run cannot be — it executes out of npm's cache, so a project-local Playwright is not on its resolution path. Put both in one tree:

npm i -D @speed.press/kit playwright
npx playwright install chromium
npx xch mirror https://your-wordpress-site.com --render chromium --out .

Install it properly

npm install -g @speed.press/kit
xch --help

Two engines

  • mirror — captures the site exactly as it looks today. Use this when the design should not change.
  • scaffold — rebuilds a clean headless frontend from the WP REST API. Use this for blogs, docs and other structured content you want restyled.

Commands

| Command | Does | |---|---| | xch mirror <wp-url> | Exact-capture a site into a deployable static Astro project | | xch mirror-verify | Measure the clone against the live site (--visual adds a screenshot diff) | | xch scaffold <wp-url> | Generate an Astro project + Dockerfile from the WP REST API | | xch analyze <wp-url> | Scan a WP site: post types, theme, plugins, permalinks, menus, taxonomies | | xch inventory <wp-url> | Public post types + counts and a recommended batch plan | | xch verify | Pre-deploy checks: routes, SEO meta, manifest integrity | | xch ai-scan <url> | Score AI & SEO agent-readiness via aiscan.site | | xch ai-ready | Write llms.txt + an AI-friendly robots.txt into a project | | xch covers | Generate 1200×630 social covers for pages missing an og:image | | xch case-studies | Scaffold the two-axis case-study + industry-story system | | xch mcp | Configure, inspect and test agent publishing | | xch sync | Pull latest WordPress content into local cache | | xch dependency-graph | Build the manifest mapping content IDs to URLs | | xch diff | Visual diff between generated Astro pages and source WordPress | | xch deploy | Deploy to xCloud: provision the site, connect GitHub, trigger the first build | | xch plugin-install | Install and configure the xCloud Headless Bridge WordPress plugin | | xch extract-design | Playwright-driven capture of HTML/CSS/screenshots from the live site | | xch build-components | Generate Astro components from a design capture using Claude |

Run xch <command> --help for all options.

Let an agent publish and edit the site

# from inside the generated project
[ -f .env ] || cp .env.example .env      # then point SITE_URL at your deployed HTTPS URL
xch mcp setup --project .

Set SITE_URL before running setup: it defaults to your WordPress address, and setup builds the connector config it prints from that value.

Setup writes the key into the project's .env rather than printing it. Copy it from there into your deployment environment as MCP_PUBLISH_KEY, and set SITE_URL there too — OAuth builds its issuer and endpoints from the deployed value. Then deploy and point Claude at https://your-site.example/api/mcp. It can publish posts straight away.

Page and file edits (edit_page, edit_source) additionally need GIT_REPO_URL and GIT_TOKEN on the container; those are committed to your repo and survive a redeploy. Scope the token to the one repository.

MCP in 3 commands →

Live content updates

Install the companion WordPress bridge plugin (bundled in release tarballs under plugin/) on your WordPress site and give it the container's webhook secret. It then posts on every edit, and the container updates just the affected pages in 1–5 seconds — no rebuild, no redeploy. This needs the container: a plain dist/ upload has no sidecar to receive the webhook.

Links

CLI: MIT. The bundled WordPress bridge (plugin/ in release tarballs) is GPL-2.0-or-later. See LICENSES.md for component licenses.