pp-gohighlevel について
pp-gohighlevelは、GoHighLevelを使う代理店運営者やブローカー向けのコマンドラインスキルで、複数のサブアカウントを扱えます。ローカルのSQLiteミラーを使った横断SQL、パイプライン分析、連絡先操作、エージェント向け出力が特徴です。
主な機能
- 01読み取り専用SQLで同期済みCRMデータを検索
- 02パイプラインのファネルと停滞案件を分析
- 03重複または非アクティブな連絡先を検出
- 04連絡先タグを一括追加・削除
- 05プロファイルで複数のサブアカウントを切り替え
活用シーン
- 01パイプラインのファネルレポートを作成
- 02ステージに滞留した採用候補者を特定
- 03連絡先の重複整理を事前確認
- 04CSV入力から研修参加者にタグを付与
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-gohighlevelインストール後、Claude Code で/pp-gohighlevelを入力して読み込まれたか確認します。
詳細
GoHighLevel — Printing Press CLI
前提条件:CLI のインストール
このスキルは gohighlevel-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、まずインストールします。
- Printing Press のインストーラーを使ってインストールします。デフォルトでは、バイナリは macOS/Linux では
$HOME/.local/binに、Windows では%LOCALAPPDATA%\Programs\PrintingPress\binにインストールされます。npx -y @mvanhorn/printing-press-library install gohighlevel --cli-only - 次のコマンドで確認します:
gohighlevel-pp-cli --version - 報告されたインストールディレクトリが、このスキルを実行するエージェント/ランタイムの
$PATHに含まれていることを確認します。
npx によるインストールが失敗する場合(Node がない、オフラインなど)は、Go を直接インストールする方法に切り替えてください(Go 1.26.6 以降が必要です)。
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/gohighlevel/cmd/gohighlevel-pp-cli@latest
インストール後に --version が「command not found」と報告する場合、ランタイムからバイナリディレクトリを $PATH 経由で参照できていません。確認が成功するまで、スキルのコマンドを実行しないでください。
この CLI を使用する場面
GoHighLevel を日常の業務システムとして使用し、特に複数のサブアカウントを扱う場合にこの CLI を使用してください。代理店の運営者や仲介業者の責任者向けに構築されており、ターミナルからすばやく連絡先を検索したり、複数のパイプラインにまたがるファネルを表示したり、重複を整理したり、CRM データに対して SQL 形式のクエリを実行したりできます。ローカルの SQLite キャッシュがあるため、一括操作(連絡先 5000 件へのタグ付け)、定期レポート(月曜日の L10 準備)、何十回もの API 呼び出しが必要になりがちなエージェント主導のワークフローに適しています。
独自の機能
この API を扱う他のツールでは、次の機能は利用できません。
蓄積されていくローカル状態
-
opp stale— 同期履歴から合成したステージ進入タイムスタンプを使い、N 日を超えて同じステージにとどまっている商談を見つけます。ユーザーから「このステージに長くとどまりすぎている採用候補者は誰か」と尋ねられた場合、カスタムダッシュボードのスクリプトを再実行せずに答えられる方法はこれだけです。
gohighlevel-pp-cli opp stale --pipeline "Non-KW" --stage "Recruit Lead" --days 30 --json -
opp funnel— パイプラインのステージごとの件数と合計金額を、ダッシュボード用のシートに貼り付けられる TSV 形式で出力します。ユーザーが月曜日の L10 準備に使っているスクリプトをワンライナーで置き換えます。エージェントは異なるパイプラインフィルターを指定して、必要に応じて再実行できます。
gohighlevel-pp-cli opp funnel --pipeline "Non-KW" --tsv -
sql— 連絡先、商談、パイプライン、ステージ、タグ、カスタムフィールド、会話、メッセージ、予約のローカル SQLite ミラーに対して、読み取り専用の SQL を実行します。複数のエンティティを横断できるのが大きな特長です。エージェントが GHL データについて答えたいことはすべて、Python で組み立てたページネーション付き API 呼び出し 3 回の代わりに、1 つの SQL 文で解決できます。
gohighlevel-pp-cli sql "SELECT name, COUNT(*) FROM opportunities GROUP BY pipelineStageId ORDER BY 2 DESC" --json -
contact dedup— 小文字化したメールアドレスと E.164 形式の電話番号で連絡先をグループ化し、入力済みフィールド数と新しさでスコアを付けて、統合計画を出力します。運営者が毎週実行している 200 行の Python スクリプトを置き換えます。エージェントはデータを変更する前に統合内容をプレビューできます。
gohighlevel-pp-cli contact dedup --by email,phone --dry-run --json -
contact decay— N 日間、受信メッセージも送信メッセージもない連絡先が含まれるステージ内の商談を見つけます。採用候補者を失う前に、関心が薄れつつあることを検知します。運営者が使っている既存のアラートスクリプトをワンライナーに置き換え、エージェントはしきい値を変えて再実行できます。
gohighlevel-pp-cli contact decay --stage "Engaged" --idle-days 30 --json -
recruit hot— 実績のシグナル、エンゲージメント、採用タグの数を組み合わせて、採用候補者を順位付けします。Kymber に尋ねられる前に、月曜日の L10 準備に使えます。エージェントは Python パイプライン全体を再実行せずに、しきい値を調整できます。
gohighlevel-pp-cli recruit hot --threshold 25 --tsv -
convo thread— ローカルのメッセージテーブルから、特定の連絡先との SMS、メール、通話の履歴を時系列で再構成します。採用候補者に連絡する前に、運営者は会話全体を一か所で確認したいと考えています。エージェントは MCP を 4 回呼び出さなくても、全履歴を読み取れます。
gohighlevel-pp-cli convo thread --contact [email protected] --json
サービス固有のガードレール
-
field id— 人が読みやすいカスタムフィールド名を不透明な GHL ID に変換し、入力ミスには「もしかして」候補を提示します。field idをsqlと組み合わせると、20 文字の GHL ID をハードコードせずにカスタムフィールドの値で連絡先をクエリできます。フィールド名の変更後に不具合が発生するバグの一種を丸ごとなくせます。gohighlevel-pp-cli field id "Agent Affiliation" -
config use— GHL サブアカウント(KWCP、THINK)ごとに名前付きプロファイルを設定し、すべてのコマンドで --location フラグを適用します。誤ったテナントを使ってしまう危険を防ぎます。セッション開始時にエージェントへ「kwcp プロファイルを使って」と一度伝えるだけで、あとは意識する必要がありません。
gohighlevel-pp-cli config use kwcp && gohighlevel-pp-cli --location think opp funnel --pipeline "Non-KW" -
doctor— PIT トークンを検証し(プレフィックスを自動的に小文字に変換)、アクティブなロケーションに ping を送り、ローカルキャッシュの状態を報告します。何かがおかしいときに最初に実行するコマンドです。複雑なフローの前にエージェントが実行すれば、トークンやキャッシュの問題を早期に特定できます。
gohighlevel-pp-cli doctor --json
エージェント向けの基盤機能
-
contact bulk-tag— stdin から読み込んだ多数の連絡先にタグを追加または削除します。100 件ずつの分割送信と接続切断時の再試行に対応しています。あらゆる代理店にとって、日々の業務で最も効果の高い操作です。研修、キャンペーン、インポートのたびに必要になります。この機能がなければ、担当者は毎回リトライ処理を自分で実装することになります。
cat emails.csv | gohighlevel-pp-cli contact bulk-tag --tag "Attended_2026-05-19" --dry-run
HTTP トランスポート
この CLI は、ブラウザー向けエンドポイントに Chrome 互換の HTTP トランスポートを使用します。通常の API 呼び出しに、常駐するブラウザープロセスは必要ありません。
コマンドリファレンス
calendars — カレンダーを管理します
gohighlevel-pp-cli calendars create— 作成gohighlevel-pp-cli calendars create-appointment— 予定を作成gohighlevel-pp-cli calendars delete-appointment— 予定を削除gohighlevel-pp-cli calendars get— 取得gohighlevel-pp-cli calendars get-appointment— 予定を取得gohighlevel-pp-cli calendars list— 一覧表示gohighlevel-pp-cli calendars list-events— ロケーションのカレンダーイベントを一覧表示gohighlevel-pp-cli calendars update-appointment— 予定を更新
contacts — 連絡先を管理します
gohighlevel-pp-cli contacts bulk-update-tags— 多数の連絡先にタグを一括追加または削除gohighlevel-pp-cli contacts create— 連絡先を作成gohighlevel-pp-cli contacts delete— 連絡先を削除gohighlevel-pp-cli contacts find-duplicate— メールアドレスまたは名前で重複する連絡先を検索gohighlevel-pp-cli contacts get— ID で連絡先を取得gohighlevel-pp-cli contacts search— GHL の /contacts/search には、100 ページの厳格な上限があります。ページネーションには、レスポンスで返されるstartAfterカーソルを使用してください...gohighlevel-pp-cli contacts update— 連絡先を更新gohighlevel-pp-cli contacts upsert— メールアドレスまたは電話番号で連絡先をアップサート
conversations — 会話を管理します
gohighlevel-pp-cli conversations get— 取得gohighlevel-pp-cli conversations search— 会話を検索(バージョン 2021-04-15)gohighlevel-pp-cli conversations send-message— SMS、メール、その他のメッセージを送信
locations — ロケーションを管理します
gohighlevel-pp-cli locations get— 取得gohighlevel-pp-cli locations search— ロケーションを検索(代理店レベル)
opportunities — 商談を管理します
gohighlevel-pp-cli opportunities create-opportunity— 商談を作成gohighlevel-pp-cli opportunities delete-opportunity— 商談を削除gohighlevel-pp-cli opportunities get-opportunity— 商談を取得gohighlevel-pp-cli opportunities list-pipelines— ロケーションのパイプラインを一覧表示gohighlevel-pp-cli opportunities search— パイプライン内の商談を検索gohighlevel-pp-cli opportunities update-opportunity— 商談を更新gohighlevel-pp-cli opportunities upsert-opportunity— 商談をアップサート
surveys — アンケートを管理します
gohighlevel-pp-cli surveys— 一覧表示
users — ユーザーを管理します
gohighlevel-pp-cli users get— 取得gohighlevel-pp-cli users search— ロケーション内のユーザーを検索
workflows — ワークフローを管理します
gohighlevel-pp-cli workflows— ロケーションのワークフローを一覧表示
適切なコマンドを見つける
実行したいことはわかっていても、どのコマンドを使えばよいかわからない場合は、CLI に直接尋ねてください。
gohighlevel-pp-cli which "<capability in your own words>"
which は、自然言語で指定された機能に関する問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は少なくとも 1 件の一致があることを示し、終了コード 2 は確信の持てる一致がないことを示します。その場合は --help を使うか、より絞り込んだ問い合わせをしてください。
レシピ
月曜の L10 向けパイプラインのファネルスナップショット
gohighlevel-pp-cli opp funnel --pipeline "Non-KW" --tsv
ローカルキャッシュ内の商談をステージごとに集計します。TSV 出力はそのままダッシュボードのシートに貼り付けられます。
Engaged のまま 30 日以上経過している候補者を見つける
gohighlevel-pp-cli opp stale --pipeline "Non-KW" --stage "Engaged" --days 30 --json
同期差分から作成されたローカルの stage_transitions テーブルを使用します。GHL の API だけでは答えられない質問にも対応します。
トレーニングに参加した全員に一括でタグを付ける
cat ~/Downloads/attendees.csv | gohighlevel-pp-cli contact bulk-tag --tag "Attended_2026-05-19" --dry-run
標準入力からメールアドレスを読み込み、接続が切れた場合は再試行しながら、100 件ずつ処理します。適用するには --dry-run を外してください。
人が読む項目名からカスタムフィールド ID を調べる
gohighlevel-pp-cli field id "Agent Affiliation"
人が読めるカスタムフィールド名に対応する、不透明な GHL フィールド ID を返します。gohighlevel-pp-cli sql "SELECT * FROM contacts WHERE ..." と組み合わせれば、ID をハードコードせずにカスタムフィールドの値でクエリできます。
エンティティをまたぐクエリ(キャッシュに対する SQL)
gohighlevel-pp-cli sql "SELECT c.email, o.name, o.monetaryValue FROM opportunities o JOIN contacts c ON o.contactId=c.id ORDER BY o.dateUpdated DESC LIMIT 50" --json
同期済みテーブル間の結合を、1 つのクエリで実行できます。エージェントが求めるのは、まさにこの形式です。--select とドット区切りのパスを使うと、customFields.value のようなネストされたフィールドを取り出せます。
認証の設定
GoHighLevel は Private Integration Token(PIT)を使用します。環境変数に GHL_PIT_TOKEN を設定してください(接頭辞は小文字の pit- です。大文字の Pit- を使うと 401 Invalid JWT が返されます)。必要に応じて、アクティブなサブアカウント用の GHL_LOCATION_ID を設定するか、gohighlevel-pp-cli config use <name> で名前付きプロファイルを使用して、KWCP や THINK などのロケーションを切り替えてください。
gohighlevel-pp-cli doctor を実行して、設定を確認してください。
エージェントモード
任意のコマンドに --agent を追加してください。次のオプションが有効になります:--json --compact --no-input --no-color --yes。
-
パイプで利用可能 — stdout に JSON を出力し、エラーは stderr に出力します
-
フィルタ可能 —
--selectでフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列では各要素に適用されます。詳細な API のコンテキストを小さく保つうえで重要です。gohighlevel-pp-cli calendars list --location-id 550e8400-e29b-41d4-a716-446655440000 --agent --select id,name,status -
プレビュー可能 —
--dry-runを指定すると、リクエストを送信せずに表示します -
オフラインでも利用可能 — 同期/検索コマンドは、利用可能な場合にローカルの SQLite ストアを使用できます
-
非対話型 — プロンプトは表示されず、すべての入力をフラグで指定します
-
再試行を明示 — すでに存在するものの作成を成功として扱う場合に限り
--idempotentを使用し、削除対象が存在しない場合に成功として扱う場合に限り--ignore-missingを使用してください
レスポンスエンベロープ
ローカルストアまたは API から読み取るコマンドは、出力をデータの出所を示すエンベロープで包みます。
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データには .results を、ライブデータかローカルデータかの確認には .meta.source を解析してください。人が読める N results (live) の概要は、stdout が端末であり、かつ機械処理用の形式フラグ(--json、--csv、--compact、--quiet、--plain、--select)が設定されていない場合にのみ stderr に出力されます。パイプ経由の利用者やエージェントによる利用、および形式を明示した実行では、stdout に純粋な JSON が出力されます。
エージェントへのフィードバック
あなた(またはエージェント)がこの CLI の問題に気づいたら、記録してください。
gohighlevel-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
gohighlevel-pp-cli feedback --stdin < notes.txt
gohighlevel-pp-cli feedback list --json --limit 10
記録はローカルの ~/.gohighlevel-pp-cli/feedback.jsonl に保存されます。GOHIGHLEVEL_FEEDBACK_ENDPOINT が設定され、かつ --send が指定されているか、GOHIGHLEVEL_FEEDBACK_AUTO_SEND=true が設定されていない限り、POST されることはありません。デフォルトではローカルにのみ保存されます。
バグ報告ではなく、意外に感じたことを書いてください。短く、具体的に、1 行で。それが積み重ねにつながります。
出力先への配信
すべてのコマンドで --deliver <sink> を指定できます。出力は標準出力に加えて(または標準出力の代わりに)、指定した出力先に送信されるため、エージェントはコマンド結果を手作業でパイプに渡さずに振り分けられます。対応している出力先は次の3つです。
| 出力先 | 動作 |
|---|---|
stdout | デフォルト。標準出力のみに書き込みます |
file:<path> | 出力を <path> にアトミックに書き込みます(一時ファイル + リネーム) |
webhook:<url> | 出力本文を URL に POST します(--compact 指定時は application/json または application/x-ndjson) |
不明なスキームは、対応しているスキームを示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の値を返し、URL と HTTP ステータスを標準エラーに記録します。
名前付きプロファイル
プロファイルは、保存済みのフラグ値のセットで、複数回の実行で再利用できます。スケジュールされたエージェントが毎回同じ設定で同じコマンドを呼び出す場合に使用します。これは HeyGen の「Beacon」パターンです。
gohighlevel-pp-cli profile save briefing --json
gohighlevel-pp-cli --profile briefing calendars list --location-id 550e8400-e29b-41d4-a716-446655440000
gohighlevel-pp-cli profile list --json
gohighlevel-pp-cli profile show briefing
gohighlevel-pp-cli profile delete briefing --yes
明示的なフラグは常にプロファイル値より優先され、プロファイル値はデフォルトより優先されます。agent-context は available_profiles の下にすべての利用可能なプロファイルを一覧表示するため、情報を取得するエージェントは実行時にそれらを検出できます。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用エラー(引数が正しくありません) |
| 3 | リソースが見つかりません |
| 4 | 認証が必要です |
| 5 | API エラー(上流の問題) |
| 7 | レート制限中(待機して再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します。
- 空、
help、または--help→gohighlevel-pp-cli --helpの出力を表示します installで始まる場合 →mcpで終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照してください- それ以外 → 直接使用(
--agentを付けて CLI コマンドとして実行します)
MCP サーバーのインストール
この CLI の公開済みパブリックライブラリエントリーまたはビルド済みリリースから MCP バイナリをインストールし、登録します。
claude mcp add gohighlevel-pp-mcp -- gohighlevel-pp-mcp
確認:claude mcp list
直接使用
- インストール済みか確認します:
which gohighlevel-pp-cli見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照してください)。 - ユーザーのクエリに最適なコマンドを、上記の独自の機能とコマンドリファレンスから選びます。
--agentフラグを付けて実行します。gohighlevel-pp-cli <command> [subcommand] [args] --agent- 曖昧な場合は、サブコマンドのヘルプを確認します:
gohighlevel-pp-cli <command> --help