mcpField
A
anacraft — Google Analytics 4

anacraft — Google Analytics 4

远程服务
anacraft.dev数据与分析14 天前更新

关于 anacraft — Google Analytics 4

anacraft 通过 MCP 服务将助手连接到 Google Analytics 4,并提供命令行报告和测量审计。它适合希望查询流量情况、检查分析数据采集与配置是否正确的网站所有者。

主要功能

  1. 01用自然语言查询 GA4 数据
  2. 02报告流量、页面、来源和国家地区
  3. 03审计跟踪与关键事件配置
  4. 04应用部分 GA4 测量修复
  5. 05导出 JSON 或 Slack 格式报告

适用场景

  1. 01向助手查询网站表现
  2. 02查找分析测量配置中的缺漏
  3. 03定期将报告或审计结果发送到 Slack

MCP 相关

`craft mcp` 命令运行 MCP 服务,将助手连接到选定的 Google Analytics 4 媒体资源。其工具根据该媒体资源的分析数据提供答复。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://app.anacraft.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

⛏ craft

用日常语言询问 GA4。

通过 MCP 服务将助手连接到 Google Analytics 4,这样你就可以询问网站的表现,并从自己的数据中得到答案。位于 anacraft.dev/app 的控制面板会创建媒体资源并提供跟踪代码;CLI 会审计其衡量的数据,方便你修正问题,并以终端控制面板的形式读取数据。

anacraft.dev · 发行版 · 许可证:Apache-2.0 Rust 1.74+

anacraft 控制面板:在终端中显示 GA4 指标的七个面板

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 两者都不需要,因此在付费或配置之前,就能先看看提醒是什么样子。

仪表板

七个面板,均可切换。关闭不关心的面板,其余面板会重新排列以填满终端。

键面板显示内容
1EVENTS每日事件数;将本周期绘制在上一个周期之上,并显示总数及其变化
2RIGHT NOW实时玩家数量,以及生成/离开事件动态
3COUNTRIES在世界地图上绘制流量
4TOP PAGES访问量最高的页面,含浏览量条形图和排名变化
5VITALS用户数、会话数、浏览量、转化数、跳出率、平均会话时长
6TOP COUNTRIES按排名显示国家,并标记等级
7DAILY 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_sourcesGA4 来源 / 媒介组合
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.jsonOAuth 刷新令牌,由 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。

许可证

Apache License 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。