关于 anacraft — Google Analytics 4
anacraft 通过 MCP 服务将助手连接到 Google Analytics 4,并提供命令行报告和测量审计。它适合希望查询流量情况、检查分析数据采集与配置是否正确的网站所有者。
主要功能
- 01用自然语言查询 GA4 数据
- 02报告流量、页面、来源和国家地区
- 03审计跟踪与关键事件配置
- 04应用部分 GA4 测量修复
- 05导出 JSON 或 Slack 格式报告
适用场景
- 01向助手查询网站表现
- 02查找分析测量配置中的缺漏
- 03定期将报告或审计结果发送到 Slack
MCP 相关
`craft mcp` 命令运行 MCP 服务,将助手连接到选定的 Google Analytics 4 媒体资源。其工具根据该媒体资源的分析数据提供答复。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://app.anacraft.dev/mcpclaude mcp add --transport http dev-anacraft-google-analytics-ga4 https://app.anacraft.dev/mcp{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}在 Cursor 中打开{"servers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"serverUrl":"https://app.anacraft.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
⛏ craft
用日常语言询问 GA4。
通过 MCP 服务将助手连接到 Google Analytics 4,这样你就可以询问网站的表现,并从自己的数据中得到答案。位于 anacraft.dev/app 的控制面板会创建媒体资源并提供跟踪代码;CLI 会审计其衡量的数据,方便你修正问题,并以终端控制面板的形式读取数据。
anacraft.dev ·
发行版 ·
craft dash --demo · osaka-jade · 132×52
安装
macOS / Linux
curl -fsSL https://anacraft.dev/install.sh | bash
如果 /usr/local/bin 可写,则安装到该目录;否则安装到 ~/.local/bin——绝不使用 sudo。设置 INSTALL_DIR 可选择其他位置:
curl -fsSL https://anacraft.dev/install.sh | INSTALL_DIR=~/bin bash
从源代码安装
cargo install --git https://github.com/mehfuzh/anacraft
手动安装 — 从 发行版 下载二进制文件并解压,然后将 anacraft 放到你的 PATH 中。
快速开始
不带命令运行 anacraft 会打开控制面板——默认命令是 dash。如果没有保存媒体资源,它会使用合成数据运行,因此你无需登录即可使用。
# The dashboard, on synthetic data — no Google account needed
craft
# Connect your GA4 property
craft login # OAuth sign-in
craft props # list the properties this account can read
craft use 1234567 # save it as the default
# Same bare command, now against your property
craft
还没有媒体资源? 在 anacraft.dev/app 登录,选择 创建新媒体资源,并填写你的网站 URL。它会创建媒体资源及其网站数据流,并提供已填入衡量 ID 的 gtag.js 代码片段,附带复制按钮——无需安装任何东西。将它粘贴到 <head> 中,然后在此处运行 craft use <id>,再运行 craft live,即可查看首次访问数据。控制面板属于 Anacrafter Elite 套餐(每月 $9.99,与 craft mcp 使用同一套餐);在你的 Analytics 账号中创建任何内容之前会先进行付费验证。
如果你提供的域名已有媒体资源,它不会创建任何内容——而是找到该媒体资源并返回其跟踪代码。因此,重复操作是为了再次获取跟踪代码,而不是创建两个媒体资源来分流流量。
更愿意使用终端?craft configure yoursite.com 只需一条命令即可完成相同操作,费用为 $2.99,适用于 Anacrafter 套餐,并会将媒体资源保存为默认项。运行该命令时,Google 会请求你授权其写入 Analytics 账号,而不会在登录时请求;请参阅 docs/oauth-scopes.md。
本地仪表板
craft serve 会在本地运行 anacraft.dev/app 页面——当你想用 CLI 自己的凭据登录,或想针对同一 API 编写脚本时,可以使用它。
craft serve # opens a page: sign in, pick or make the property, copy the tag
craft serve --demo # the whole walkthrough on synthetic data, creating nothing
它只监听 127.0.0.1,不会监听其他地址;它会生成一个 bearer token 并仅打印一次,而且只响应来自自身来源的浏览器请求。此页面是整个 API 的首个调用方,该 API 的完整文档见 anacraft.dev/serve.html——因此,脚本、编辑器扩展或其他服务都能用同样的方式注册标签。它通过相同的两次 Admin API 调用,创建与托管仪表板相同的媒体资源和数据流;它也能像 craft delete --all 一样把媒体资源扔进 Google 的垃圾桶,不过在执行前会要求输入两次 ID。
它属于 Anacrafter Elite plan,craft mcp 也属于该计划,因此一份订阅同时涵盖标签和之后读取数据的助手。任何人都可以启动此命令——你可以在页面上登录,并在需要时订阅。craft serve --demo 会完整演示整个流程,且不会创建任何内容。
单次报告
并非所有内容都需要仪表板。这些命令会打印结果后退出。
craft overview --days 30 # headline metrics, deltas, achievements
craft pages # most-visited pages
craft portals # where traffic arrives from
craft realms # traffic by country
craft live # who is on the site right now
craft demo # render an overview from synthetic data
有两个全局标志:--property <id> 用于查询不同于已保存默认值的媒体资源;--theme <name> 用于使用不同于已保存主题的配色方案进行渲染。
将数据导出到其他地方
overview 接受 --format,因此供人查看的面板报告也可以作为数据从终端输出。
craft overview --format json # one object, one line — for jq or a script
craft overview --format slack # a Block Kit payload, for a webhook
json 的数据结构与 site_status MCP 工具相同:带标签和单位的指标、上一时段的数据、百分比变化、每日用户序列,以及触发的成就。报告中的时间范围使用 API 实际返回的首日和末日,而非在此处计算——GA 会根据媒体资源的时区解析 last 7 days,这不一定与此机器的时区一致。
slack 会将相同的数据包装为区块。两种格式都只打印负载,不输出其他内容,因此每周摘要只需一行 cron 命令:
0 9 * * 1 craft overview --days 7 --format slack \
| curl -sX POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK"
这两种格式都不需要订阅——它们渲染的报告就是 craft overview 已经免费打印的内容。
Claude Desktop
craft mcp --install # write Claude Desktop and Smartloop configs
craft mcp --install --demo # ...pointed at synthetic data instead
craft mcp --uninstall # take it back out again
重启 Claude Desktop,然后询问它网站的运行情况。合并进去的配置块不会影响任何其他服务:
{
"mcpServers": {
"anacraft": { "command": "/usr/local/bin/craft", "args": ["mcp"] }
}
}
需要先运行 craft login 并拥有有效订阅——即使缺少其中任一项,服务仍会启动,其工具会说明缺少哪一项,因此客户端不会将其报告为已断开连接。craft mcp --demo 则会使用合成数据运行,无需这两项。更多内容请见询问助手。
审计
其他命令回答“发生了什么”。craft audit 回答的是更早一步的问题——此媒体资源是否在衡量网站,以及它衡量出的数据是否可信。
craft audit # sixteen checks over the last 28 days
craft audit --fix # ...and apply the ones GA4 can fix itself
craft audit --days 90 # a longer window
craft audit --format json # the findings as one object, for a script
craft audit --format slack # a Block Kit payload, for a webhook
craft audit --demo # a synthetic report — no account, no subscription
它会读取两个 API,因为测量和配置可能分别出错。Data API 会说明 purchase 触发的频率;Admin API 则会说明是否有人曾告诉 GA4,purchase 才是目标。一个媒体资源可能通过前者的检查,却在后者上连续一年不合格而无人察觉;这种组合——有流量进入,却没有任何内容标记为成果——是它最常发现的问题。
检查内容。 五种会导致数据不准确的情况:
-
完全没有记录,说明标签未安装,或网站报告到的并非此媒体资源
-
没有 Web 数据流,因此没有可放到网站上的测量 ID
-
没有任何内容标记为关键事件,或者已配置关键事件但从未触发——GA4 会精确匹配名称,因此
Purchase和purchase是两个事件,只有其中一个会被计入 -
收到
purchase事件但缺少其value,这会使该媒体资源中的所有收入、ARPU 和 ROAS 数值都变为零——包括从中导入转化的任何 Google Ads 帐户 -
增强型衡量的总开关已关闭,因此数据流的自动事件虽已配置并显示为已开启,却没有任何事件被收集 五种会造成数据失真的情况:
-
页面浏览量被重复计数。例如,页面中保留了一个
gtag代码片段,同时 GTM 标签也发送了一次页面浏览量,从这里看来就会是这种情况:跳出率接近于零,每次会话的浏览量翻倍 -
网站把自己列为引荐来源。这意味着一次访问被一个未纳入跨网域配置的域名切成了两段
-
付款或登录页面被记为转化,因为返回时网关将其作为引荐来源,开启了一个新会话
-
某个事件在本时间窗口与前一个窗口之间停止触发,说明某个标签被移除、重命名,或移到了某个已不再运行的项目之后
-
未标记的成果:
sign_up触发了一千次,但 GA4 中没有任何信息表明它是关键事件,因此任何转化报告都不会将其计入 -
衡量功能已启用,却毫无数据:数据流配置为收集滚动、站内搜索、视频或下载数据,但一个月来一个都没有记录。这是唯一一个没有可调整阈值的检查,因为判断标准来自 Google,而不是我们
还有五种情况,值得在阅读其他内容前了解:一个事件有两个名称、GA4 完全无法归因的会话、直接流量占比高到足以表明营销活动没有添加标记、多个网站都向同一个媒体资源报告数据,以及数据流本可以收集但实际上没有收集的衡量数据。
--fix 的作用。 审计发现的大多数问题都在网站上,任何 API 都无法修复——一个没有发送的事件,不会因为更改设置就自动到达。两类发现除外,craft audit --fix 会处理它们:将媒体资源已在记录的成果标记为关键事件,以及启用网站上已有标签支持的衡量功能——滚动、出站点击、视频、下载。站内搜索和表单交互只会报告,不会写入:它们会记录访客输入的内容,因此是否记录取决于隐私政策,而不是分析设置是否正确。执行这两类修复前,会在触发修复的发现下方列出修复内容;两类修复都只会新增设置,也都可以在 GA4 控制台中一键撤销。
修复流程中的任何操作都不会关闭数据收集、降低数据保留期限,或更改网站发送的数据。它需要媒体资源的 Editor 权限;Viewer 权限足以运行审计,但不足以执行修复。
它不会做什么。 它会报告症状并指出常见原因,但不会反过来推断——“跳出率为 1.2%”是 API 给出的数据,而“你有两个 page_view 标签”只是猜测。它无法查看 GTM 容器内部,因此只能发现数据中显现的标签问题,无法发现仅在容器中显现的问题。每项检查也都有最低数据量要求:只有 80 个会话的媒体资源,无法得出有意义的跳出率或直接流量占比,因此这些检查会报告为未运行,而不会对噪声数据作出判断。
退出代码。 媒体资源没有问题时返回 0,存在问题时返回 2,出错时返回 1——使用 --fix 时,刚刚修复的问题不会继续影响退出代码。craft watch 也使用相同约定,因此每周将审计结果发送到 Slack,只需一行 cron 配置:
0 9 * * 1 craft audit --format slack \
| curl -sX POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK"
与 craft watch 不同,即使检查结果正常,也会打印报告:审计是有人主动请求的,而“检查了十六项,没有发现问题”正是他们想要的答案。每份报告下方都会说明运行了多少项检查,因为如果不知道检查了多少种情况,“没有发现问题”就毫无意义。若某项检查无法运行,例如 Admin API 无法读取或媒体资源数据过少,无法作出判断,则会报告为未运行,而不是通过。
craft audit 是 Anacrafter Pro plan 的一部分;craft audit --demo 则不需要该计划,可在连接任何内容之前展示完整的报告样式。
警报
craft watch 会将最近一个完整日期与之前各日的平均值进行比较,并报告偏离常态的变化。无需进行任何配置即可使用:网站自身的历史数据就是阈值。
craft watch # check once, print what moved, exit
craft watch --every 3600 # keep checking, hourly
craft watch --webhook "$HOOK" # POST the alert to a Slack incoming webhook
craft watch --format json # the same finding as one object, for a script
craft watch --demo # synthetic alerts — no account, no subscription
有三种情况会触发警报:指标超过阈值的下降或飙升,以及无数据——某项计数降为零,而基线不为零;在这里看来,这可能是标签被移除或网站宕机。如果某个时间窗口内所有指标都没有数据,只会将其作为一个整体报告一次,而不会将六个指标都报告为无数据。
默认阈值按指标分别设置,因为转化次数在普通的周二可能波动三分之一,而跳出率不会:用户数、会话数和浏览量为 30%,转化次数为 40%,平均会话时长为 25%,跳出率为 20%。基线低于 10 时,计数不会触发警报——如果某网站平均每天有 4 次转化,那么某一天较少的转化就会被算作 25% 的“下降”,但这毫无意义。
可以针对每个属性调整这些设置:
[[property]]
id = "552157097"
[property.watch]
baseline_days = 28 # days the baseline averages over
min_baseline = 10 # a baseline under this never fires a count
users = 25 # % deviation that wakes somebody
conversions = 40
bounce_rate = 15
键可以是 users、sessions、views、conversions、bounce_rate、avg_session,也可以使用 GA4 API 名称。--baseline <days> 可为单次运行覆盖基线窗口。
Slack 中收到的内容。 每条警报都包含指标、当天的值、变化幅度以及用于对比的基线;还会附上一张涵盖整个窗口、截止至报告当天的迷你趋势图,因为“比正常值低 38%”并不能说明数值是整周持续下降,还是昨晚骤然暴跌。如果某个渠道贡献了大部分变化,还会标出该渠道:主要来自自然搜索——96 对比 331(占变化的 79%)。仅适用于计数,并且只有当该渠道占总变化至少 35% 时才会标出——低于这个比例时,变化是全站性的,指出占比最大的部分会让人误以为它是原因。消息中会附上返回 GA4 中该属性的链接,侧边还会显示红色或琥珀色竖条,让人无需读内容就能把警报与频道中的其他消息区分开。
同一天的警报只会发送一次。状态保存在 ~/.anacraft/watch.json 中,并以报告日期为键,因此 --every 3600 只会针对某次下降发送一条消息,而不是 24 条;新的一天则会再次触发报告。只有成功发送后才会记录状态——如果 webhook 无法访问,就没有人收到消息,因此下次检查时会重试。
退出码。 没有触发警报时返回 0,触发警报时返回 2,出错时返回 1。这样,Shell 可以自行决定如何处理:
craft watch --format slack \
|| craft watch --format slack | curl -sX POST -d @- "$SLACK_WEBHOOK"
--format slack 在无警报的日期完全不输出任何内容,这样 cron 任务就不会每小时发送一条空消息。在循环中,--webhook 会自行发送 POST 请求——守护进程无需通过管道接收输入。
--format 用于选择 webhook 接收的格式,因此,指向 Slack 以外服务的 URL 可以收到该服务能够读取的数据:--format json --webhook <url> 会发送 JSON 对象。有两种例外情况。面板没有线缆格式,因此不设置 --format 而传入 webhook 时,会发送 Slack 区块。而 hooks.slack.com URL 无论 --format 设置为何值,都会收到区块,因为 Slack 对纯 JSON 对象的响应是 400 no_text——此时以目标地址为准,这样 craft slack --install 就不会因 --format json 而报错。
安装到 Slack
手动创建 Webhook 需要在开发者控制台中完成六个步骤。craft slack
像 craft login 连接 Google 一样,帮你完成这件事:
craft slack --install # opens Slack; pick the workspace and channel there
craft slack --test # post one message, to check it before an alert needs to
craft slack # say where alerts currently go
craft slack --uninstall # forget the webhook (the app stays installed in Slack)
Slack 自带的安装界面会让你选择工作区和频道,而 incoming-webhook 作用域会在 OAuth 响应中返回 URL,因此无需手动复制。之后,craft watch 就不需要 --webhook 了。
只需一个作用域,并且只选能满足需求的最小权限:允许向你选择的单个频道发消息。而不是 chat:write,后者允许向工作区中的任何位置发消息。
Webhook URL 的获取顺序是:先取 --webhook,再取 ANACRAFT_WEBHOOK,最后取 craft slack --install 保存到 ~/.anacraft/slack.json 的值——有意不从 config.toml 获取。这个文件应该可以安全地提交到点文件仓库,而能向你的 Slack 发消息的 URL 并不安全。
--webhook 仍然适用于 cron、CI,以及无法安装应用的工作区。
Anacrafter 计划包含将 craft watch 输出到终端;将其发送到 Slack 则是 Anacrafter Pro 新增的功能(使用同一命令,加上 --webhook)。
craft watch --demo 两者都不需要,因此在付费或配置之前,就能先看看提醒是什么样子。
仪表板
七个面板,均可切换。关闭不关心的面板,其余面板会重新排列以填满终端。
| 键 | 面板 | 显示内容 |
|---|---|---|
1 | EVENTS | 每日事件数;将本周期绘制在上一个周期之上,并显示总数及其变化 |
2 | RIGHT NOW | 实时玩家数量,以及生成/离开事件动态 |
3 | COUNTRIES | 在世界地图上绘制流量 |
4 | TOP PAGES | 访问量最高的页面,含浏览量条形图和排名变化 |
5 | VITALS | 用户数、会话数、浏览量、转化数、跳出率、平均会话时长 |
6 | TOP COUNTRIES | 按排名显示国家,并标记等级 |
7 | DAILY USERS | 每日用户数;每根条形均标注日期和人数,并将本周期的用户数与前一周期对比 |
控件
| 键 | 操作 |
|---|---|
1–7 | 切换面板——e l m p v g d 执行相同操作 |
0 | 重置面板——按键位顺序开启所有面板,不选中或缩放任何面板。会先询问;按 y 确认 |
| arrows | 选中一个面板——面板会显示粗金色边框 |
shift+arrows | 将选中的面板移到面板布局的其他位置,与相邻面板交换位置 |
z | 放大选中的面板以填满仪表板,再次按下则还原——放大时可用箭头键切换面板 |
tab | 配置了多个属性时,切换到下一个属性 |
shift+D | 忘记屏幕上显示的属性——将其从轮换中移除,但保留在 Google 中 |
t | 切换配色方案并保存 |
b | 简洁模式——显示原版 GA4 名称,而不是主题包名称 |
s | 仅限演示模式——预览 Anacrafter 外观 |
r | 重建——立即强制重新获取数据 |
? / h | 帮助浮层 |
q / Esc | 退出——Esc 会先退出缩放,再取消选中面板,最后才退出 |
配色方案
craft theme # list the palettes with swatches
craft theme tokyo-night # switch and persist
craft --theme github dash # override for one run
osaka-jade(默认)· solarized-dark · tokyo-night · catppuccin · github · solarized-light · catppuccin-latte
矿石术语——钻石、黄金、红石、青金石——会映射到当前选定的配色方案,因此切换主题后,主题包仍会保留。
命令是 craft。安装时也会一并安装 anacraft 作为别名,因此旧脚本和你熟记的用法仍可继续使用。
询问助手
craft mcp 通过 Model Context
Protocol 提供仪表板上的数据,因此 Claude Desktop、Claude Code 或任何 MCP 客户端都能回答“网站运行得怎么样”,无需人工查看 TUI。
craft mcp --install # write Claude Desktop and Smartloop configs
craft mcp --install --demo # use synthetic data in both entries
craft mcp --uninstall # take the server back out of Claude Desktop's config
craft mcp # the server itself; clients spawn this, you rarely do
craft mcp --demo # synthetic data, no Google account, no subscription
配置 Claude Desktop 只需一条命令。对于 Claude Code,使用 claude mcp add anacraft -- craft mcp;其他客户端也使用相同的命令和参数。手动编写配置时,请使用绝对路径——桌面应用不是从 shell 启动的,也不会继承 craft 可用的 PATH。运行 which craft 即可获得要粘贴的路径。
| 工具 | 可回答的问题 |
|---|---|
site_status | 与前一时段相比的关键指标、每日用户数据序列,以及触发的成就 |
audit_site | 网站属性的统计是否正确:对 28 天内的 16 项检查进行评分,并说明每项检查的含义 |
live_visitors | 当前正在访问网站的用户及其所在国家/地区 |
list_pages | 访问量最高的页面 |
list_events | 按次数统计的事件,以及与前一时段相比的每日总数 |
list_referrers | 为网站带来流量的 URL |
list_traffic_sources | GA4 来源 / 媒介组合 |
list_countries | 按国家/地区统计的流量 |
list_properties | 此账号可读取的所有属性 |
search_pages | 路径包含指定子字符串的页面 |
search_events | 名称包含指定子字符串的事件 |
configure_site | 为某个域名创建属性和 Web 数据流,并返回可粘贴的跟踪代码——这是唯一的写入工具 |
每个报告工具都接受可选的 property 参数,若未指定则使用已保存的默认值,因此即使助手不了解你的配置,也能提供答案。每个工具也都有各自的 days 默认值,而不是共用一个默认值,因为问题所需的时间范围本身就是问题的一部分——“我们最近做得怎么样”适合用 7 天的数据回答,而“有什么东西出问题了吗”则不适合,所以 audit_site 默认使用 28 天。唯一的写入工具 configure_site 则接受 domain 参数——它的作用就是创建属性。响应为结构化 JSON,包含带标签的数值,以及对应的属性 ID 和日期范围,而非渲染后的面板。
唯一的写入工具。 configure_site 会为账号尚未跟踪的域名创建属性和 Web 数据流,并返回跟踪代码;它使用已保存的授权,不会打开浏览器。除此之外,此处没有其他操作会启动 OAuth 流程、写入 ~/.anacraft/ 或更改默认属性:login 和 use 仍是仅供人工使用的命令,configure_site 也绝不会设置默认属性(请运行 craft use 来设置)。如果没有保存凭据,工具会提示你运行 craft login,而不是在客户端的子进程中打开浏览器。相同报告会缓存一分钟,避免频繁请求的 Agent 消耗仪表板所需的 GA4 配额。
订阅。 craft mcp 属于 Anacrafter Elite 方案——运行 craft subscribe 可订阅 2.99 美元的入门方案,使用 --plan pro / --plan elite 可订阅更高的两个方案;anacraft.dev/pricing 列出了这些方案的详细信息。它会打开 Stripe,等待付款完成,然后自行写入 supporter = true(以及方案)。仪表板、craft watch 和 MCP 服务会在启动时重新检查并更新该记录。订阅记录与登录时使用的 Google 账号关联,因此在第二台机器上只需运行 craft login——添加 --check 可在不打开浏览器的情况下查询订阅状态。即使没有订阅,也不会导致进程退出:MCP 客户端会将提前退出理解为“服务已断开连接”,这并不能说明该如何修复,因此服务会启动并完成握手,而每次工具调用都会返回能帮你解决问题的提示。未登录时也是如此。craft mcp --demo 不受订阅限制,因此可以先接入并查看服务。
配置
| 文件 | 用途 |
|---|---|
~/.config/anacraft/config.toml | 属性及其设置 |
~/.anacraft/token.json | OAuth 刷新令牌,由 login 写入 |
配置遵循 $XDG_CONFIG_HOME。令牌有意不放在 ~/.config 中——该目录最终会
进入点文件仓库,而刷新令牌不该随之一起提交。首次运行时会迁移 0.4 之前的
~/.anacraft/config.json。
多个属性
craft use <id> 会添加一个属性,而不是替换上一个属性,因此配置会逐渐
累积。在仪表板中,按 tab 可在属性间切换;退出时选中的属性会成为
active,这样仪表板和 CLI 的其余部分对于当前属性的认知就不会
不一致。途中经过其他属性不会产生任何影响;停留在哪个属性上才会提交更改。
如果没有另行指定,所有命令都会读取 active。优先顺序为
--property <id>、ANACRAFT_PROPERTY_ID,然后是 active,因此只要设置了
标志或导出的 ID,它们就会一直优先于 craft use。
active = "397412345"
theme = "osaka-jade" # palette for any property that doesn't name one
[[property]]
id = "397412345"
name = "anacraft.dev"
label = "site" # shown instead of name in the switcher
theme = "catppuccin"
days = 14
refresh = 60
live_refresh = 5
[[property]]
id = "88820011" # everything optional: inherits the defaults
[[property]] 下的每个键都是可选的,未设置时会回退到全局默认值,因此
切换到一个没有保存任何设置的属性时,会使用默认值,而不会继承上一个属性的
窗口设置。命令行标志优先级高于两者。
如果不想将属性保存在磁盘上,可以用 ANACRAFT_PROPERTY_ID 覆盖已保存的属性。
使用自己的 OAuth 客户端
官方构建版本自带 OAuth 客户端,因此无需设置即可使用 craft login。如要
改用自己的客户端,请设置 ANACRAFT_OAUTH_CLIENT_ID 和
ANACRAFT_OAUTH_CLIENT_SECRET,或编写 ~/.anacraft/client.json。两种方式的
优先级都高于内置客户端;注册自己的 Google Cloud 项目还能避免受他人
配额消耗的影响。
设置 GA4
首选方式是使用 anacraft.dev/app:登录后选择
Create a new property,无需打开控制台即可完成属性、数据流和标签的设置。
craft configure <domain> 可在终端中完成相同操作。两者都包含在订阅中——
仪表板包含在 Elite 订阅中,命令包含在 Anacrafter 订阅中;只有付款完成后,
才会在 Analytics 账号中创建任何内容。Google 端其余的设置——访问权限管理、
数据保留、关键事件和 API 启用——都需要在控制台中完成,相关说明见
配置 Analytics。
craft delete <domain|id> 可用于取消设置;单独使用时,它的实际操作没有
听起来那么多:它只会在此处移除该属性,让仪表板不再默认打开该属性,然后
打印控制台链接以及删除该属性所需的两次点击操作。
Analytics 中的内容不会发生变化。
craft delete <domain|id> --all 会替你完成这两次点击。这是唯一会删除
Google 中内容的命令,而且只会处理你指定的属性;必须明确输入该命令——
单独输入 craft delete 永远不会触发删除。它调用的是 Google 自己的软删除
功能,因此该属性会进入 Analytics 账号的回收站,并可在控制台中恢复 35 天;
之后该属性及其数据才会被永久删除。
克隆了仓库并使用 Claude Code?
.claude/skills/anacraft/ 中附带了一个技能,涵盖安装、连接属性、操作
仪表板、配置 craft mcp,以及每条错误消息的实际含义。让 Claude 帮你设置
anacraft,或把失败的命令发给它。
要求
- 一个 Google Analytics 4 属性
- 支持真彩色的终端
- 如果从源代码构建,需要 Rust 1.74+
贡献
cargo run -- dash --demo 可启动一个无需关联 Google 账号的可用仪表板。代码
结构和 CI 要求请参阅 CONTRIBUTING.md。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。