排名跟踪: 计划的检查已完成,但对于大量结构化关键词子集,它们默默地返回了没有排名的结果(自主托管, v0.1.8)
Rank Tracking: scheduled checks complete but silently return no position for a large, structured subset of keywords (self-hosted, v0.1.8)
Summary
On a self-hosted Cloudflare deployment running v0.1.8, daily scheduled rank checks fire and complete, but roughly two thirds of the tracked keywords come back with no position at all. The blank set is identical on consecutive days and is structured, not random — whole area blocks and whole head terms are blank while their neighbours update normally.
This is not #198. There, the cron never fired. Here the cron fires on time every day and some keywords do update.
The blanks are indistinguishable in the UI from "not ranking in the top 100", so the tracker silently reports keywords as unranked when they are in fact ranking on page 1.
Setup
- Version: v0.1.8 (self-hosted, Cloudflare Workers)
- Tracker: 270 keywords, single domain, mobile only, depth 100 (10 pages)
- Location 2392 (Japan), language Japanese, National targeting
- Schedule: daily
- DataForSEO: own API key, funded
Observed behaviour
Two consecutive runs, both completing:
2026-09-13 04:34:392026-09-14 04:34:39
Some keywords update normally between the two runs (positions moving 15 → 22, 7 → 5, 10 → 9), so the workflow, billing and snapshot writes are healthy for those.
Pattern 1 — an entire area block is blank for every head term
The keyword set is head term × area. One contiguous group of areas returns no position for all ten head terms, on both days (~125 keywords):
丸の内 / 京都 / 兵庫 / 天神 / 新宿 / 新橋 / 東京 / 浜松町 / 神田 / 福岡 / 西宮 / 赤坂
For comparison, within the same run:
keyword | result -- | -- コワーキングスペース 渋谷 | 1 コワーキングスペース 市ヶ谷 | 3 コワーキングスペース 日本橋 | 7 コワーキングスペース 新橋 | (blank) コワーキングスペース 新宿 | (blank) コワーキングスペース 東京 | (blank)
Per day this is 24 (Sep 13) and 23 (Sep 14) errors — far fewer than the ~180 keywords with no position. So most of the missing keywords are not failing loudly; they produce no error at all.
40602 on task_get is "task in queue / not ready". That suggests results are being polled before DataForSEO has them and then abandoned rather than retried, but I have not been able to verify that from outside.
Why this matters beyond the bug
Even setting the root cause aside: a keyword that could not be fetched is displayed exactly like a keyword that genuinely does not rank in the top 100. There is no per-keyword error state, no partial-run warning, and no indication that only a fraction of the tracker was actually checked. A user reading this tracker would reasonably conclude the site lost 180 rankings overnight.
Requests
- Distinguish
内容来源: every-app/open-seo