关于 pp-erank
pp-erank 是用于重复开展 eRank Keyword Tool 研究的 CLI 技能,面向 Etsy 卖家及辅助商品刊登决策的 Agent 或脚本。它提供关键词机会评分、刊登差距检查和基于快照的变化追踪。
主要功能
- 01关键词机会评分
- 02关键词列表优化
- 03竞争饱和度检查
- 04刊登标题与标签差距分析
- 05关键词趋势追踪
适用场景
- 01判断 Etsy 关键词是否值得投入
- 02为刊登寻找候选标签
- 03将草拟标题和标签与热门结果比较
- 04追踪竞争随时间的变化
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-erank安装后在 Claude Code 中输入/pp-erank确认已加载。
详细介绍
eRank — Printing Press CLI
前置条件:安装 CLI
此技能由 erank-pp-cli 二进制文件驱动。**调用此技能中的任何命令前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 使用 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,则安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install erank --cli-only - 验证:
erank-pp-cli --version - 确保报告的安装目录位于将调用此技能的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接 Go 安装(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/marketing/erank/cmd/erank-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。在验证成功前,请勿继续执行技能命令。
何时使用此 CLI
如果需要通过 Agent 或脚本进行可重复的 eRank 关键词工具研究,请使用此 CLI。它尤其适合 Etsy 关键词决策、标签提取、热门商品对比,以及跟踪变化。
独特功能
此 API 的其他工具均不具备这些功能。
卖家决策
-
opportunity— 根据 eRank 统计数据、难度、竞争情况和当前热门商品,为关键词的卖家机会评分。当 Agent 需要判断关键词是否值得采用,而不是分别调用原始指标时,请使用此功能。
erank-pp-cli opportunity "dad mug" --source etsy --country USA --agent -
lists optimize— 按薄弱、饱和、重叠和缺失的关键词机会为已保存的关键词列表排序。当 Agent 需要在起草商品刊登内容前整理卖家的研究列表时,请使用此功能。
erank-pp-cli lists optimize "Father's Day mugs" --country USA --agent -
saturation— 综合竞争情况、难度、标签重复使用情况和热门商品密度,标记竞争拥挤的关键词。使用此功能,避免追逐看似热门、但竞争过于激烈而难以切入的关键词。
erank-pp-cli saturation "dad mug" --source etsy --country USA --agent
商品刊登优化
-
listing gaps— 将商品刊登标题草稿和标签与 eRank 热门结果中的短语和标签进行对比。在发布 Etsy 商品刊登内容,或根据关键词证据重写内容前,请使用此功能。
erank-pp-cli listing gaps "dad mug" --title "Funny Dad Coffee Mug" --tags "dad gift,fathers day,mug" --agent -
tags consensus— 找出在热门商品、Etsy 标签数据、相关搜索和近似匹配结果中反复出现的标签。当 Agent 需要基于多个信号,找出有可靠依据的标签候选项时,请使用此功能。
erank-pp-cli tags consensus "dad mug" --source etsy --country USA --min-count 3 --agent
本地历史记录
-
watch drift— 检测已保存快照中关键词竞争情况、难度和热门商品的显著变化。使用此功能监控季节性或竞争格局变化,无需重新阅读完整的 eRank 页面。
erank-pp-cli watch drift "dad mug" --days 30 --threshold 15 --agent
产品研究
-
angles— 从相关搜索、近似匹配结果、标签和当前热门商品中提取产品切入角度。当 Agent 需要结合观测到的需求信号获取产品切入角度创意时,请使用此功能。
erank-pp-cli angles "dad mug" --source etsy --country USA --limit 10 --agent
HTTP 传输
此 CLI 使用兼容 Chrome 的 HTTP 传输访问面向浏览器的端点。正常的 API 调用无需常驻浏览器进程。
发现信号
此 CLI 根据浏览器观察到的流量上下文生成。
- 捕获覆盖范围:233 条网络条目中有 61 个 API 条目
- 协议:rest_json(置信度 75%)
- 认证信号:api_key — query:keyword
- 生成提示:browser_http_transport、requires_protected_client、weak_schema_confidence
- 候选命令构想:create_competition — 根据观察到的 POST /api/keyword-tool/competition 流量推导而来。;create_google_data — 根据观察到的 POST /api/keyword-tool/google-data 流量推导而来。;create_keyword_difficulty — 根据观察到的 POST /api/keyword-tool/keyword-difficulty 流量推导而来。;create_save_history — 根据观察到的 POST /api/keyword-tool/save-history 流量推导而来。;get_user_preferences — 根据观察到的 GET /api/account/user-preferences/{user_preference_id} 流量推导而来。;list_check_paddle_restriction — 根据观察到的 GET /api/check-paddle-restriction 流量推导而来。;list_check_token_validity — 根据观察到的 GET /api/oauth/check-token-validity 流量推导而来。;list_customer — 根据观察到的 GET /dotjs/v1/quests/customer/ 流量推导而来。
- 注意事项:empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。;empty_payload:看似 API 的请求返回了空或 null 载荷;架构置信度较低。
Command Reference
account — Operations on sideBarCollapse
erank-pp-cli account get-user-preferences— GET /api/account/user-preferences/{user_preference_id}erank-pp-cli account list-keyword-tool.near-matches.table.config.columns— GET /api/account/user-preferences/keyword-tool.near-matches.table.config.columnserank-pp-cli account list-kt-keyword-ideas— GET /api/account/user-preferences/kt_keyword_ideaserank-pp-cli account list-member-preferences— GET /api/account/member-preferenceserank-pp-cli account list-search-country— GET /api/account/user-preferences/searchCountryerank-pp-cli account list-side-bar-collapse— GET /api/account/user-preferences/sideBarCollapse
build — Operations on version.json
erank-pp-cli build— GET /build/version.json
check-paddle-restriction — Operations on check-paddle-restriction
erank-pp-cli check-paddle-restriction— GET /api/check-paddle-restriction
intercom — Operations on intercom
erank-pp-cli intercom— GET /api/intercom
keyword-tool — Operations on stats
erank-pp-cli keyword-tool create-competition— POST /api/keyword-tool/competitionerank-pp-cli keyword-tool create-google-data— POST /api/keyword-tool/google-dataerank-pp-cli keyword-tool create-keyword-difficulty— POST /api/keyword-tool/keyword-difficultyerank-pp-cli keyword-tool create-save-history— POST /api/keyword-tool/save-historyerank-pp-cli keyword-tool list-etsy-tags— GET /api/keyword-tool/etsy-tagserank-pp-cli keyword-tool list-near-matches— GET /api/keyword-tool/near-matcheserank-pp-cli keyword-tool list-related-searches— GET /api/keyword-tool/related-searcheserank-pp-cli keyword-tool list-stats— GET /api/keyword-tool/statserank-pp-cli keyword-tool list-top-listings— GET /api/keyword-tool/top-listings
keywordlist — Operations on names
erank-pp-cli keywordlist list-names— GET /api/keywordlist/nameserank-pp-cli keywordlist list-terms— GET /api/keywordlist/terms
member-shops — Operations on member-shops
erank-pp-cli member-shops— GET /api/member-shops
motd-v3 — Operations on keyword-tool
erank-pp-cli motd-v3— GET /api/motd-v3/keyword-tool
oauth — Operations on check-token-validity
erank-pp-cli oauth— GET /api/oauth/check-token-validity
quota — Operations on daily
erank-pp-cli quota— GET /api/quota/daily
refresh-data — Operations on last-refresh
erank-pp-cli refresh-data— GET /api/refresh-data/listings/last-refresh
新鲜度契约
此打印版 CLI 仅为已注册的、由存储支持的读取命令路径提供有限的新鲜度保障。在 --data-source auto 模式下,这些路径会检查 sync_state,并可能在读取本地数据前执行有限刷新。--data-source local 永不刷新。--data-source live 会读取 API,且不会修改本地存储。设置 ERANK_NO_AUTO_REFRESH=1 可跳过新鲜度钩子,而不更改数据源选择。
覆盖的路径:
erank-pp-cli accounterank-pp-cli account geterank-pp-cli account listerank-pp-cli account searcherank-pp-cli account-user-preferences-keyword-tool-near-matches-table-config-columnserank-pp-cli account-user-preferences-keyword-tool-near-matches-table-config-columns geterank-pp-cli account-user-preferences-keyword-tool-near-matches-table-config-columns listerank-pp-cli account-user-preferences-keyword-tool-near-matches-table-config-columns searcherank-pp-cli account-user-preferences-kt-keyword-ideaserank-pp-cli account-user-preferences-kt-keyword-ideas geterank-pp-cli account-user-preferences-kt-keyword-ideas listerank-pp-cli account-user-preferences-kt-keyword-ideas searcherank-pp-cli account-user-preferences-search-countryerank-pp-cli account-user-preferences-search-country geterank-pp-cli account-user-preferences-search-country listerank-pp-cli account-user-preferences-search-country searcherank-pp-cli account-user-preferences-side-bar-collapseerank-pp-cli account-user-preferences-side-bar-collapse geterank-pp-cli account-user-preferences-side-bar-collapse listerank-pp-cli account-user-preferences-side-bar-collapse searcherank-pp-cli builderank-pp-cli build geterank-pp-cli build listerank-pp-cli build searcherank-pp-cli check-paddle-restrictionerank-pp-cli check-paddle-restriction geterank-pp-cli check-paddle-restriction listerank-pp-cli check-paddle-restriction searcherank-pp-cli intercomerank-pp-cli intercom geterank-pp-cli intercom listerank-pp-cli intercom searcherank-pp-cli keywordlisterank-pp-cli keywordlist geterank-pp-cli keywordlist listerank-pp-cli keywordlist searcherank-pp-cli keywordlist-termserank-pp-cli keywordlist-terms geterank-pp-cli keywordlist-terms listerank-pp-cli keywordlist-terms searcherank-pp-cli member-shopserank-pp-cli member-shops geterank-pp-cli member-shops listerank-pp-cli member-shops searcherank-pp-cli motd-v3erank-pp-cli motd-v3 geterank-pp-cli motd-v3 listerank-pp-cli motd-v3 searcherank-pp-cli oautherank-pp-cli oauth geterank-pp-cli oauth listerank-pp-cli oauth searcherank-pp-cli quotaerank-pp-cli quota geterank-pp-cli quota listerank-pp-cli quota searcherank-pp-cli refresh-dataerank-pp-cli refresh-data geterank-pp-cli refresh-data listerank-pp-cli refresh-data search
当 JSON 输出使用生成的来源信息封套时,新鲜度元数据位于 meta.freshness。应将其视为适用于所覆盖命令路径的当前缓存新鲜度,而非完整历史回填或特定于 API 的丰富数据的保证。
查找合适的命令
当你知道要做什么,却不知道该用哪个命令时,可以直接询问 CLI:
erank-pp-cli which "<capability in your own words>"
which 会根据自然语言功能查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出码 0 表示至少找到一个匹配项;退出码 2 表示没有可信的匹配项——此时可改用 --help,或缩小查询范围。
示例
为 Agent 获取紧凑的热门列表
erank-pp-cli keyword-tool list-top-listings --keyword "dad mug" --marketplace etsy --country USA --agent --select title,shop_name,price,tags
仅返回 Agent 进行比较所需的列表字段。
起草前评估细分市场
erank-pp-cli opportunity "dad mug" --source etsy --country USA --agent
将 eRank 关键词和列表信号结合起来,得出是否推进的评分。
查找有依据的标签
erank-pp-cli tags consensus "dad mug" --source etsy --country USA --min-count 3 --agent
从已采集的 eRank 数据中提取反复出现的标签证据。
检查草稿列表差距
erank-pp-cli listing gaps "dad mug" --title "Funny Dad Coffee Mug" --tags "dad gift,fathers day,mug" --agent
将草稿文案与排名靠前的列表证据进行比较。
身份验证设置
此 CLI 使用经过身份验证的 eRank 会员会话。运行生成的身份验证设置流程后,再执行实时命令;捕获的端点需要使用与 eRank 会员工具相同的、兼容浏览器的会话。
运行 erank-pp-cli doctor 验证设置。
Agent 模式
在任何命令后添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。
-
可通过管道传输 — JSON 输出到 stdout,错误输出到 stderr
-
可筛选 —
--select保留部分字段。点分路径可访问嵌套结构;数组会逐个遍历元素。对于输出冗长的 API,这对缩小上下文至关重要:erank-pp-cli account get-user-preferences mock-value --agent --select id,name,status -
可预览 —
--dry-run显示请求,但不发送 -
支持离线 — 有本地 SQLite 存储时,同步和搜索命令可使用该存储
-
非交互式 — 不会提示输入,所有输入都通过标志指定
-
显式重试 — 仅当已存在的创建结果应视为成功时,才使用
--idempotent
响应信封
从本地存储或 API 读取数据的命令会将输出封装在来源信封中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并查看 .meta.source 判断数据来自实时源还是本地源。仅当 stdout 连接到终端,且未设置任何机器格式标志(--json、--csv、--compact、--quiet、--plain、--select)时,才会将人类可读的 N results (live) 摘要打印到 stderr——通过管道传输的消费者、Agent 消费者以及显式指定格式的运行,都会在 stdout 上获得纯 JSON。
Agent 反馈
当你(或 Agent)发现此 CLI 有问题时,请记录下来:
erank-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
erank-pp-cli feedback --stdin < notes.txt
erank-pp-cli feedback list --json --limit 10
条目会保存在本地的 ~/.local/share/erank-pp-cli/feedback.jsonl 中。只有在设置了 ERANK_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 ERANK_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 每次运行时都以相同配置调用同一命令时,可使用配置文件——即 HeyGen 的“Beacon”模式。
erank-pp-cli profile save briefing --json
erank-pp-cli --profile briefing account get-user-preferences mock-value
erank-pp-cli profile list --json
erank-pp-cli profile show briefing
erank-pp-cli profile delete briefing --yes
显式标志始终优先于配置文件值;配置文件值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置文件,以便能进行自省的 Agent 在运行时发现它们。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 触发速率限制(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示erank-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 请参阅上文的先决条件 - 其他任何内容 → 直接使用(作为带有
--agent的 CLI 命令执行)
MCP 服务安装
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/marketing/erank/cmd/erank-pp-mcp@latest - 注册到 Claude Code:
claude mcp add erank-pp-mcp -- erank-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which erank-pp-cli如果未找到,请提供安装选项(参见本技能开头的先决条件)。 - 根据上述独特功能和命令参考,选择最符合用户查询的命令。
- 使用
--agent标志执行:erank-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,请深入查看子命令帮助:
erank-pp-cli <command> --help。