{
  "project_id": "oneblade",
  "project_type": "keyword_product_market",
  "title": "OneBlade 主机/替换刀头/配件多国销售情报",
  "run_id": "20260526_143850",
  "generated_at": "2026-05-26T06:39:58.282Z",
  "data_source": [
    "SellerSprite"
  ],
  "source_query": {
    "module": "product_research",
    "search_mode": "hybrid",
    "scope": "replacement/accessory use localized replacement phrase terms; device uses broad oneblade fuzzy cache backfill",
    "keywords_by_market": {
      "US": [
        "oneblade replacement,one blade replacement"
      ],
      "UK": [
        "oneblade replacement,one blade replacement"
      ],
      "DE": [
        "oneblade ersatzklingen,one blade ersatzklingen,oneblade ersatzklinge,one blade ersatzklinge"
      ],
      "FR": [
        "oneblade rechange,one blade rechange"
      ],
      "IT": [
        "oneblade ricambio,one blade ricambio"
      ],
      "ES": [
        "oneblade repuesto,one blade repuesto,oneblade recambio,one blade recambio"
      ],
      "CA": [
        "oneblade replacement,one blade replacement"
      ],
      "IN": [
        "oneblade replaceable,one blade replaceable,oneblade replacable,one blade replacable,oneblade replacement,one blade replacement"
      ],
      "MX": [
        "oneblade repuesto,one blade repuesto,oneblade recambio,one blade recambio"
      ]
    }
  },
  "classification_audit": {
    "enabled": true,
    "path": "output/oneblade_classification_audit_20260526",
    "min_confidence": "medium",
    "files": 9,
    "baseline_files": 9,
    "baseline_row_count": 5246,
    "applied_asin_count": 5246,
    "skipped_candidate_count": 16,
    "conflict_count": 1562,
    "by_market": {
      "CA": 343,
      "DE": 613,
      "ES": 426,
      "FR": 419,
      "IN": 108,
      "IT": 489,
      "MX": 54,
      "UK": 803,
      "US": 1991
    },
    "by_confidence": {
      "audit_baseline": 3684,
      "high": 1304,
      "medium": 258
    },
    "by_category": {
      "accessory": 1773,
      "device": 95,
      "replacement_blade": 2228,
      "unrelated": 1150
    },
    "applied_month_row_count": 10806
  },
  "device_backfill": {
    "enabled": true,
    "cache_dir": "output/sprite_oneblade_fuzzy_cache_202201_202604",
    "month_row_count": 20804,
    "note": "Device rows are backfilled from broad oneblade fuzzy cache; replacement blades and accessories still use localized replacement phrase data."
  },
  "marketplaces": [
    "US",
    "UK",
    "DE",
    "FR",
    "IT",
    "ES",
    "CA",
    "IN",
    "MX"
  ],
  "excluded_marketplaces": [
    {
      "market": "JP",
      "reason": "本轮按用户要求移除。"
    }
  ],
  "date_range": {
    "start": "2022-01",
    "end": "2026-04"
  },
  "reports": [
    {
      "role": "main_report",
      "path": "report.html"
    },
    {
      "role": "claude_research_report",
      "path": "research.html"
    },
    {
      "role": "non_amazon_channel_report",
      "path": "non_amazon_report.html"
    },
    {
      "role": "storage_case_report",
      "path": "storage_case_report.html"
    }
  ],
  "datasets": [
    {
      "role": "market_summary",
      "path": "country_summary.csv",
      "format": "csv",
      "grain": "market"
    },
    {
      "role": "category_summary",
      "path": "type_summary.csv",
      "format": "csv",
      "grain": "market + semantic_category"
    },
    {
      "role": "brand_summary",
      "path": "brand_summary.csv",
      "format": "csv",
      "grain": "market + semantic_category + brand"
    },
    {
      "role": "product_detail",
      "path": "products.csv",
      "format": "csv",
      "grain": "market + asin"
    },
    {
      "role": "monthly_timeseries",
      "path": "monthly.csv.gz",
      "format": "csv.gz",
      "grain": "market + asin + month"
    },
    {
      "role": "raw_monthly_snapshot",
      "path": "monthly_raw.csv.gz",
      "format": "csv.gz",
      "grain": "market + asin + requested_month"
    },
    {
      "role": "fetch_quality",
      "path": "fetch_log.csv",
      "format": "csv",
      "grain": "market + month"
    },
    {
      "role": "raw_export",
      "path": "raw.json.gz",
      "format": "json.gz",
      "grain": "full_export"
    },
    {
      "role": "report_payload",
      "path": "report_payload.js",
      "format": "javascript",
      "grain": "browser_payload"
    },
    {
      "role": "non_amazon_channel_matrix",
      "path": "non_amazon_channel_matrix.csv",
      "format": "csv",
      "grain": "platform + region"
    },
    {
      "role": "non_amazon_search_plan",
      "path": "non_amazon_search_plan.csv",
      "format": "csv",
      "grain": "region + platform"
    },
    {
      "role": "non_amazon_analytics_tools",
      "path": "non_amazon_analytics_tools.csv",
      "format": "csv",
      "grain": "platform + tool"
    },
    {
      "role": "non_amazon_browser_validation",
      "path": "non_amazon_browser_validation.csv",
      "format": "csv",
      "grain": "platform"
    },
    {
      "role": "non_amazon_source_log",
      "path": "non_amazon_source_log.csv",
      "format": "csv",
      "grain": "source"
    },
    {
      "role": "non_amazon_source_log_json",
      "path": "non_amazon_source_log.json",
      "format": "json",
      "grain": "source"
    },
    {
      "role": "storage_case_products",
      "path": "storage_case_products.csv",
      "format": "csv",
      "grain": "market + asin"
    },
    {
      "role": "storage_case_monthly",
      "path": "storage_case_monthly.csv.gz",
      "format": "csv.gz",
      "grain": "market + parent_group + month"
    },
    {
      "role": "storage_case_subtype_summary",
      "path": "storage_case_subtype_summary.csv",
      "format": "csv",
      "grain": "storage_case_subtype"
    },
    {
      "role": "storage_case_market_summary",
      "path": "storage_case_market_summary.csv",
      "format": "csv",
      "grain": "market + storage_case_subtype"
    },
    {
      "role": "storage_case_brand_summary",
      "path": "storage_case_brand_summary.csv",
      "format": "csv",
      "grain": "brand + storage_case_subtype"
    },
    {
      "role": "storage_case_voc",
      "path": "storage_case_voc.csv",
      "format": "csv",
      "grain": "pain_topic"
    },
    {
      "role": "storage_case_design_matrix",
      "path": "storage_case_design_matrix.csv",
      "format": "csv",
      "grain": "case_group"
    },
    {
      "role": "storage_case_cross_category_benchmark",
      "path": "storage_case_cross_category_benchmark.csv",
      "format": "csv",
      "grain": "benchmark_query + asin"
    },
    {
      "role": "storage_case_keyword_opportunities",
      "path": "storage_case_keyword_opportunities.csv",
      "format": "csv",
      "grain": "market + query"
    },
    {
      "role": "storage_case_yinke_timeline",
      "path": "storage_case_yinke_timeline.csv",
      "format": "csv",
      "grain": "month"
    },
    {
      "role": "storage_case_visual_exclusions",
      "path": "storage_case_visual_exclusions.csv",
      "format": "csv",
      "grain": "market + asin"
    },
    {
      "role": "storage_case_full_cycle_combo_visual_audit",
      "path": "storage_case_full_cycle_combo_visual_audit.csv",
      "format": "csv",
      "grain": "market + parent_group"
    },
    {
      "role": "storage_case_full_cycle_combo_summary",
      "path": "storage_case_full_cycle_combo_summary.csv",
      "format": "csv",
      "grain": "visual_combo_type"
    },
    {
      "role": "storage_case_source_log",
      "path": "storage_case_source_log.csv",
      "format": "csv",
      "grain": "source"
    },
    {
      "role": "storage_case_source_log_json",
      "path": "storage_case_source_log.json",
      "format": "json",
      "grain": "source"
    }
  ],
  "quality": {
    "status": "partial",
    "status_counts": {
      "cached": 860,
      "month_mismatch": 38,
      "partial_month_mismatch": 38
    },
    "by_market_status": {
      "US": {
        "cached": 104
      },
      "UK": {
        "cached": 104
      },
      "DE": {
        "cached": 104
      },
      "FR": {
        "cached": 104
      },
      "IT": {
        "cached": 104
      },
      "ES": {
        "cached": 104
      },
      "CA": {
        "cached": 104
      },
      "IN": {
        "month_mismatch": 2,
        "cached": 100,
        "partial_month_mismatch": 2
      },
      "MX": {
        "month_mismatch": 36,
        "cached": 32,
        "partial_month_mismatch": 36
      }
    },
    "product_rows": 6913,
    "notes": [
      "SellerSprite 销量和销售额为估算值，不是财务真实 GMV。",
      "本版为混合口径：刀头/配件使用本地 replacement 语义词组匹配，主机使用 broad oneblade 宽口径缓存回补。",
      "九国分类审查输入作为基线分类，候选修正表覆盖需要改类的 ASIN。",
      "汇总口径按 parent_asin 父体组去重；ASIN 明细保留子体。",
      "销售额按固定汇率折算 USD。",
      "MX 2022-01 到 2024-12、IN 2022-01 到 2022-02 的 replacement 词组旧月份 month_mismatch 已从该部分汇总剔除；主机回补来自 broad oneblade 缓存。"
    ]
  },
  "pages": {
    "latest_url": "https://sprite-oneblade-report.pages.dev/"
  },
  "non_amazon_channel_research": {
    "run_id": "20260526_233355",
    "status": "v1_market_landscape",
    "relationship_to_amazon_module": "Parallel module inside the OneBlade project; does not modify SellerSprite Amazon estimates.",
    "scope": "OneBlade-related products on non-Amazon marketplaces: devices, replacement blades, compatible blades, accessories and unrelated SEO matches.",
    "recommended_first_batch": [
      "Mercado Libre",
      "eBay",
      "Shopee",
      "Lazada",
      "Ozon",
      "Wildberries"
    ],
    "known_limits": [
      "This is a channel/data-access landscape, not yet a platform-level sales scrape.",
      "Temu and Alibaba.com are not reliable B2C product-level GMV sources.",
      "Future collectors must keep platform-specific metric_type labels."
    ]
  },
  "storage_case_research": {
    "run_id": "20260530_183054",
    "status": "v1_existing_history_plus_optional_current_snapshot",
    "scope": "OneBlade accessory subcategory: storage/travel cases, case+combs/guards/caps, case+blade language, case+nose/ear attachments, case+charger/cable.",
    "source": "Derived from projects/oneblade/latest/products.csv and monthly.csv.gz; optional SellerSprite current product-research enrichment.",
    "known_limits": [
      "Historical totals are from the existing OneBlade Amazon snapshot, not a new full monthly SellerSprite re-crawl for every storage keyword.",
      "VOC rows are collection tasks unless review text is fetched in a later pass.",
      "Cross-category benchmark is current snapshot if fetched; otherwise planned query matrix.",
      "Storage-case candidates are filtered by main-image visual audit; excluded rows are listed in storage_case_visual_exclusions.csv."
    ]
  }
}
