mcpField
P
pp-everbee

pp-everbee

github.com/mvanhorn营销与增长2.1k51 次安装今天更新
代码仓库

关于 pp-everbee

pp-everbee 是面向 Etsy 卖家和研究 Agent 的命令行技能,用于评估商品细分市场及竞争情况。其研究结果附带证据、来源和置信度,并可将保存的快照进行跨期比较。

主要功能

  1. 01基于证据评估指定 Etsy 细分市场
  2. 02扩展并排列子细分市场
  3. 03分析竞争商品与店铺
  4. 04研究标签和商品详情
  5. 05对照保存的基线比较市场变化
  6. 06用 selftest 验证研究结果相关性

适用场景

  1. 01评估是否进入某个 Etsy 细分市场
  2. 02在主题下寻找竞争较少的子市场
  3. 03设计商品前了解竞争情况
  4. 04逐周追踪细分市场变化

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-everbee

安装后在 Claude Code 中输入/pp-everbee确认已加载。

详细介绍

EverBee — Printing Press CLI

前提条件:安装 CLI

此技能依赖 everbee-pp-cli 二进制文件。**调用此技能中的任何命令前,必须确认 CLI 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到 $HOME/.local/bin;在 Windows 上,默认安装到 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install everbee --cli-only
    
  2. 验证:everbee-pp-cli --version
  3. 确保报告的安装目录位于将调用此技能的 Agent/运行时的 $PATH 中。

如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装(需要 Go 1.26.6 或更高版本)。此方式会将程序安装到 $GOPATH/bin(默认为 $HOME/go/bin),因此请改为将该目录添加到 $PATH:

go install github.com/mvanhorn/printing-press-library/library/marketing/everbee/cmd/everbee-pp-cli@latest

如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件所在目录。验证成功前,不要继续执行技能命令。

EverBee 的数据是目前最佳的 Etsy 研究信号,但它的 API 会照常回答你没问的问题:默认推荐结果不论种子是什么,都会返回未排序的填充内容。此 CLI 会查询 EverBee 自带搜索框调用的端点,并为每条返回结果标注相关性评分、证据数量和来源信息。置信度取决于证据覆盖度,因此缺少关键词支持的细分市场不会显得信心十足。使用“research niche”对单个种子给出有依据的结论,使用“research subniches”为一整类细分市场排序,并使用“selftest”在信任批量运行结果前,验证数据路径在语义上是否可靠。

何时使用此 CLI

当 Etsy 卖家或研究 Agent 需要判断是否值得进入某个细分市场,并且需要能够为这一判断提供依据时,请使用此 CLI。它适用于基于种子的关键词和产品研究、为某个主题下的子细分市场排序、评估某个细分市场中现有的竞争对手,以及追踪某个细分市场每周的变化。它尤其适合 Agent 工作流,因为每项结果都附带证据数量、来源信息和真实反映情况的置信度,而且 Agent 可以通过“selftest”验证数据路径在语义上有效,再信任一批结果。

不适用场景

以下情况不要使用此 CLI:

  • 不要使用此 CLI 列出或编辑卖家自己的 Etsy 商品信息——它是只读的 Etsy 市场研究工具,不具备写入 Etsy 的途径。
  • 不要将它用于 EverBee Store(电商/店面产品);那是单独的官方 API,此 CLI 不支持。
  • 不要将它的收入、销量或搜索量数据视为 Etsy 的真实数据——这些是 EverBee 的估算值,应作为研究信号报告。
  • 不要使用未排序的浏览信息流(“products”和“keyword-research list”)回答有关特定细分市场的问题;这些信息流会忽略你的种子。请使用“research niche”或“products search”。

独特能力

这些能力是此 API 的其他工具所不具备的。

注重证据的研究
  • research niche — 根据种子关键词评估 Etsy 利基市场,并了解评分背后的证据,而不只是一个数字。

    当你需要为低竞争度的判断提供依据时,用它代替原始关键词调用:每个结论都会附带证据数量、来源和如实的置信度。

    everbee-pp-cli research niche "dad shirt" --agent
    
  • research subniches — 将父级利基市场扩展为子利基市场,并按可比较的标准化评分排序。

    当任务是“帮我找出 X 中竞争最少的细分领域”,而不是“告诉我 X 的情况”时,就用它。

    everbee-pp-cli research subniches --parent dad --product apparel --exclude-svg-png --agent
    
  • research competitors — 了解某个利基市场的格局:结果数量、中位价格、评论和销量密度、商品上架时长四分位数。

    在开始设计前,回答“我会与哪些人竞争,他们的市场根基有多深”。

    everbee-pp-cli research competitors "dad shirt" --agent
    
  • research tags — 查看某个利基市场中表现出色的商品详情页对哪些标签和标题词达成共识;如果 EverBee 提供趋势数据,还能查看需求是季节性的还是常青的。

    撰写商品详情页前使用:它能提供该利基市场的共识词汇。如果 EverBee 未返回趋势数据(这种情况很常见),季节性结论会标为“未知”,绝不会猜测。

    everbee-pp-cli research tags "dad shirt" --agent
    
可累积的本地状态
  • research drift — 将某个利基市场与已保存的基准进行比较,查看自上次以来实际发生了哪些变化。

    将重复研究转化为趋势,而不是一系列互不相关的截图。

    everbee-pp-cli research drift "dad shirt" --agent
    
  • research listing — 通过 Etsy 商品详情页 URL 或 ID 查询我们实际掌握的信息;如果一无所知,也会明确说明。

    区分“此商品详情页不存在”和“我们目前还没有它的数据”——Agent 绝不能混淆这两种情况。

    everbee-pp-cli research listing 4515173344 --agent
    
原生支持 Agent 的基础能力
  • selftest — 检查研究路径不仅能够访问,还能否实际返回相关数据。

    在任何自动化会话中先运行此命令:它能区分“API 已响应”和“响应内容有意义”。

    everbee-pp-cli selftest --agent
    

命令参考

account — EverBee 账户方案和研究配额

  • everbee-pp-cli account — 显示 EverBee 账户当前的方案、研究配额和用量。

keyword_research — Etsy 关键词研究——搜索量、竞争度、评分、CPC 和趋势

  • everbee-pp-cli keyword-research list — 浏览 EverBee 默认的关键词信息流(即 UI 中搜索前显示的内容)。
  • everbee-pp-cli keyword-research search — 种子关键词搜索。

products — Etsy 商品/商品详情页研究——销量、收入、标签、价格、商品类型和上架时长

  • everbee-pp-cli products — 浏览 EverBee 默认的商品信息流(即 UI 中搜索前显示的内容)。

shops — Etsy 竞争对手店铺研究——收入、销量、商品详情页数量、转化率和评论

  • everbee-pp-cli shops resolve — 将 Etsy 店铺标识解析为其 EverBee 身份(shop_id、店铺确切名称、评分、评论数、创建年份)。
  • everbee-pp-cli shops search — 搜索 EverBee 的 Etsy 店铺数据库。

新鲜度约定

此 CLI 的打印输出仅对已注册的、由存储支持的读取命令路径负责有限范围的新鲜度。在 --data-source auto 模式下,这些路径会检查 sync_state,并可能在读取本地数据前执行有限范围的刷新。--data-source local 不会刷新。--data-source live 会读取 API,且不会修改本地存储。设置 EVERBEE_NO_AUTO_REFRESH=1 可跳过新鲜度钩子,而不改变数据源选择。

涵盖的路径:

  • everbee-pp-cli keyword-research
  • everbee-pp-cli keyword-research list
  • everbee-pp-cli keyword-research search
  • everbee-pp-cli products
  • everbee-pp-cli products search
  • everbee-pp-cli products search
  • everbee-pp-cli shops
  • everbee-pp-cli shops search
  • everbee-pp-cli shops search

当 JSON 输出使用生成的来源信息封装时,新鲜度元数据位于 meta.freshness。请将其视为涵盖命令路径的当前缓存新鲜度,而非完整历史回填或特定 API 增强数据的保证。

查找合适的命令

当你知道想做什么,但不知道该用哪个命令时,可以直接询问 CLI:

everbee-pp-cli which "<capability in your own words>"

which 会根据自然语言能力查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少有一个匹配项;退出代码 2 表示没有可信的匹配项——请改用 --help,或缩小查询范围。

使用示例

为低竞争度结论提供依据
everbee-pp-cli research niche "dad shirt" --agent

返回需求、竞争度、饱和度、价格区间、证据数量和机会评分,并提供每项指标的来源信息,让你可以审计结论,而不是盲目相信。

找出主题中竞争最少的细分领域
everbee-pp-cli research subniches --parent dad --product apparel --exclude-svg-png --limit 20 --agent

使用 EverBee 自有的建议引擎,将父级主题扩展为子细分领域,不遗漏任何内容,只标记产品类型,并对分数进行归一化,使各子项具有实际可比性。

为 Agent 精简冗长的产品载荷
everbee-pp-cli products search --search-term "dad shirt" --agent --select results.title,results.price,results.listing_type,results.cached_est_mo_revenue

每条产品记录包含 68 个字段;--select 可将载荷精简为影响决策的 4 个字段,让 Agent 上下文保持精简。

设计前评估竞争情况
everbee-pp-cli research competitors "dad shirt" --agent

报告结果数量、中位价格、评价和销量密度,以及商品上架时长的四分位数,并同时打印原始记录,方便核对统计数据。

按周追踪细分领域
everbee-pp-cli research drift "dad shirt" --save-baseline --agent

将快照保存到本地存储;稍后再次运行时,会与快照进行差异对比,并报告实际变化,同时在来源信息中提供两次抓取的时间戳。

身份验证设置

EverBee 使用由 Google SSO 签发的会话令牌进行身份验证——没有 API 密钥页面。运行 'everbee-pp-cli auth setup' 查看获取令牌的步骤,然后使用 'everbee-pp-cli auth set-token ' 保存令牌,或直接设置 EVERBEE_ACCESS_TOKEN。令牌会过期;401 表示需要更换令牌,并不代表 CLI 出现故障。你的 EverBee 套餐决定研究用量上限:免费 Hobby 套餐每月仅允许进行 10 次关键词搜索;此 CLI 会将该上限报告为带类型的错误,而非空结果。

运行 everbee-pp-cli doctor 验证设置。

Agent 模式

为任何命令添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。

  • 可通过管道传递 — JSON 输出到 stdout,错误输出到 stderr

  • 可筛选 — --select 保留字段子集。带点路径可深入嵌套结构;数组会逐元素遍历。对于冗长 API,精简上下文至关重要:

    everbee-pp-cli keyword-research list --agent --select results.title,results.price
    
  • 可预览 — --dry-run 会显示请求,但不会发送

  • 便于离线使用 — 有本地 SQLite 存储时,同步和搜索命令可使用该存储

  • 非交互式 — 从不提示输入,每个输入都通过标志传入

  • 只读 — 请勿使用此 CLI 发起创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他会修改数据的请求

响应封套

从本地存储或 API 读取的命令会将输出封装在溯源封套中:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

从 .results 中解析数据,并查看 .meta.source 以确定数据来自实时来源还是本地。只有当 stdout 是终端且未设置机器可读格式标志(--json、--csv、--compact、--quiet、--plain、--select)时,才会仅向 stderr 打印易读的 N results (live) 摘要;通过管道传输的内容、Agent 消费者以及显式指定格式的运行都会在 stdout 输出纯 JSON。

路径和状态

Agent 应将 CLI 的路径解析器视为运行时契约的一部分:

  • 使用 --home <dir> 仅为单次调用指定路径,或设置 EVERBEE_HOME=<dir>,将所有四种路径类型迁移到同一根目录下。

  • 仅在某种路径类型需要单独指定时,才使用对应类型的环境变量:EVERBEE_CONFIG_DIR、EVERBEE_DATA_DIR、EVERBEE_STATE_DIR、EVERBEE_CACHE_DIR。

  • 解析顺序为:对应类型的环境变量、--home、EVERBEE_HOME、XDG(XDG_CONFIG_HOME、XDG_DATA_HOME、XDG_STATE_HOME、XDG_CACHE_HOME),然后是平台默认值。

  • config 存放 config.toml 和配置档等设置。data 存放 credentials.toml、data.db、Cookie 和认证辅助文件。state 存放持久化查询、任务和 teach.log。cache 存放可重新生成的 HTTP/缓存文件。

  • 存储的密钥位于 data 目录下的 credentials.toml 中。为保持兼容性,系统会读取现有旧版 config.toml 中的密钥,并在首次写入认证信息时将其移出 config.toml。

  • 运行 everbee-pp-cli doctor --fail-on warn,查看路径和凭据位置警告。对于需要已解析目录的 Agent,agent-context 会提供 schema v4 的 paths 块。

  • 对于 MCP,请通过 MCP 主机配置传递路径迁移设置。MCP 二进制文件不会继承 CLI 标志:

    {
      "mcpServers": {
        "everbee": {
          "command": "everbee-pp-mcp",
          "env": {
            "EVERBEE_HOME": "/srv/everbee"
          }
        }
      }
    }
    

集群优先级:继承的对应类型环境变量会覆盖该类型显式指定的 --home。使用 EVERBEE_HOME 或对应类型的环境变量作为持久的集群配置手段;--home 仅用于单次调用。取消设置环境变量无法撤销路径迁移;清除 EVERBEE_HOME 前,请手动移动文件,否则 doctor 将无法找到留在原根目录下的凭据。

自动学习

此 CLI 内置了自动捕获式学习循环。CLI 会自行记录:每次调用都会在本地记入日志;标志使用失败后又经修正重试时,会自动推导出一个 flag_alias 候选项;对没有操作手册的查询类别执行 teach 时,会根据会话日志自动合成一个 playbook_candidate。你只需负责判断:先运行 recall,根据显示的候选项采取行动,再用 teach 记录最终答案;观察到更正时,运行 playbook amend。你无需手动记录失败。

第 1 步:执行任何探索前先运行 recall

针对新的用户问题,在运行 list/search/drill 命令前,先运行:

everbee-pp-cli recall "<user's question>" --agent

响应封套:

{
  "query": "...",
  "normalized": "<normalized form>",
  "query_entities": ["..."],
  "found": true | false,
  "match_score": 0.0,
  "results": [
    { "resource_id": "...", "resource_type": "...", "venue": "...",
      "confidence": 2, "entity_match": "exact|partial|unknown",
      "source": "taught|preseed|pattern", "warnings": ["..."] }
  ],
  "mismatches": [ /* only when --debug-mismatches */ ],
  "warnings": [ /* top-level */ ],
  "candidates": [
    { "id": 12, "class": "flag_alias | playbook_candidate",
      "summary": "...", "sightings": 3, "last_seen": "...",
      "rationale": "...",
      "next_action": ["<trial command>", "everbee-pp-cli learnings confirm 12"] }
  ],
  "playbook": {
    "query_family": "...",
    "playbook": {
      "steps": [ { "cmd": "<command with {slot} substitution>", "purpose": "..." } ],
      "entity_slots": ["$ENTITY"],
      "expected_tool_calls": 3
    },
    "slots_resolved": { "$ENTITY": { "token": "<live token>", "canonical": "<canonical>" } },
    "notes": "<workarounds + gotchas for this query family>"
  },
  "notes": "<duplicate surface for non-playbook callers>"
}

空存储短路:如果存储中尚无学习记录、操作手册或候选项(recall 无结果,且 learnings list 和 learnings candidates 都为空),则本次会话剩余时间内跳过 recall,避免为每次查询增加额外开销;教入新内容后,再恢复先运行 recall 的做法。

步骤 2:决策树

按以下顺序读取 candidates、playbook、notes、results[0] 和 warnings:

if Candidates present (warnings include "candidates_present"):
    -> candidates are try-then-confirm, never facts. Follow each candidate's
       two-step next_action verbatim: run the trial command first, then run
       `learnings confirm <id>` only after the trial verified the behavior.
       Reject a wrong candidate with `learnings reject <id>`.
    -> NEVER re-teach something recall surfaced as a candidate; confirm or
       reject that candidate instead of teaching a duplicate.
    -> candidates ride alongside playbooks and resource hits, not instead of
       them; continue with the branches below after acting on them.

if Playbook present:
    -> READ Playbook.notes verbatim FIRST (workarounds + gotchas the CLI surface doesn't expose)
    -> replay Playbook.steps in order, substituting Playbook.slots_resolved entries
       for the entity slot tokens. If a step's slot is unresolved, fall back to
       discovery for that step only.
    -> the Playbook's expected_tool_calls is a budget; if you find yourself running
       materially more, record the divergence via `everbee-pp-cli playbook amend`
       at end-of-session.

elif Notes present (no Playbook):
    -> read Notes verbatim before any discovery step; they carry known gotchas
       for this query family even when no structured choreography exists yet.

elif Found AND Results[0].EntityMatch == "exact" AND Results[0].Confidence >= 2:
    -> skip discovery; fetch live data for Results[*].ResourceID in parallel

elif Found AND Results[0].EntityMatch == "partial":
    -> candidate hint, NOT a hit; read the resource title to validate before trusting

elif (any row in Mismatches[] when --debug-mismatches was passed):
    -> treat as cold start; the stored learning is for a different entity
       (different canonical resolved from query_entities)

else:  // Found == false, no playbook, no notes
    -> cold start; run discovery normally; teach the answer afterward (Step 4).
       If the family has no playbook yet, that teach auto-synthesizes a
       playbook candidate from this session's journal - you do not need to
       record one by hand.

Playbook 和 Notes 与各资源路径相互独立。一次召回响应可以同时包含 Playbook 和一条 Results[] 命中记录——两者都要使用:Playbook 会告诉你要执行哪种流程;资源命中记录则会让特定步骤提前结束。默认跳过 mismatches;只有在调查冷启动意外情况时才传入 --debug-mismatches。

候选项判断详情:learnings confirm <id> 会在将候选项写入之前打印其完整负载——请检查打印的负载是否与已验证的行为一致。learnings reject <id> 会将推导签名标记为已删除,避免同一候选项再次出现。信封中只包含当前值得处理的少数候选项;everbee-pp-cli learnings candidates 会列出所有未处理的候选项。

优雅降级:如果 learnings confirm 是未知命令,说明你使用的是较旧版本的二进制文件——忽略候选项相关说明,继续遵循其余协议。

步骤 3:始终读取 warnings
  • low_confidence:行的 confidence<2。将其视为提示,而不是跳过发现流程的命中记录。
  • resource_not_in_store:本地存储中没有该学习条目指向的资源。匹配验证器无法对实体进行分类——直接获取资源并重新评估。
  • cross_alias_match(每条结果):该行是在另一个别名下教入的,并通过 entity_lookups 与实时查询的规范实体匹配(例如,教入“USA”后,满足“United States”的召回)。信任 resource_id。
  • similar_shape_different_entity:<canonical>(顶层):存在结构匹配的行,但其规范实体与实时查询的不同。按冷启动处理;警告会提供冲突规范实体作为提示,但该行不会提升到 Results 中。
  • ambiguous_alias(顶层):单个查询实体解析到多个规范实体(例如,“Cards” → Arizona Cardinals + St. Louis Cardinals)。在确定资源之前,先根据上下文说明该歧义。
  • candidates_present(顶层):信封中包含 candidates 部分。先通过步骤 2 中的候选项分支处理它,再进行其他操作。
  • lookup_refresh_available(顶层):查询中的某个实体尚无查找行,但同步数据可能会提供一条。运行 everbee-pp-cli sync 以刷新实体查找。
  • 顶层 no_learnings_for_query_family:表中没有达到 Jaccard 下限的行。完全冷启动。
步骤 4:完成回复后始终执行 teach &

教入是无条件的。在解决存储无法回答的查询后,在后台教入最终的资源映射——不设调用次数阈值,也不判断是否“值得”学习。教入是循环的锚点:如果某个类别还没有 Playbook,它会触发 Playbook 综合;指向同一实体的不同表述会合并到一个类别中,避免近乎重复的教入导致存储碎片化。在整理好面向用户的回复后、发出回复前,使用 shell & 执行教入,让调用立即返回:

everbee-pp-cli teach --query "<user's question>" --resource-type <type> --resource <id1> --resource <id2>
# (append shell `&` to background it)

成功时不输出内容。错误只会写入已解析状态目录下的 teach.log。教入最具体的资源——如果用户提出的是宽泛问题,而你通过查阅父级记录找到了具体答案,请教入叶节点 id,而不是父级。CLI 在召回时使用预置的 entity_lookups 进行跨别名解析,因此在一个别名下教入(例如,“Niners”)会自动满足之后使用其他别名(例如,“49ers”、“San Francisco”)的查询。

PII 规则:教入结构性问题时,应去除标识符——教入的查询或备注中绝不能包含姓名、电子邮件、电话号码、账号 id 或其他个人标识符。CLI 会扫描教入查询中明显的电子邮件/电话格式并发出警告,但不会阻止;请在教入前去除这些信息,而不要依赖警告。

步骤 5:playbook - 可选标记、自动合成

你不必判断某个会话是否“值得”编写 playbook:如果某个类别还没有 playbook,使用该类别进行 teach 会根据会话日志自动合成一个 playbook_candidate,并由下一次会话通过确认/拒绝来判断。只有当你已经掌握值得原样记录的操作流程时,才附加明确的 playbook 标记——例如 CLI 未显示的变通方法(被静默丢弃的标记、未记录的参数、分页技巧、负载问题)。优先使用集成式单次调用形式——在同一次 teach 调用中记录资源学习内容和 playbook:

# Common case: record both the resource learning AND the playbook in one call.
everbee-pp-cli teach \
  --query "<user's question>" \
  --resource <id> \
  --playbook-file ~/playbooks/<shape>.json \
  --playbook-notes-file ~/playbooks/<shape>-notes.md
# (append shell `&` to background it)

# Alternate: playbook-only (no resource to record alongside).
everbee-pp-cli teach-playbook \
  --query "<user's question>" \
  --playbook-file ~/playbooks/<shape>.json \
  --notes-file ~/playbooks/<shape>-notes.md

Playbook 文件是包含 steps、entity_slots、expected_tool_calls 的 JSON 文件。Notes 文件是原样记录问题细节的 Markdown 文件。不使用文件的调用方(仅使用 MCP 的 Agent)可直接内联传入相同内容:在集成式 teach 形式中使用 --playbook-json 和 --playbook-notes,在 teach-playbook 中使用 --playbook-json 和 --notes。在集成式 teach 形式中,playbook 标记是可选的——如果只想 teach 资源,可完全省略这些标记。在独立的 teach-playbook 形式中,必须至少设置 playbook 标记和 notes 标记中的一个;两者都为空时会被拒绝。Playbook 以结构化查询类别(去除实体)为键,因此从一种实体形态的查询中学到的操作步骤适用于同一形态的所有其他查询,并在回忆时通过 slots_resolved 绑定当前查询的规范形式。

如果未来回忆时确实找到 playbook,请将其视为事实依据:使用 slots_resolved 替换项重放步骤,跳过操作流程中已有记录的探索,并在执行任何步骤前阅读 notes。

步骤 6:当调试响应指出需要更正时,使用 playbook amend &

如果你的调试协议响应指出 notes 或 playbook 应记录一项具体更正——例如变通方法、未记录的端点结构、过时的字段名称、观察到的架构漂移、空负载回退方案——请在生成面向用户的响应之前触发 playbook amend。与 teach 一样,采用触发后即不等待结果的方式。

everbee-pp-cli playbook amend \
  --query "<exact recall query string>" \
  --add-note "<your concrete correction>"
# (append shell `&` to background it)

哪些内容值得修订:本次会话中你 OBSERVED 到、且未来的你会受益于了解的行为。值得修订的示例:

  • CLI 界面会静默丢弃或调整标记顺序时的变通方法。
  • 未记录的端点结构(响应封装在 {meta, results} 中,负载嵌套层级比文档所述多两层)。
  • 观察到的架构漂移(字段重命名、索引在不同赛季间发生变化、API 现在返回小写的类别标签)。

哪些内容不应写入 notes:

  • 用户问题中与年份或实体相关的答案。这是响应内容,不是学习内容。
  • playbook 已在运行时获取的团队、运动员或行数据。
  • 只是转述现有 notes 内容的陈述。

amend 命令会将内容追加到该类别现有的 notes 中,并附加带时间戳的标记([amend YYYY-MM-DDTHH:MMZ]: <text>)。多次 amend 会累积,且审计记录可见。如果该类别尚无 playbook,amend 会创建一个仅含 notes 的 playbook(因此冷启动时发现的更正也能记录下来)。

amend notes 中的 PII 规范

playbook amend notes 可能会在未来版本的 Printing Press 中作为共享知识向上游传递。请勿在其中包含可识别用户身份的内容,以便保持向上游贡献的渠道畅通,避免之后再进行清理:

  • 请勿嵌入用户文件系统路径、个人 API 密钥或令牌、用户电子邮件地址、用户 GitHub 用户名,或与单个用户关联的特定查询历史记录。
  • 可以包含:端点结构、未记录的字段名称、API 问题、观察到的架构漂移、CLI 界面的变通方法、可泛化的分页或重试策略。

如果某项更正只有结合用户特定的上下文才有意义,就应写入个人笔记,而不是 playbook amend。

衡量闭环成效

everbee-pp-cli learnings stats 会从本地 learn_events 表中报告召回命中率、教学到复用率、操作手册解决率,以及候选项确认/拒绝次数。分母尚未确定时,相关比率为 null;所有数据都保留在本机。使用此命令检查该闭环是否为此 CLI 创造了价值。

禁用学习
  • 在单条命令中使用 --no-learn,即可同时短路 recall 和 teach 写入路径。适用于必须避免受累积学习影响的确定性 Agent 工作流或测试。
  • 在环境中设置 EVERBEE_NO_LEARN=true,即可全局禁用此流程。

Agent 反馈

当你(或 Agent)发现此 CLI 有任何不妥之处时,请记录下来:

everbee-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
everbee-pp-cli feedback --stdin < notes.txt
everbee-pp-cli feedback list --json --limit 10

条目会以 feedback.jsonl 的形式存储在解析后的数据目录中。除非设置了 EVERBEE_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 EVERBEE_FEEDBACK_AUTO_SEND=true,否则绝不会通过 POST 发送。默认情况下,反馈仅保存在本地。

写下让你感到意外的地方,而不是提交错误报告。简短、具体、一行即可:这才是能不断积累价值的部分。

输出交付

每条命令都接受 --deliver <sink>。输出会发送到指定的接收端,且可同时输出到 stdout 或取代 stdout,这样 Agent 无需通过管道手动传递,也能路由命令结果。支持三种接收端:

接收端效果
stdout默认;仅写入 stdout
file:<path>以原子方式将输出写入 <path>(临时文件 + 重命名)
webhook:<url>将输出正文 POST 到该 URL(使用 --compact 时,内容类型为 application/json 或 application/x-ndjson)

不支持的协议会被拒绝,并返回列出受支持协议的结构化错误。Webhook 失败时会返回非零状态码,并在 stderr 中记录 URL 和 HTTP 状态码。

命名配置

配置是保存的一组标志值,可在多次调用间复用。当定时或周期性运行的 Agent 每次输入不同、但使用相同保存标志时,可使用配置。

everbee-pp-cli profile save briefing --json
everbee-pp-cli --profile briefing keyword-research list
everbee-pp-cli profile list --json
everbee-pp-cli profile show briefing
everbee-pp-cli profile delete briefing --yes

显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便执行内省的 Agent 在运行时发现它们。

退出代码

代码含义
0成功
2用法错误(参数错误)
3未找到资源
4需要身份验证
5API 错误(上游问题)
7请求频率受限(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

  1. 为空、help 或 --help → 显示 everbee-pp-cli --help 输出
  2. 以 install 开头 → 以 mcp 结尾 → 安装 MCP;否则 → 参见上方的先决条件
  3. 其他任何内容 → 直接使用(作为 CLI 命令执行,并附带 --agent)

安装 MCP 服务

  1. 安装 MCP 服务:
    go install github.com/mvanhorn/printing-press-library/library/marketing/everbee/cmd/everbee-pp-mcp@latest
    
  2. 在 Claude Code 中注册:
    claude mcp add everbee-pp-mcp -- everbee-pp-mcp
    
  3. 验证:claude mcp list

直接使用

  1. 检查是否已安装:which everbee-pp-cli 如果未找到,则提供安装选项(参见本技能顶部的先决条件)。
  2. 根据上方的独特功能和命令参考,为用户查询匹配最合适的命令。
  3. 使用 --agent 标志执行:
    everbee-pp-cli <command> [subcommand] [args] --agent
    
  4. 如果存在歧义,请查看子命令帮助:everbee-pp-cli <command> --help。

评论

支持 Markdown