seo 0.2.20 → 0.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -70,7 +70,8 @@ through adding your own desktop OAuth client.
70
70
 
71
71
  Research providers are optional and connected separately. Start with the main
72
72
  report, then add DataForSEO when keyword estimates, live results, domain
73
- footprints, ranking pages, or competitor research would change the decision.
73
+ footprints, ranking pages, competitor research, or exact local result context
74
+ would change the decision.
74
75
 
75
76
  That is the normal path. The `seo` command is then available in every terminal,
76
77
  script, CI job, and local MCP client on the machine.
@@ -133,6 +134,8 @@ Use `seo help all` for the longer command list.
133
134
  ranks.
134
135
  - Detect repeated first-party and competitor page patterns, then return bounded
135
136
  data-source research briefs before proposing a new programmatic template.
137
+ - Find location-specific Search Console demand and repeated local page patterns,
138
+ then add a few exact local result snapshots when the decision needs them.
136
139
  - Give scripts and agents deterministic JSON, Markdown, stable rule IDs, and a
137
140
  compact local MCP surface.
138
141
 
@@ -209,6 +212,7 @@ commands:
209
212
  seo reports describe keyword-research --json
210
213
  seo reports describe domain-overview --json
211
214
  seo reports describe competitor-keyword-gap --json
215
+ seo reports describe local-search-demand --json
212
216
 
213
217
  seo reports run domain-overview \
214
218
  --params '{"domain":"example.com","countryCode":"GB","languageCode":"en"}' \
@@ -228,13 +232,21 @@ The research flow now covers:
228
232
  community, or marketplace;
229
233
  - `competitor-keyword-gap` for comparing up to three relevant domains with
230
234
  retained Search Console themes, the site's provider-observed rankings, and
231
- programmatic page patterns.
235
+ programmatic page patterns;
236
+ - `local-search-demand` for matching explicit place names, nearby phrases, and
237
+ postal codes in retained Search Console rows, reviewing repeated local page
238
+ patterns, and optionally adding up to three exact local result snapshots;
239
+ - `link-evidence` for a current link summary, one representative backlink per
240
+ referring domain, and linked-target checks against saved crawl and Search
241
+ Console evidence.
232
242
 
233
243
  Provider traffic, volume, difficulty, intent, visibility, and ranking history
234
244
  are estimates. Search Console remains the evidence for measured search
235
245
  performance on a property you own. A live result snapshot remains the evidence
236
246
  for one query, market, device, and observation time. Reports can combine these
237
247
  sources without blending their meanings or turning a missing row into zero.
248
+ Local query wording does not establish the searcher's physical location, and an
249
+ observed local pack does not establish that a particular listing appeared.
238
250
 
239
251
  Read the [research provider guide](https://seoskill.dev/docs/research-providers)
240
252
  for setup, costs, caching, country-level limits, competitor classification, and
@@ -269,18 +281,35 @@ evidence remain distinct. Bing's `inIndex` crawl statistic is provider
269
281
  evidence, not URL-level proof that a page is indexed. A query or page missing
270
282
  from a weekly top list is unknown, not zero.
271
283
 
272
- Use the same connection to review a bounded set of referring links, or import
273
- an export from another source:
284
+ Review a bounded set of referring links from DataForSEO, Bing or a local
285
+ export:
274
286
 
275
287
  ```sh
288
+ seo links --provider dataforseo --target example.com --json
289
+ seo links --provider dataforseo --target example.com \
290
+ --search-site sc-domain:example.com --json
276
291
  seo links --project example --json
277
292
  seo links --file ./links.csv --row-limit 10000 --json
278
293
  ```
279
294
 
295
+ The DataForSEO path makes two sequential paid requests by default: one summary
296
+ and up to 100 live representative backlinks, one per referring domain. Current
297
+ endpoint prices, estimated and actual cost, task ids, cache state, provider
298
+ filters, row coverage and omitted rows stay in the result. A cached repeat
299
+ does not repeat paid work during the retention window.
300
+
301
+ When a matching saved crawl or Search Console property is available, the same
302
+ report checks linked target pages for observed error responses, redirects,
303
+ canonical conflicts and non-indexable states. Search Console metrics add
304
+ first-party context without turning a missing retained page row into zero.
305
+ Verify the live target and the referring page before changing anything.
306
+
280
307
  CSV and JSONL imports stream from disk. Regular JSON arrays have a smaller
281
308
  file limit to avoid a memory spike. Every result includes the number of rows
282
309
  read, rejected, deduplicated, omitted, or stopped by a limit. It is evidence
283
- from the selected source, not a complete backlink index or an authority score.
310
+ from the selected source, not a complete backlink index. Provider rank and
311
+ spam metrics keep their provider-specific names and scales. They are context,
312
+ not search-engine ranking factors or universal authority scores.
284
313
 
285
314
  ## Create an HTML report for a client
286
315