Files
Andrew Yim 87635e4208 fix(skill): absent claim term -> INCONCLUSIVE hint; note surge-tuning (final-review minors #3,#4)
- gsc_signal_delta.py: extract `found` local var; add first branch in verdict_hint
  chain so a term absent from both GSC windows yields INCONCLUSIVE (not ARTIFACT).
  Existing ARTIFACT / CONFIRMED-PARTIAL / PARTIAL branches unchanged (elif chain).
- test_gsc_signal_delta.py: add test_absent_claim_term_inconclusive asserting
  found=False and "INCONCLUSIVE" in verdict_hint for a term in neither fixture.
- code/CLAUDE.md: one-line surge-tuning note — verdict_hint/in_top_movers are
  calibrated for upward claims; for drops, inspect top_decliners directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuT3W81t88QQFaxY2ruWv2
2026-06-26 10:38:14 +09:00

1.2 KiB

seo-signal-validation — code environment notes

Helper: scripts/gsc_signal_delta.py

Deterministic L1/L4 GSC delta. Feed it two saved GSC query exports (recent, prior) as JSON or TSV (columns: query, clicks, impressions, position).

python3 scripts/gsc_signal_delta.py \
  --recent recent.tsv --prior prior.tsv \
  --recent-days 28 --prior-days 30 --claim-term "호텔"

Returns day-normalized site totals, top gainers/decliners, and a verdict_hint (heuristic only — the final verdict is the skill's job, after L2/L3).

Surge-tuning note: verdict_hint and in_top_movers are calibrated for upward "surge" claims (movers ranked by click gain). For a claimed drop, inspect top_decliners directly rather than relying on the hint.

Getting the exports

mcp__dda__gsc_fetch_performance (property pinned per workspace, e.g. JHR sc-domain:josunhotel.com) → save the query-dimension rows to a file → run the script. GSC anonymizes ~43% of query clicks; the disclosed subset ≠ the whole.

Env / access

  • GOOGLE_KG_API_KEY for mcp__ourseo__search_knowledge_graph (L3).
  • GSC/GA4 only exist for first-party properties — third-party entities skip L1.
  • Never crawl/audit Marriott for JHR (sameAs only).