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 --versionnpx 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 creditsEach 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,
noindexor expired rules, error pages and canonicals that point to another page are skipped with askipReason. Pages that could not be checked (unsupported file types, repeated fetch errors) are skipped ascould_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_IDshows each waiting URL withpreflightWarningsandmainWordCount. Nothing is sent or charged until you runapprovefor 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_IDProject 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.
