跳到内容
R新词雷达

数据模型

说明

新词雷达以本地 SQLite 为真相源(radar/schema.sql → data/radar.db),再静态导出 HTML。下列为本站实际 schema;文末列出公开扫站实践里常见、但本 MVP 尚未建表的概念表,避免和 aihusk 库表一一对应造成误解。

当前标签与排序

当前标签取 words.latest_tag(由 score.py 写入),并同步追加 word_status_history。首页计数、词卡片、静态页与搜索复用同一标签。空值显示为「未分级」。

词分组依次为:抢先、可跟、观察、已晚、未分级;组内 priority 降序、last_seen 降序。站点列表优先监控站 / 聚合站,再按关联词数与域名排序。

实时行数(生成站点时写入)

表行数
meta3
runs3
words1,126
signals1,126
word_status_history5,458
sites124
word_sites715
domain_availability240
sitemap_slugs614

SQL Schema(本站)

-- 新词雷达 / keyword-radar lean SQLite schema (inspired by aihusk data-model; not a fork)
CREATE TABLE IF NOT EXISTS meta (
    key TEXT PRIMARY KEY NOT NULL,
    value TEXT
);
INSERT INTO meta(key, value) VALUES ('schema_version', '1')
ON CONFLICT(key) DO NOTHING;
INSERT INTO meta(key, value) VALUES ('brand_zh', '新词雷达')
ON CONFLICT(key) DO NOTHING;
INSERT INTO meta(key, value) VALUES ('brand_en', 'keyword-radar')
ON CONFLICT(key) DO NOTHING;

CREATE TABLE IF NOT EXISTS runs (
    run_at TEXT PRIMARY KEY NOT NULL,
    kind TEXT,
    sec REAL,
    net_req INTEGER DEFAULT 0,
    new_words INTEGER DEFAULT 0,
    words_window INTEGER DEFAULT 0,
    steps_json TEXT,
    by_json TEXT
);

CREATE TABLE IF NOT EXISTS words (
    word TEXT PRIMARY KEY NOT NULL,
    slug TEXT UNIQUE,
    cat TEXT,
    kind TEXT,
    first_seen TEXT,
    last_seen TEXT,
    first_src TEXT,
    n_sources INTEGER DEFAULT 0,
    sources_json TEXT,
    detail_json TEXT,
    is_model_word INTEGER DEFAULT 0,
    latest_tag TEXT,
    latest_run TEXT,
    priority REAL DEFAULT 0,
    zh TEXT,
    has_page INTEGER DEFAULT 0
);

CREATE TABLE IF NOT EXISTS signals (
    word TEXT NOT NULL,
    source TEXT NOT NULL,
    seen_at TEXT,
    detail TEXT,
    PRIMARY KEY (word, source)
);

CREATE TABLE IF NOT EXISTS word_status_history (
    word TEXT NOT NULL,
    run_at TEXT NOT NULL,
    tag TEXT,
    hours REAL,
    n_sources INTEGER,
    new_domains INTEGER,
    n_available INTEGER,
    scan_score REAL,
    PRIMARY KEY (word, run_at)
);

CREATE TABLE IF NOT EXISTS sites (
    domain TEXT PRIMARY KEY NOT NULL,
    first_seen TEXT,
    is_watch INTEGER DEFAULT 0,
    is_aggregator INTEGER DEFAULT 0,
    live INTEGER,
    source TEXT,
    has_page INTEGER DEFAULT 0,
    note TEXT
);

CREATE TABLE IF NOT EXISTS word_sites (
    word TEXT NOT NULL,
    domain TEXT NOT NULL,
    relation TEXT NOT NULL,
    first_seen TEXT,
    PRIMARY KEY (word, domain, relation)
);

CREATE TABLE IF NOT EXISTS domain_availability (
    domain TEXT NOT NULL,
    checked_at TEXT NOT NULL,
    status TEXT,
    PRIMARY KEY (domain, checked_at)
);

CREATE TABLE IF NOT EXISTS sitemap_slugs (
    domain TEXT NOT NULL,
    slug TEXT NOT NULL,
    lastmod TEXT,
    first_seen TEXT,
    PRIMARY KEY (domain, slug)
);

CREATE INDEX IF NOT EXISTS words_last_seen ON words(last_seen);
CREATE INDEX IF NOT EXISTS words_priority ON words(priority DESC, word);
CREATE INDEX IF NOT EXISTS words_latest_tag ON words(latest_tag);
CREATE INDEX IF NOT EXISTS signals_seen_at ON signals(seen_at);
CREATE INDEX IF NOT EXISTS history_run_at ON word_status_history(run_at, word);
CREATE INDEX IF NOT EXISTS sites_watch ON sites(is_watch);
CREATE INDEX IF NOT EXISTS word_sites_domain ON word_sites(domain, word);
CREATE INDEX IF NOT EXISTS sitemap_first_seen ON sitemap_slugs(first_seen);

概念表(公开实践常见 / 本站未建或未启用)

下列名称出现在社区方法讨论中,便于对照矩阵「待做 / 需积分」格子;不是本库已有表:

  • matrix_cells / matrix_hits — 矩阵按日快照与命中明细(本站用页面热力即时聚合信号,未落这两张表)
  • scan_scores / gpt_visibility / intitle_history — 更细的 GPT / intitle 探针
  • ct_certs / nrd_files — CT 与新注册域文件
  • semrush_kw / semrush_site — 付费 SEO 辅助指标
  • decisions / credits / xsignals — 人工决策、积分记账、X 查询日志

扩展时优先加表并改 schema_version,不做破坏性迁移。