• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
ashryanio

ashryanio

index-now

Public
Like
index-now
Home
Code
6
config
1
lib
1
README.md
C
indexnow.cron.ts
H
indexnow.http.ts
H
indexnow.monitor.http.ts
Environment variables
10
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
Viewing readonly version of main branch: v61
View latest version
README.md

IndexNow Automation Val

This val automates IndexNow submission by:

  1. Crawling sitemap URLs.
  2. Tracking submission history in project-scoped SQLite.
  3. Submitting only changed URLs in batches (up to 10,000 URLs per POST).

Trigger Model

  • indexnow.cron.ts: scheduled automation trigger.
  • indexnow.http.ts: manual trigger for dry runs and debugging.
  • indexnow.monitor.http.ts: monitoring endpoint for submission health/history.

The recommended setup is a cron trigger every hour for sitemap polling, plus the HTTP trigger when you want immediate/manual control.

Environment Variables

  • INDEXNOW_ENDPOINT (optional): defaults to https://api.indexnow.org/indexnow.
  • INDEXNOW_MAX_URLS_PER_RUN (optional): defaults to 5000.

Site Config Files

Site configs live in config/sites/*.json with one site per file. At least one file must exist or the val will throw on startup.

Example: config/sites/hanayou.studio.json

{ "host": "www.hanayou.studio", "sitemapUrl": "https://www.hanayou.studio/sitemap.xml", "keyLocation": "https://www.hanayou.studio/2dc12b205bfe46d19a75077e3991f7ce.txt", "key": "optional-explicit-key", "includePrefixes": ["/journal/", "/guides/"], "excludePrefixes": ["/tag/", "/author/"] }

HTTP Usage

  • Dry run: ?dryRun=1
  • Force resubmit currently eligible URLs: ?force=1
  • Target a single configured site: ?site=www.hanayou.studio
  • Response includes stage-specific URL arrays:
  • siteRuns[].filteredUrls for URLs that passed filters.
  • siteRuns[].changedUrls for URLs detected as changed.
  • siteRuns[].queuedUrls for changed URLs after run-cap limiting.
  • siteRuns[].submittedCount counts only HTTP 200 responses.
  • HTTP 202 responses are tracked as pending in siteRuns[].pendingCount.

Example:

https://<your-val>.web.val.run/?dryRun=1&site=www.hanayou.studio

Monitor Endpoint

  • Path: indexnow.monitor.http.ts endpoint
  • Purpose: IndexNow health snapshot from config + SQLite state
  • Query params:
  • site (optional): limit report to one configured host.
  • runs (optional): recent run history per site (default 10, max 50).

Response highlights:

  • totals.submitted200Urls: URLs with confirmed HTTP 200 submission state.
  • totals.pending202Urls: URLs last seen with HTTP 202 (pending).
  • sites[].latestRun: latest run summary per site.
  • sites[].recentRuns: recent run history per site.

History Tracking

SQLite tables:

  • indexnow_url_state_v1: per-URL state (seen/submitted timestamps, lastmod, status).
  • indexnow_run_log_v1: per-run summaries for observability and debugging.

This val uses https://esm.town/v/std/sqlite/main.ts so data is scoped to this val project.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.