关于 pp-producthunt
pp-producthunt 是通过 Printing Press CLI 查看和分析 Product Hunt 发布内容的只读技能,适用于创始人与营销人员。它提供发布追踪、分类研究和本地优先查询。
主要功能
- 01发布轨迹与基准分析
- 02比较发布并筛选问题评论
- 03主题快照与发布日历
- 04搜索品牌提及及相似发布
- 05同步并查询本地 SQLite
适用场景
- 01对照分类领先项目追踪发布进展
- 02依据历史基准设定投票目标
- 03监测竞争对手与品牌提及
- 04寻找相似发布以辅助定位
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-producthunt安装后在 Claude Code 中输入/pp-producthunt确认已加载。
详细介绍
Product Hunt — Printing Press CLI
前提条件:安装 CLI
此技能依赖 producthunt-pp-cli 二进制文件。**在调用此技能中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 使用 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install producthunt --cli-only - 验证:
producthunt-pp-cli --version - 确保报告的安装目录位于将调用此技能的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装的方式(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/marketing/producthunt/cmd/producthunt-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。在验证成功之前,请勿继续执行技能命令。
何时使用此 CLI
当 Agent 或脚本需要 Product Hunt 数据时,请选择此 CLI,例如每日发布排行榜、主题垂直领域探索、包含评论的单个发布详情,或 PH 自身 UI 从不展示的聚合趋势。借助本地 SQLite 存储和 GraphQL 回退机制,重复查询的成本很低;无需身份验证的动态信息流意味着用户甚至还没配置密钥时,此 CLI 就已派上用场。本周要发布产品的独立创始人可以使用发布日控制台(launch-day、benchmark、trajectory、questions、compare);进行竞品调研的营销人员可以使用营销调研工作台(category snapshot、posts grep、lookalike、launches calendar)。
何时不使用此 CLI
对于需要创建、更新、删除、发布、评论、点赞、邀请、订购、发送消息、预订、购买或更改远程状态的请求,请勿启用此 CLI。这个已发布的 CLI 只提供用于检查、导出、同步和分析的只读命令。
独特功能
这些功能在其他任何用于此 API 的工具中都不可用。
创始人发布日控制台
-
posts launch-day— 并排展示你的发布产品的投票随时间变化的趋势,以及今日排名前 5 的发布产品,帮你解答“我有没有追上领先者”。由同步驱动,从本地存储刷新。在发布日,当产品制作者询问“我的表现和领先者相比如何”时使用——并排趋势图可以替代十个浏览器标签页。
producthunt posts launch-day my-launch-slug --json -
posts benchmark— 根据积累的本地历史数据,报告某个主题中排名前 10 和前 50 的发布产品在第 N 小时时的百分位曲线。帮助创始人判断他们在第 6 小时获得的投票数对于其类别来说是否“不错”。在发布前使用它设定切合实际的目标,或在发布期间判断缓慢起步是该类别的正常情况,还是实际问题。
producthunt posts benchmark --topic artificial-intelligence --hour 6 --json -
posts trajectory— 根据本地快照绘制单个发布产品的投票随时间变化趋势。这是 launch-day-tracker 的基础功能,也适合在发布结束后单独进行回顾分析。回顾过去的发布或竞品时使用——趋势曲线能显示势头,而单一的日终投票数会掩盖这一点。
producthunt posts trajectory my-launch-slug --json -
posts questions— 仅筛选看起来是真正问题的评论(正则表达式?加上“how does”“what's the”“can it”等启发式动词),并按投票数排序。将数百条发布日评论缩减为需要产品制作者回复的评论。在发布日当天或之后使用它,判断哪些评论值得认真回复,哪些只是喝彩或垃圾信息。
producthunt posts questions my-launch-slug --json -
posts compare— 以列对齐的方式比较两个或更多发布产品:投票数、评论数、主题、标语、URL、发布时间差。无需再来回切换浏览器标签页。当创始人要将自己的发布与过往案例进行对比,或营销人员要在相似的竞品发布之间进行综合判断时,使用此功能。
producthunt posts compare cursor-ide windsurf-ide claude-code --json
营销人员研究台
-
category snapshot— 按时间范围生成适合放入幻灯片的主题简报:排行榜 + 与上一时间范围相比的热度变化 + 最活跃的发布者账号 + 新兴标语标签。每周进行类别研究时使用此工具——这份单项输出的简报可以替代手动打开 30 个发布页面。
producthunt category snapshot --topic artificial-intelligence --window weekly --agent --select leaderboard,momentum_delta -
posts grep— 在指定时间范围内搜索发布内容的标语和描述,查找某个词语——可以是你的品牌、竞争对手的品牌或类别关键词。返回匹配的发布内容及匹配片段。可将其用作定期品牌提及监控工具,或查找推介中提及你的类别的竞争产品发布内容。
producthunt posts grep --term "\\bclaude\\b" --since 7d --topic developer-tools --json -
posts lookalike— 给定发布内容的 slug,根据主题重合度和标语 FTS 排名,找出最相似的过往发布内容。自动构建竞品集。可用此工具快速构建竞品集,或在规划自己的定位时查找先例。
producthunt posts lookalike notion --json --select edges.node.name,edges.node.tagline -
launches calendar— 显示一周内每天发布的产品(并列出前几周以供参考),以及按小时划分的分布情况,帮助创始人选择合适的发布时段。安排发布前使用此工具,在你的主题中找出竞争较少的日期或时段。
producthunt launches calendar --topic artificial-intelligence --week 18 --json
跨用户画像监控
-
topics watch— 检测自上次同步以来,主题中投票数达到阈值的新帖子。通过离线方式实现订阅功能,而该 API 本身并不提供此功能。可将此工具设为 cron 任务,以便在某个垂直领域出现值得关注的新产品发布时收到提醒,同时避免频繁调用 GraphQL 端点。
producthunt topics watch artificial-intelligence --min-votes 200 --json
面向 Agent 的基础设施
-
posts since— 以本地数据优先查询指定时间范围:posts since 2h、posts since 24h。如果时间范围超出上次同步时间,则回退到实时 GraphQL 查询。在 Agent 工作流中回答“Product Hunt 上有什么新内容”时,可使用此工具——本地优先的行为有助于降低 token 成本,而回退机制则能确保数据始终新鲜。
producthunt posts since 6h --json --select edges.node.name,edges.node.votesCount -
context— 返回一个 JSON 数据块,包含指定时间范围内的热门帖子、热门评论、主题关注者和你的查看者状态。一次调用即可让 Agent 了解“当前该主题的状态”。在 Product Hunt 的 Agent 工作流中,可将其作为首次调用——一份快照即可替代“列出帖子,再列出评论,然后检查查看者”。
producthunt context --topic artificial-intelligence --since 24h --json
命令参考
feed — Product Hunt 精选发布内容的公开 Atom Feed(无需身份验证)
producthunt-pp-cli feed— 获取近期精选发布内容的公开 Atom Feed;无需 token
手写命令
producthunt-pp-cli posts— 通过 GraphQL 获取、列出和分析 Product Hunt 发布项目producthunt-pp-cli posts get <id-or-slug>— 获取单个发布项目的完整详情(投票数、评论、主题、创作者、媒体)producthunt-pp-cli posts list— 按主题、排序方式、精选标记或发布时间范围筛选并列出发布项目producthunt-pp-cli posts comments <id-or-slug>— 列出发布项目的评论(Product Hunt 会隐藏评论者身份)producthunt-pp-cli posts trajectory <slug>— 根据本地快照绘制发布项目的投票数变化曲线producthunt-pp-cli posts launch-day <my-slug>— 并排呈现你自己的发布项目与今日排名前 5 的发布项目的变化曲线producthunt-pp-cli posts benchmark— 显示某个主题下排名前 10 / 前 50 的发布项目在第 N 小时的投票数百分位曲线producthunt-pp-cli posts compare <slug1> <slug2> [<slug3>...]— 按列对齐比较 N 个发布项目:投票数、评论、主题、标语、URLproducthunt-pp-cli posts questions <slug>— 筛选发布项目的评论,仅保留看起来是真正提问的评论producthunt-pp-cli posts grep— 按关键词搜索已同步发布项目的标语和描述(品牌提及追踪器)producthunt-pp-cli posts lookalike <slug>— 查找同一主题下标语词元相似的过往发布项目(竞品集合)producthunt-pp-cli posts since <duration>— 优先使用本地数据的时间范围查询(例如,posts since 6h);无结果时回退到实时 APIproducthunt-pp-cli comments— 按 ID 获取单条评论producthunt-pp-cli comments get <id>— 按 ID 获取单条评论producthunt-pp-cli collections— 获取并列出 Product Hunt 精选合集producthunt-pp-cli collections get <id-or-slug>— 获取单个合集及其发布项目列表producthunt-pp-cli collections list— 列出合集,可按精选标记或其中包含的发布项目 / 用户筛选producthunt-pp-cli topics— 获取、列出和搜索 Product Hunt 主题(类别)producthunt-pp-cli topics get <id-or-slug>— 获取单个主题(关注者数量、发布项目数量)producthunt-pp-cli topics list— 列出主题,可按最新或热度排序producthunt-pp-cli topics search <query>— 按名称或描述搜索主题producthunt-pp-cli topics watch <slug>— 检测自上次同步以来主题中投票数达到阈值的新发布项目producthunt-pp-cli users— 获取用户资料以及用户的发布 / 投票历史(Product Hunt 会隐藏非本人用户的信息)producthunt-pp-cli users get <id-or-username>— 获取用户资料(只有whoami/ 本人能返回完整数据;非本人用户会返回 [REDACTED])producthunt-pp-cli users posts <username>— 列出用户发布的项目(发布项目数据不会被隐藏;用户身份本身可能会被隐藏)producthunt-pp-cli users voted-posts <username>— 列出用户投过票的项目(隐藏信息的注意事项与 users posts 相同)producthunt-pp-cli whoami— 显示已认证用户(完整数据;报告剩余复杂度预算和认证模式)producthunt-pp-cli category— 营销研究工作台:类别级快照和趋势producthunt-pp-cli category snapshot— 生成适用于幻灯片的主题时间范围简报:排行榜、势头变化、活跃账号、新兴标签producthunt-pp-cli launches— 用于选择发布时段的日历和时间分析producthunt-pp-cli launches calendar— 显示一周内每天发布的项目及按小时分布情况producthunt-pp-cli context— 单次调用获取 Agent 快照:以一个 JSON 对象返回热门发布项目、热门评论、主题状态和查看者信息producthunt-pp-cli today— 今日热门发布项目(posts list --order=RANKING --posted-after=midnight的别名)producthunt-pp-cli recent— 最新发布项目(posts list --order=NEWEST的别名)producthunt-pp-cli search <query>— 对本地同步的发布项目进行全文搜索producthunt-pp-cli sync— 同步本地存储:发布项目、主题、合集、评论(基于游标,可恢复)producthunt-pp-cli sql <query>— 对本地 SQLite 存储执行只读 SQLproducthunt-pp-cli auth— 管理 Product Hunt 身份验证(默认使用开发者令牌,也可使用 OAuth client_credentials)producthunt-pp-cli auth onboard— 交互式向导:引导你创建免费的 OAuth 应用,并预填https://localhost/callback作为...producthunt-pp-cli auth set-token <token>— 显式设置开发者令牌,无需使用引导向导producthunt-pp-cli auth status— 报告当前启用的认证模式及其可访问的数据producthunt-pp-cli doctor— 根据认证阶段提供诊断:告知你是需要完成引导、重新生成令牌,还是等待预算重置
查找合适的命令
知道想做什么,但不知道该用哪个命令时,可以直接询问 CLI:
producthunt-pp-cli which "<capability in your own words>"
which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找到最匹配的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有足够可靠的匹配项,此时请改用 --help 或缩小查询范围。
使用示例
自己的发布日驾驶舱
producthunt posts launch-day my-launch-slug --json
将你的发布投票走势与今日排名前 5 的项目并排呈现,无需刷新网站即可回答“我是否正在追赶领先者”
筛选发布评论中的真实问题
producthunt posts questions my-launch-slug --json
将同步的评论筛选为看起来是真实问题的内容(使用正则表达式 \\? 加上疑问动词),并按投票数排序——无需再滚动浏览 200 条评论,寻找值得回复的 5 条
使用 --agent --select 精简深层嵌套的响应
producthunt posts list --topic artificial-intelligence --posted-after 2026-04-01 --agent --select edges.node.name,edges.node.votesCount,edges.node.user.username
Posts 列表的响应存在深层嵌套(edges -> node -> user);搭配 --agent 和点分隔的 --select 路径,只保留 Agent 所需的列,大幅降低令牌消耗
面向营销的每周分类简报
producthunt category snapshot --topic developer-tools --window weekly --json
单一输出的简报:本周排行榜、与上周相比的势头变化、最活跃的发布者账号,以及新兴标签语——可直接用于幻灯片
品牌提及监控
producthunt posts grep --term "\\bclaude\\b|\\banthropic\\b" --since 7d --json
查找指定时间段内标语或描述中包含 claude 或 anthropic 的所有发布——安排每晚运行,以捕捉竞争动态
身份验证设置
Product Hunt 的 GraphQL API 支持两种身份验证模式;CLI 可处理这两种模式。个人使用建议采用以下方式:访问 https://www.producthunt.com/v2/oauth/applications,创建应用(表单要求填写重定向 URL,但个人令牌流程不会用到它——请设为 https://localhost/callback),然后滚动到应用页面底部,点击 Create Token 生成永不过期的开发者令牌。设置 PRODUCT_HUNT_TOKEN=<your-token>,或运行 producthunt auth onboard 进行交互式设置。对于 CI/自动化,另一种模式是 OAuth client_credentials:从同一应用页面获取 PRODUCT_HUNT_CLIENT_ID 和 PRODUCT_HUNT_CLIENT_SECRET 并进行设置;CLI 会在内部用它们换取访问令牌,并在收到 401 时刷新令牌(注意:在 OAuth client_credentials 模式下,whoami 命令会返回 null,因为 public scope 没有用户上下文)。公开的 Atom 源(producthunt feed)完全不需要令牌。
运行 producthunt-pp-cli doctor 验证设置。
Agent 模式
为任意命令添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。
-
可通过管道传输 — JSON 输出到 stdout,错误输出到 stderr
-
可筛选 —
--select可保留部分字段。点分隔路径可深入嵌套结构;数组会逐元素遍历。对于冗长的 API,这对缩小上下文至关重要:producthunt-pp-cli feed --agent --select id,name,status -
可预览 —
--dry-run会显示请求,但不会发送 -
支持离线使用 — 有本地 SQLite 存储时,同步/搜索命令可以使用该存储
-
非交互式 — 从不显示提示,所有输入都通过标志指定
-
只读 — 请勿使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他会修改数据的请求
响应封装
从本地存储或 API 读取数据的命令,会将输出封装在一个溯源信息中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
从 .results 中解析数据,并查看 .meta.source 以确定数据来自实时数据还是本地数据。只有在 stdout 连接到终端时,才会将便于阅读的 N results (live) 摘要打印到 stderr;通过管道传输的使用方或 Agent 使用方在 stdout 上只会收到纯 JSON。
Agent 反馈
当你(或 Agent)发现这个 CLI 有什么不对劲时,请记录下来:
producthunt-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
producthunt-pp-cli feedback --stdin < notes.txt
producthunt-pp-cli feedback list --json --limit 10
条目会存储在本地的 ~/.producthunt-pp-cli/feedback.jsonl。除非设置了 PRODUCTHUNT_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 PRODUCTHUNT_FEEDBACK_AUTO_SEND=true,否则绝不会发送 POST 请求。默认情况下仅保存在本地。
记录让你感到意外的地方,而不是提交错误报告。简短、具体,写成一行:这才是能不断累积价值的内容。
输出传递
每条命令都接受 --deliver <sink>。除了(或代替)标准输出,输出还会发送到指定的目标,因此 Agent 无需手动管道传输即可路由命令结果。支持三种目标:
| 目标 | 效果 |
|---|---|
stdout | 默认;仅写入标准输出 |
file:<path> | 将输出原子性地写入 <path>(临时文件 + 重命名) |
webhook:<url> | 将输出正文 POST 到 URL(使用 --compact 时为 application/json 或 application/x-ndjson) |
不支持的方案会被拒绝,并返回一条结构化错误,列出支持的方案。Webhook 请求失败时会返回非零状态,并在标准错误中记录 URL 和 HTTP 状态码。
命名配置
配置是保存的一组标志值,可在多次调用中重复使用。当计划任务中的 Agent 每次运行都以相同配置调用同一命令时,可以使用它——这是 HeyGen 的 “Beacon” 模式。
producthunt-pp-cli profile save briefing --json
producthunt-pp-cli --profile briefing feed
producthunt-pp-cli profile list --json
producthunt-pp-cli profile show briefing
producthunt-pp-cli profile delete briefing --yes
显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,方便进行自省的 Agent 在运行时发现它们。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示producthunt-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他任何内容 → 直接使用(作为带
--agent的 CLI 命令执行)
MCP 服务安装
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/marketing/producthunt/cmd/producthunt-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add producthunt-pp-mcp -- producthunt-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which producthunt-pp-cli如果未找到,请提供安装选项(参见本技能顶部的先决条件)。 - 根据“独特功能”和“命令参考”,将用户查询与最合适的命令匹配。
- 使用
--agent标志执行:producthunt-pp-cli <command> [subcommand] [args] --agent - 如果有歧义,请查看子命令帮助:
producthunt-pp-cli <command> --help。