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

indexmysite

v0.2.0

Published

Submit URLs for indexing and track results from your terminal.

Readme

Index My Site CLI

Submit URLs and check results from your terminal or coding agent.

Requires Node.js 22 or later. Run with npx as shown below, or install once:

npm install --global indexmysite
indexmysite --version
npx indexmysite login
npx indexmysite submit https://example.com/page --request-id release-2026-09-17
npx indexmysite submit --file urls.txt --name 'New pages' --request-id new-pages-2026-09-17
npx indexmysite jobs
npx indexmysite status JOB_ID
npx indexmysite approve JOB_ID URL_ID [URL_ID...]
npx indexmysite approve JOB_ID --all
npx indexmysite credits

Each submission supports up to 2,000 URLs. Reuse the same request ID and inputs when retrying a submission. You can submit pages on your site, mentions, and citations on other sites.

Checks before sending

Every URL is checked before it is sent, so the cost is at most one credit per URL, not always one for every URL:

  • Duplicate entries in one submission are folded into one URL. A URL already in progress in another of your submissions (across all projects) and still waiting for its first indexing check is skipped as duplicate_in_progress; submit it again after that check if you want another attempt.
  • Redirects, robots.txt blocks on Googlebot, noindex or expired rules, error pages and canonicals that point to another page are skipped with a skipReason. Pages that could not be checked (unsupported file types, repeated fetch errors) are skipped as could_not_check. Skipped URLs are never sent or charged. A skip is a sending rule of this service, not proof that Google cannot index the page.
  • Pages with little main content on first load wait as needs_review. status JOB_ID shows each waiting URL with preflightWarnings and mainWordCount. Nothing is sent or charged until you run approve for the URLs you choose. This is a warning about how much text was read, not a Google rule, and it does not measure whether the text is unique. Approving is not sending: an approved URL can still wait for credits, and a pass or approval older than an hour is checked again before the credit is reserved.

approve needs explicit URL ids or --all. Repeating an approval changes nothing and never charges twice.

Login opens your browser for approval, like the app's other connected clients. Each client gets its own key. Local credentials are stored in ~/.config/indexmysite/config.json with owner-only access. indexmysite logout removes local keys. Revoke a connected client in the app to stop its access.

For automation, set INDEXMYSITE_API_TOKEN. Use --stdin to read URLs from a pipe. Results use JSON. submit and status include a guidance object: which URLs were sent, are being checked, need your review, were skipped or are waiting for credits, and the check schedule (first check after 24 hours, full report around day 5, final checks around day 14, timed from when each URL is sent). URLs already sent keep running when the balance runs out. Buy credits and set auto-reload at https://app.indexmysite.app/credits. All requests go through Index My Site.

For local development, use --base http://localhost:3000.

Projects

Use a project to keep submissions for a client or site together.

indexmysite project create "Client site"
indexmysite project list
indexmysite submit https://example.com/page --project PROJECT_ID
indexmysite project show PROJECT_ID

Project lists return up to 200 projects. When nextCursor is set, pass it with project list --after CURSOR. Project details show the latest 100 jobs; totals include all URLs. The index rate uses completed batches, excludes processing failures, and stays empty until results are ready.