mcpField
P
pp-skool

pp-skool

github.com/mvanhornその他2.1k146 回インストール今日更新
リポジトリ

pp-skool について

pp-skoolは、skool-pp-cliでSkoolコミュニティを運営・モデレーションするためのスキルです。コミュニティ分析やエクスポートに加え、ローカルSQLiteミラーで検索、SQL、活動ダイジェストを利用できます。

主な機能

  1. 01投稿とメンバーのランキング
  2. 02最近のコミュニティ活動の集計
  3. 03コースのMarkdownエクスポート
  4. 04ローカルSQLiteミラーの検索とクエリ
  5. 05メンバーと投稿の管理

活用シーン

  1. 01定期的なコミュニティダイジェストの作成
  2. 02反応の多い投稿の発見
  3. 03オフライン参照用のコース資料のエクスポート
  4. 04同期済みコミュニティ間のデータ比較

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/pp-skoolを入力して読み込まれたか確認します。

詳細

Skool — Printing Press CLI

前提条件:CLI のインストール

このスキルは skool-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください。

  1. Printing Press インストーラーを使ってインストールします。バイナリのインストール先は、macOS/Linux では $HOME/.local/bin、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin がデフォルトです。
    npx -y @mvanhorn/printing-press-library install skool --cli-only
    
  2. 確認します:skool-pp-cli --version
  3. このスキルを実行するエージェント/ランタイムの $PATH に、表示されたインストールディレクトリが含まれていることを確認します。

npx でのインストールに失敗した場合(Node がない、オフラインなど)は、Go からの直接インストールに切り替えてください(Go 1.26.6 以降が必要です)。

go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/skool/cmd/skool-pp-cli@latest

インストール後に --version が「command not found」と表示される場合、ランタイムからバイナリディレクトリを $PATH 経由で認識できていません。確認に成功するまで、スキルのコマンドを実行しないでください。

この CLI を使用する場面

Skool コミュニティを運営またはモデレートしており、ネイティブ UI ではできない分析、エクスポート、自動化(教室コンテンツの Markdown へのエクスポート、コミュニティ横断の SQL、エージェント向けの定期ダイジェストなど)が必要な場合に、この CLI を使用します。

独自の機能

この API では、以下の機能を利用できるツールはほかにありません。

蓄積されるローカルデータ
  • posts top — 最近の投稿をアップボート、コメント、エンゲージメントでランキングし、本文全体とともに返します。

    任意のコミュニティで最もエンゲージメントの高い投稿を 3~5 件表示する日次/週次の cron に適しています。スクロールせずに最新情報を把握できます。

    skool-pp-cli posts top --community earlyaidopters --since 7d --top 5 --by engagement --json
    
  • leaderboard — コミュニティの上位メンバーを、レベルと自己紹介のフィールドを含めて表示します。

    ページをスクレイピングせずに、コミュニティの最新のリーダーボードを 1 回の呼び出しで取得する必要があるエージェントに適しています。

    skool-pp-cli leaderboard --community bewarethedefault --top 25 --json
    
  • digest since — 指定したタイムスタンプ以降の投稿、コメント、メンバー、レッスンの新着情報を集約します。

    日次/週次の cron 用に、コミュニティのアクティビティをまとめた簡潔なレポートを 1 つ作成する必要があるエージェントに適しています。

    skool-pp-cli digest since 24h --json
    
  • sql — ローカルストアにあるすべてのコミュニティを対象に、読み取り専用 SQL を実行します。

    自分が所有または運営する複数の Skool コミュニティを横断するクエリを作成する必要があるエージェントに適しています。

    skool-pp-cli sql 'SELECT community, COUNT(*) FROM posts GROUP BY community'
    
  • sync --resources posts,members — コミュニティの投稿とメンバーを、Next.js ページのエンベロープから取り出してローカル SQLite ミラーに読み込みます。

    search や sql の前に実行してください。どちらもミラーを読み取るため、投稿とメンバーが読み込まれるまではミラーが空です。

    skool-pp-cli sync --community <community-slug> --resources posts,members
    
エージェント向けの連携機能
  • calendar export — 今後開催されるコミュニティイベントを .ics ファイルにエクスポートし、Google Cal/Outlook で利用できるようにします。

    メンバーが手入力せずに、コミュニティイベントを個人のカレンダーに追加したい場合に適しています。

    skool-pp-cli calendar export --ics > community.ics
    
  • classroom export — コース全体を Markdown バンドル(モジュール、レッスン、添付ファイル、動画 URL)としてエクスポートします。

    オフラインでの参照、検索、LLM による検索拡張生成のために、コースを取り込む必要があるエージェントに適しています。

    skool-pp-cli classroom export <course-slug> --out ./course/
    

HTTP トランスポート

この CLI は、ブラウザー向けエンドポイントに Chrome 互換の HTTP トランスポートを使用します。通常の API 呼び出しに、常駐するブラウザープロセスは必要ありません。

コマンドリファレンス

calendar — コミュニティのカレンダーイベント

  • skool-pp-cli calendar <buildId> — 今後のカレンダーイベントと最近のカレンダーイベントを一覧表示します

classroom — コミュニティのクラスルーム(コース、モジュール、レッスン)

  • skool-pp-cli classroom get-course — モジュールとレッスンを含む単一のコースを取得します
  • skool-pp-cli classroom list — コミュニティ内のすべてのコースを一覧表示します

community — コミュニティのフィード、設定、メタデータ

  • skool-pp-cli community about — 概要ページ(ルール、オーナー、メンバー数)
  • skool-pp-cli community info — コミュニティのフィードを取得します(投稿、リーダーボードの概要、今後のイベント、設定)
  • skool-pp-cli community leaderboard-tab — リーダーボードタブ(t=leaderboard で描画されたコミュニティページ)
  • skool-pp-cli community members-tab — メンバータブのデータ(t=members で描画されたコミュニティページ)

me — 現在認証されているユーザーのダッシュボード

  • skool-pp-cli me <buildId> — 現在のユーザー、参加しているコミュニティ、ダッシュボードの状態を取得します

members — コミュニティのメンバーとモデレーション

  • skool-pp-cli members list — コミュニティのメンバーを一覧表示します
  • skool-pp-cli members approve — 保留中のメンバー申請を承認します
  • skool-pp-cli members ban — メンバーをコミュニティから追放します
  • skool-pp-cli members pending — 保留中の参加申請を一覧表示します
  • skool-pp-cli members reject — 保留中のメンバー申請を却下します

notifications — ユーザーへの通知

  • skool-pp-cli notifications list — 認証済みユーザーの通知を一覧表示します
  • skool-pp-cli notifications mark-read — 通知を既読にします(ID が空の場合はすべて既読にします)

posts — コミュニティ内の投稿(フォーラムスレッド)

  • skool-pp-cli posts list — コミュニティ内の投稿を一覧表示します(新しい順)
  • skool-pp-cli posts comment — 投稿にコメントを追加します
  • skool-pp-cli posts create — 新しい投稿を作成します(body = TipTap JSON。Markdown を変換するには --md を使用します)
  • skool-pp-cli posts delete — 投稿を削除します
  • skool-pp-cli posts get — コメントツリーを含む投稿の詳細ページを取得します
  • skool-pp-cli posts like — 投稿に「いいね」(賛成票)を付けます
  • skool-pp-cli posts unlike — 投稿の「いいね」を取り消します
  • skool-pp-cli posts update — 既存の投稿を更新します

データ鮮度の保証

この CLI が出力するデータについて、鮮度を一定の範囲内で保証するのは、登録済みのストアベース読み取りコマンドパスのみです。--data-source auto モードでは、これらのパスは sync_state を確認し、ローカルデータを読み取る前に範囲を限定した更新を実行する場合があります。--data-source local は更新を実行しません。--data-source live は API から読み取り、ローカルストアを変更しません。ソース選択を変更せずに鮮度確認フックをスキップするには、SKOOL_NO_AUTO_REFRESH=1 を設定します。

対象パス:

  • skool-pp-cli notifications
  • skool-pp-cli notifications list
  • skool-pp-cli notifications mark-read

JSON 出力で生成されたプロベナンスエンベロープを使用する場合、鮮度メタデータは meta.freshness に含まれます。これは対象コマンドパスの現在のキャッシュの鮮度を示すものであり、過去のデータがすべて遡及的に取得されていることや、API 固有の追加情報が付与されていることを保証するものではありません。

適切なコマンドを見つける

実行したいことはわかっていても、どのコマンドを使えばよいかわからない場合は、CLI に直接問い合わせてください。

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

which は、自然言語による機能の問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は少なくとも 1 件の一致があることを示し、終了コード 2 は確信度の高い一致がないことを示します。その場合は --help を使用するか、より具体的な問い合わせを試してください。

レシピ

毎日のダイジェスト用 cron
skool-pp-cli sync --community <community-slug> && skool-pp-cli digest since 24h --community <community-slug> --json --select new_posts,new_members,top_comments

同期を 1 回、クエリを 1 回実行します。スケジュールされたエージェントに渡して Slack/メール用のダイジェストを作成するのに適しています。

コースを Markdown にエクスポートする
skool-pp-cli classroom export ai-foundations --out ./ai-foundations/

再帰的にたどります:モジュール → レッスン → 添付ファイル + Mux URL。コースごとに 1 つのフォルダーが作成され、LLM に取り込める状態になります。

ローカルミラーにデータを取り込んでから検索する
skool-pp-cli sync --community <community-slug> --resources posts,members
skool-pp-cli search "onboarding" --limit 10

sync はコミュニティページをたどり、投稿については pageProps.postTrees[].post を、メンバーについてはメンバー配列を取り出し、両方を SQLite にアップサートします。FTS の search と sql はこのミラーを読み取るため、これらを役立てるにはこの手順が必要です。--agent の実行時、失敗はリソースごとに {"event":"sync_error","resource":...,"error":...} として報告されます。

コミュニティ横断エンゲージメント SQL
skool-pp-cli sql 'SELECT community, COUNT(*) AS posts_30d FROM posts WHERE created_at > date("now","-30 days") GROUP BY community ORDER BY posts_30d DESC'

ローカルストアに対する読み取り専用の SQL です。同期済みのすべてのコミュニティで利用できます。

トップ 10 ランキング
skool-pp-cli leaderboard --community bewarethedefault --top 10 --json

現在の過去 30 日間のランキングです。メンバーの順位、ポイント、レベル、自己紹介フィールドが含まれます。

複数コミュニティでの利用

CLI は、あなたがメンバーになっている任意の Skool コミュニティに対応しています。auth_token Cookie は、グローバルにログインしているすべてのコミュニティで有効です。任意のコマンドに --community <slug> フラグを指定してコミュニティを切り替えるか、~/.config/skool-pp-cli/config.toml の [template_vars] でデフォルトを変更してください。

# Default community from config
skool-pp-cli digest since 24h

# Override per call
skool-pp-cli digest since 24h --community early-ai-adopters --json
skool-pp-cli leaderboard --community some-other-community --top 10

# Sync multiple communities into one local store (each row gets a community tag)
skool-pp-cli sync --community bewarethedefault
skool-pp-cli sync --community early-ai-adopters

# Cross-community SQL once both are synced
skool-pp-cli sql "SELECT community, resource_type, COUNT(*) FROM resources GROUP BY community, resource_type"

# Bash one-liner: daily digest across N communities
for c in bewarethedefault early-ai-adopters another-community; do
  skool-pp-cli digest since 24h --community "$c" --json --select community,new_post_count,new_posts >> ~/skool-daily-digest.jsonl
done

コミュニティタグ付きストアは、v0.3 のコミュニティ横断分析コマンド(リスクのあるメンバー、チャーンコホート、コミュニティ横断エンゲージメントプロファイル)の基盤です。

エンゲージメント上位の投稿(ノイズの中からシグナルを見つける)
skool-pp-cli posts top --community earlyaidopters --since 7d --top 5 --by engagement --json
skool-pp-cli posts top --community bewarethedefault --since 24h --top 3 --by upvotes

日次/週次の主要コマンドです。コミュニティフィードをページネーションしながら取得し、重複を除去し、期間で絞り込んだうえで、賛成票数/コメント数/エンゲージメント/新着順でランク付けします。投稿本文全体を返すため、エージェントは 1 回の呼び出しで必要な情報をすべて取得できます。

認証の設定

Skool には公開 API がありません。ログイン済みのブラウザーセッションから auth_token JWT Cookie を使って認証します:skool-pp-cli auth login(~/.config/skool-pp-cli/config.toml に書き込みます)。ログイン済みの Chrome プロファイルから Cookie を直接読み取るには、--chrome を追加します。認証用コマンドは auth login、auth logout、auth status です。auth set-token はありません。同じ Cookie で読み取りと書き込みの両方に対応します。CloudFront には現実的な User-Agent が必要で、CLI が自動的に設定します。

skool-pp-cli doctor を実行して設定を確認してください。

エージェントモード

任意のコマンドに --agent を追加します。次のオプションが有効になります:--json --compact --no-input --no-color --yes。

  • パイプで渡せます — stdout に JSON、stderr にエラーを出力します

  • フィルター可能 — --select でフィールドを絞り込めます。ドット区切りパスでネストされた構造をたどり、配列では各要素をたどります。詳細な API でコンテキストを小さく保つために重要です:

    skool-pp-cli calendar mock-value --community example-value --agent --select id,name,status
    
  • プレビュー可能 — --dry-run でリクエストを送信せずに内容を確認できます

  • オフラインでも利用可能 — sync/search コマンドは、利用可能な場合はローカル SQLite ストアを使用できます

  • 非対話型 — プロンプトは表示されず、入力はすべてフラグで指定します

  • 明示的なリトライ — すでに存在する項目の作成を成功として扱う場合にのみ --idempotent を使い、削除対象が見つからない場合に成功として扱う場合にのみ --ignore-missing を使います

レスポンスエンベロープ

ローカルストアまたは API からデータを読み取るコマンドは、出力をデータの出所を示すエンベロープでラップします:

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

データには .results を、ライブかローカルかの確認には .meta.source を解析してください。人間が読める N results (live) の概要は、stdout が端末の場合にのみ stderr に出力されます。パイプやエージェントで利用する場合、stdout には JSON のみが出力されます。

エージェントからのフィードバック

あなた(またはエージェント)がこの CLI に問題を見つけた場合は、記録してください:

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

エントリーは ~/.skool-pp-cli/feedback.jsonl にローカル保存されます。SKOOL_FEEDBACK_ENDPOINT が設定され、かつ --send が指定されている場合、または SKOOL_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。デフォルトの動作はローカル保存のみです。

バグ報告ではなく、意外だったことを書いてください。短く、具体的に、1 行で記述してください。積み重なっていくのは、その部分です。

出力の配信

すべてのコマンドで --deliver <sink> を指定できます。出力は stdout に加えて(または stdout の代わりに)指定した出力先に送られるため、エージェントは手動でパイプに渡さずにコマンドの結果を振り分けられます。対応している出力先は 3 種類です:

出力先動作
stdoutデフォルト。stdout のみに書き込みます
file:<path>出力を <path> にアトミックに書き込みます(一時ファイル+リネーム)
webhook:<url>出力本文を URL に POST します(--compact の場合、application/json または application/x-ndjson)

不明なスキームは、サポートされているスキームの一覧を示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の終了コードを返し、URL と HTTP ステータスを stderr に記録します。

名前付きプロファイル

プロファイルは、保存されたフラグ値のセットで、実行のたびに再利用できます。スケジュールされたエージェントが、毎回同じ設定で同じコマンドを呼び出す場合に使用します。これは、HeyGen の「Beacon」パターンです。

skool-pp-cli profile save briefing --json
skool-pp-cli --profile briefing calendar mock-value --community example-value
skool-pp-cli profile list --json
skool-pp-cli profile show briefing
skool-pp-cli profile delete briefing --yes

明示的に指定したフラグは、常にプロファイルの値より優先されます。プロファイルの値は、デフォルト値より優先されます。agent-context は、利用可能なすべてのプロファイルを available_profiles に一覧表示するため、実行時にプロファイルを検出するエージェントが確認できます。

終了コード

コード意味
0成功
2使用方法のエラー(引数が正しくありません)
3リソースが見つかりません
4認証が必要です
5API エラー(上流の問題)
7レート制限中(待ってから再試行してください)
10設定エラー

引数の解析

$ARGUMENTS を解析します。

  1. 空、help、または --help → skool-pp-cli --help の出力を表示します
  2. install で始まる → mcp で終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照します
  3. その他 → 直接使用(CLI コマンドとして --agent を付けて実行します)

MCP サーバーのインストール

  1. MCP サーバーをインストールします。
    go install github.com/mvanhorn/printing-press-library/library/other/skool/cmd/skool-pp-mcp@latest
    
  2. Claude Code に登録します。
    claude mcp add skool-pp-mcp -- skool-pp-mcp
    
  3. claude mcp list で確認します

直接使用

  1. インストール済みか確認します。which skool-pp-cli 見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照)。
  2. ユーザーのクエリに最適なコマンドを、上記の「独自の機能」と「コマンドリファレンス」から選びます。
  3. --agent フラグを付けて実行します。
    skool-pp-cli <command> [subcommand] [args] --agent
    
  4. あいまいな場合は、サブコマンドのヘルプを確認します。skool-pp-cli <command> --help

コメント