同事只想筛一下,不想装 Python
采集库在自己机器上,运营想看「上周三某个词的前十条」,最直接的办法是发一个 CSV。发几次就烦了:每次都要导出、发文件、对方还要自己筛选。
Datasette 解决的就是这件事:一条命令把 SQLite 数据库变成可浏览、可筛选、可导出 JSON/CSV 的网站,对方打开浏览器就能查。
一条命令
pip install datasette sqlite-utils
datasette snapshots.db -o –cors
-o 自动开浏览器,–cors 允许前端跨域读取。默认会为每张表生成列表页、单行页和 JSON 接口,不用写后端。
表结构决定体验
Datasette 直接读 SQLite 表,字段设计得好,页面就好用:
CREATE TABLE results (
id INTEGER PRIMARY KEY,
keyword TEXT NOT NULL,
day TEXT NOT NULL,
domain TEXT,
rank INTEGER,
title TEXT,
snippet TEXT,
has_ai INTEGER,
has_paa INTEGER
);
keyword、day、domain 放独立列,Datasette 的分面(facet)才有东西可切;如果把所有信息塞进一个 JSON 字段,页面只能看不能筛。
开启搜索
列表页顶部有搜索框,但默认只能搜单列。要全文搜索标题和摘要,用 sqlite-utils 建 FTS:
sqlite-utils enable-fts snapshots.db results title snippet
之后再进表页,搜索框就能对这两列做全文检索。底层是 SQLite FTS5,索引跟着表自动更新。
分面:让筛选器自动出现
Datasette 的招牌功能是分面:表页侧边自动列出某个字段的取值分布,点一下就筛选。用 metadata 指定:
{
"databases": {
"snapshots": {
"tables": {
"results": {
"facets": ["keyword", "day", "domain"]
}
}
}
}
}
datasette snapshots.db -m metadata.json
三个分面加一个搜索框,运营就能自己完成「某天 + 某词 + 某域名」的组合查询,不用再来找你。
权限:别把库直接公开
Datasette 默认公开可读。内部数据要加一层:
- 用 datasette-auth-passwords 或反向代理做登录
- 只读账户、只暴露需要的表
- 定期归档的库单独部署,不混生产
公开演示可以部署到 Cloud Run 之类的托管环境;内部使用,起在自家内网更省心。
我做错的一版
第一版我把整份 JSON 响应原样存成一列,Datasette 页面能看不能筛,运营点开一条还是满屏大括号。
后来把 keyword、day、domain、rank 拆成独立列,原始 JSON 单独放一列备查。分面和搜索立刻可用,同一个库,体验完全不同。
给别人用的数据,字段要按「怎么筛」来设计,不是按「怎么存」来设计。
现在这个库每周更新一次,运营自己查,我只维护采集和字段。一次网页搜索 1 credit,新账号 500 免费 credits,攒够一个月的样本就够搭起来。
SerpBase 的字段结构见 SerpBase 文档。




