Install
openclaw skills install robotaxi-trackerUse this skill when the user asks for the latest or current US autonomous vehicle, self-driving car, robotaxi, Tesla, or Waymo vehicle counts, fleet size, ci...
openclaw skills install robotaxi-trackerUse this skill for requests about robotaxitracker.com, especially when the user wants:
This skill should also trigger for natural-language requests like:
status: success for the expected public queries.404 or wrong host is not an auth failure.curlrgjqIf network is restricted, switch to a tool or environment that can fetch the site.
curl -sS https://robotaxitracker.com/ -o /tmp/robotaxi_home.html
You must scan all homepage chunks. Do not pick a single chunk by guesswork.
grep -o '/_next/static/chunks/[^"?]*\.js' /tmp/robotaxi_home.html | sort -u > /tmp/robotaxi_chunks.txt
cat /tmp/robotaxi_chunks.txt
mkdir -p /tmp/robotaxi_js
while read -r u; do
[ -n "$u" ] || continue
f=$(basename "$u")
curl -sS "https://robotaxitracker.com$u" -o "/tmp/robotaxi_js/$f"
done < /tmp/robotaxi_chunks.txt
If you have not scanned all chunks listed in /tmp/robotaxi_chunks.txt, stop and finish that first.
rg -o 'api\.[A-Za-z0-9_.]+' -n /tmp/robotaxi_js/*.js | sort -u
rg -o '[A-Za-z0-9-]+\.convex\.cloud' -n /tmp/robotaxi_js/*.js | sort -u > /tmp/robotaxi_hosts.txt
cat /tmp/robotaxi_hosts.txt
rg -n 'convex\.cloud|ConvexReactClient' /tmp/robotaxi_js/*.js
Look for queries like:
api.queries.serviceAreas.listapi.queries.fleet.getHomepageDataapi.queries.fleet.getRecentlyAddedCountsKnown current host notes:
graceful-eel-151.convex.cloud first. It was verified on 2026-04-10 to return status: success for the public queries above.happy-otter-123.convex.cloud was observed returning 404 Not Found on 2026-04-10. Treat it as stale or invalid unless re-verified.Do not stop after finding one host. Enumerate all candidate hosts first.
Before using any discovered Convex host for real data extraction, probe every candidate host with a known public query.
while read -r host; do
[ -n "$host" ] || continue
echo "=== $host ==="
curl -sS "https://$host/api/query" -H 'Content-Type: application/json' --data '{"path":"queries/serviceAreas:list","args":[{"provider":"waymo"}]}'
echo
done < /tmp/robotaxi_hosts.txt
Selection rules:
/tmp/robotaxi_hosts.txt before choosing one, unless the first verified-success host is graceful-eel-151.convex.cloud.{"status":"success", ...} for the expected public query.404 Not Found, empty output, HTML, or malformed JSON, treat it as invalid and continue to the next candidate host.404, empty output, or wrong-host behavior as an authentication requirement.graceful-eel-151.convex.cloud returns status: success, prefer it immediately.After choosing a host, keep using that same validated host for all subsequent queries in the run.
curl -sS https://<convex-host>/api/query \
-H 'Content-Type: application/json' \
--data '{"path":"queries/serviceAreas:list","args":[{"provider":"waymo"}]}'
Extract rows:
curl -sS https://<convex-host>/api/query \
-H 'Content-Type: application/json' \
--data '{"path":"queries/serviceAreas:list","args":[{"provider":"waymo"}]}' \
| jq -r '.value[] | [.name,.slug,.id] | @tsv'
Repeat for tesla.
Homepage aggregate:
curl -sS https://<convex-host>/api/query \
-H 'Content-Type: application/json' \
--data '{"path":"queries/fleet:getHomepageData","args":[{"provider":"waymo"}]}'
Per city:
curl -sS https://<convex-host>/api/query \
-H 'Content-Type: application/json' \
--data '{"path":"queries/fleet:getHomepageData","args":[{"provider":"waymo","serviceAreaId":"<serviceAreaId>"}]}'
Use .value.totalVehiclesCount for the per-city tracker count unless the user explicitly asks for another field.
Search bundles:
rg -n 'getOfficialFleetCount|getTotalOfficialFleet|officialFleet|official fleet' /tmp/robotaxi_js/*.js
Important:
Always check:
status: success during validationIf totals differ, mention the mismatch only if the user asked for explanation. Otherwise, use the requested metric and keep output compact.
If you cannot produce live data, explain exactly which host was tested, what raw failure happened, and why that failure implies the next step. Never jump directly from a wrong-host response to an authentication conclusion.
If the user asks for a combined comparison table, use:
| 城市 | Waymo数量 | Tesla数量 |
|---|---|---|
| Bay Area | ... | ... |
| Austin | ... | ... |
| 总数量 | ... | ... |
Rules:
0.总数量 as the last row.If the user says:
Then: