pp-producthunt について
pp-producthunt は Printing Press CLI で Product Hunt の投稿を閲覧・分析する読み取り専用スキルです。ローンチ追跡やカテゴリ調査を行う創業者やマーケター向けで、ローカル優先のクエリにも対応します。
主な機能
- 01ローンチの推移とベンチマーク
- 02投稿比較と質問コメントの抽出
- 03トピック概要とローンチカレンダー
- 04ブランド言及と類似投稿の検索
- 05SQLite への同期とローカル検索
活用シーン
- 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 - このスキルを実行するエージェント/ランタイムの
$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 を使用する場面
エージェントやスクリプトで Product Hunt のデータ(毎日のローンチランキング、トピック別の調査、コメントを含む個々のローンチの詳細、PH の UI では確認できない集計済みの推移)が必要な場合に、この CLI を選んでください。ローカルの SQLite ストアと GraphQL へのフォールスルーにより、クエリを繰り返してもコストを抑えられます。認証不要のフィード階層があるため、ユーザーがキーを設定する前から CLI を活用できます。今週ローンチする個人開発者はローンチ当日のダッシュボード(launch-day、benchmark、trajectory、questions、compare)を、競合調査を行うマーケターはマーケター向け調査デスク(category snapshot、posts grep、lookalike、launches calendar)を利用してください。
この CLI を使用しない場面
リモート状態の作成、更新、削除、公開、コメント、アップボート、招待、注文、メッセージ送信、予約、購入、変更が必要なリクエストでは、この CLI を有効にしないでください。この印刷専用 CLI が提供するのは、閲覧、エクスポート、同期、分析のための読み取り専用コマンドです。
独自の機能
この API の他のツールでは利用できない機能です。
創業者向けローンチ当日のダッシュボード
-
posts launch-day— ローンチの投票数の推移を、今日の上位 5 件のローンチと並べて表示します。「トップに追いつけているか」という疑問に答えます。同期によってローカルストアから更新されます。ローンチ当日に、開発者から「トップと比べて自分の状況はどうか」と聞かれたときに使ってください。推移を並べて表示することで、タブを 10 個開く必要がなくなります。
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— ローカルのスナップショットから、単一ローンチの投票数の推移をグラフ化します。ローンチ当日のトラッカーの基礎となるほか、事後の振り返り分析にも単独で役立ちます。過去のローンチや競合を確認するときに使ってください。曲線を見ることで、1 日の終わりの投票数だけでは分からない勢いを把握できます。
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— 2 件以上のローンチを、投票数、コメント数、トピック、タグライン、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— ローンチのスラッグを指定すると、トピックの重複度とタグラインの全文検索ランキングに基づき、類似する過去のローンチを検索します。競合製品群を自動で作成します。競合製品群をすばやく作成したり、自社のポジショニングを計画する際に参考となる過去のローンチを見つけたりするのにご活用ください。
producthunt posts lookalike notion --json --select edges.node.name,edges.node.tagline -
launches calendar— 1週間の各日にローンチされた製品を、前週までの情報とあわせて表示します。また、時間帯ごとの分布も確認できます。創業者が効果的なローンチ枠を選ぶのに役立ちます。ローンチをスケジュールする前に、自社のトピックで競争の少ない日や時間帯を探すのにご活用ください。
producthunt launches calendar --topic artificial-intelligence --week 18 --json
ペルソナ横断のモニタリング
-
topics watch— 前回の同期以降に、トピック内で投票数がしきい値を超えた新しい投稿を検出します。API にない購読機能をオフラインで実現します。cron に設定して、GraphQL エンドポイントに過剰なリクエストを送ることなく、特定の分野で注目すべき新しいローンチを通知できます。
producthunt topics watch artificial-intelligence --min-votes 200 --json
エージェント向けの連携機能
-
posts since— ローカルファーストの期間指定クエリです。posts since 2h、posts since 24hのように使えます。指定期間が最後の同期日時を過ぎている場合は、ライブの GraphQL に切り替わります。「Product Hunt の最新情報は?」と尋ねるエージェント型のフローでご活用ください。ローカルファーストの動作によりトークンコストを抑え、ライブデータへの切り替えによって最新情報を確実に取得できます。
producthunt posts since 6h --json --select edges.node.name,edges.node.votesCount -
context— 指定期間の上位投稿、上位コメント、トピックのフォロワー、閲覧者のステータスをまとめた単一の JSON データを返します。エージェントに対し、「このトピックの現在の状況は?」という質問に1回の呼び出しで回答できます。エージェント型の Product Hunt ワークフローで最初に呼び出す機能としてご活用ください。1つのスナップショットで、「投稿を一覧表示し、次にコメントを一覧表示し、最後に閲覧者を確認する」手順を置き換えられます。
producthunt context --topic artificial-intelligence --since 24h --json
コマンドリファレンス
feed — Product Hunt の注目ローンチを配信する公開 Atom フィード(認証不要)
producthunt-pp-cli feed— 最近注目されたローンチの公開 Atom フィードを取得します。トークンは不要です
手書きのコマンド
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)。該当しない場合はライブ API にフォールバックしますproducthunt-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— 認証済みユーザーを表示します(完全なデータ。残りの complexity-budget と認証モードを報告します)producthunt-pp-cli category— カテゴリ単位のスナップショットとトレンドを確認するマーケター向け調査デスクproducthunt-pp-cli category snapshot— 指定期間のトピックについて、スライド資料にそのまま使える概要を表示します:ランキング、勢いの変化、アクティブなハンドル名、新たなタグproducthunt-pp-cli launches— ローンチ枠の選定に向けたカレンダーとタイミングの分析producthunt-pp-cli launches calendar— 週内の各日にローンチされた内容と、時間帯ごとの分布を表示しますproducthunt-pp-cli context— 投稿上位、コメント上位、トピックの状態、閲覧者を 1 つの 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 ストアに対して読み取り専用 SQL を実行しますproducthunt-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 は 1 件以上一致したことを示し、終了コード 2 は確信を持てる一致がなかったことを示します。その場合は --help を参照するか、より具体的な問い合わせを使用してください。
レシピ
自分のローンチ向けローンチ当日のコックピット
producthunt posts launch-day my-launch-slug --json
ローンチの投票数の推移を、本日のトップ 5 と並べて表示します。ウェブサイトを更新せずに「リーダーに追いついているか」を確認できます。
ローンチのコメントから本物の質問を選別する
producthunt posts questions my-launch-slug --json
同期したコメントから、本物の質問らしいもの(正規表現 \\? と疑問文で使われる動詞を使用)だけを絞り込み、投票数順に並べます。返信すべき 5 件を見つけるために 200 件のコメントをスクロールする手間を省けます。
--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
投稿一覧のレスポンスは深くネストされています(edges -> node -> user)。--agent とドット区切りの --select パスを組み合わせることで、エージェントに必要な列だけを出力し、トークンコストを大幅に削減できます。
マーケティング向け週次カテゴリー概要
producthunt category snapshot --topic developer-tools --window weekly --json
出力 1 つで完結する概要です。今週のリーダーボード、前週比の勢いの変化、最も活発な投稿者のハンドル名、新たに注目されているタグラインのタグをまとめます。スライド資料にそのまま使えます。
ブランド名の言及を監視する
producthunt posts grep --term "\\bclaude\\b|\\banthropic\\b" --since 7d --json
指定期間内に、タグラインまたは説明文に claude か anthropic を含むローンチをすべて見つけます。競合の動向を把握できるよう、毎晩実行するように設定してください。
認証の設定
Product Hunt の GraphQL API は 2 つの認証方式に対応しており、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 を返します)。公開 Atom フィード(producthunt feed)はトークンなしで利用できます。
producthunt-pp-cli doctor を実行して、設定を確認してください。
エージェントモード
任意のコマンドに --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 を解析してください。人が読める N results (live) の概要は、stdout がターミナルの場合にのみ stderr に出力されます。パイプまたはエージェントから利用する場合、stdout には純粋な JSON が出力されます。
エージェントからのフィードバック
この 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 されることはありません。デフォルトではローカルにのみ保存されます。
バグ報告ではなく、意外に感じたことを書いてください。短く、具体的に、1 行で書きます。それが積み重なっていきます。
出力の送信先
すべてのコマンドで --deliver <sink> を指定できます。出力は標準出力に加えて(または標準出力の代わりに)指定した送信先に送られるため、エージェントはコマンド結果をパイプで直接渡さずにルーティングできます。対応している送信先は 3 つです。
| 送信先 | 動作 |
|---|---|
stdout | デフォルト。標準出力にのみ書き込みます |
file:<path> | 出力を <path> にアトミックに書き込みます(tmp + rename) |
webhook:<url> | 出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson) |
不明なスキームは、対応している送信先を示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の終了コードが返され、URL と HTTP ステータスが標準エラーに記録されます。
名前付きプロファイル
プロファイルは、呼び出しごとに再利用できるフラグ値のセットです。スケジュールされたエージェントが毎回同じ設定で同じコマンドを呼び出す場合に使用します。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 に一覧表示するため、情報を調べるエージェントは実行時にそれらを見つけられます。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用方法エラー(引数が正しくありません) |
| 3 | リソースが見つかりません |
| 4 | 認証が必要です |
| 5 | API エラー(上流の問題) |
| 7 | レート制限中(待ってから再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します。
- 空、
help、または--help→producthunt-pp-cli --helpの出力を表示します installで始まる場合 →mcpで終わる場合は MCP をインストールします。それ以外の場合は上記の前提条件を参照してください- その他の場合 → 直接使用(CLI コマンドとして
--agentを付けて実行します)
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