mcpField
P
pp-food52

pp-food52

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

pp-food52 について

pp-food52は、`food52-pp-cli`でFood52のレシピや記事を検索、同期、分析するスキルです。レシピ関連のワークフローを組むエージェント向けで、オンライン検索に加え、ローカル検索や食材照合に対応します。

主な機能

  1. 01レシピの検索と閲覧
  2. 02レシピと記事のローカル同期
  3. 03手持ち食材からレシピを照合
  4. 04分量調整とレシピ整形
  5. 05編集部承認済みレシピの検索

活用シーン

  1. 01手持ち食材で作れるレシピ探し
  2. 02同期済みレシピのオフライン検索
  3. 03人数に合わせた材料の調整
  4. 04調理手順を見やすく出力

インストール

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

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

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

詳細

Food52 — Printing Press CLI

前提条件:CLI をインストールする

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

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

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

go install github.com/mvanhorn/printing-press-library/library/food-and-dining/food52/cmd/food52-pp-cli@latest

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

この CLI を使う場面

ブラウザーを表示したり HTML をスクレイピングしたりせずに、Food52 品質のレシピ(コミュニティが厳選し、編集者がテスト済み)が必要な場合は、この CLI を利用してください。パントリーとの照合機能とオフライン FTS コマンドを使えば、セッションをまたいでディスク上に保存できる、編集しやすい料理本として活用できます。単発の検索にはライブの recipes search を、同じレシピを繰り返し検索する場合は、同期してオフラインの search を使ってください。

この CLI を使わない場面

作成、更新、削除、公開、コメント、賛成票の投票、招待、注文、メッセージの送信、予約、購入、またはリモート状態の変更が必要なリクエストには、この CLI を使用しないでください。この印刷用 CLI が提供するのは、確認、エクスポート、同期、分析の読み取り専用コマンドです。

独自の機能

この API のほかのツールでは、次の機能を利用できません。

蓄積されるローカル状態
  • pantry match — ローカルのパントリーと材料が重複する Food52 のレシピを、材料の一致度順に検索します。

    ユーザーが一品ずつ検索するのではなく、「手元にあるもので何が作れますか」と尋ねた場合に使います。

    food52-pp-cli pantry match --min-coverage 0.7 --json
    
  • search — 同期済みのすべてのレシピと記事を対象に、種類を絞り込んで全文検索します。

    Typesense への往復を正当化できない検索や、オフラインでの検索に使います。

    food52-pp-cli search "miso" --type recipe --json
    
  • sync recipes — 1 つ以上のタグに該当するレシピを、ローカルの FTS インデックス付きストアに取得します。

    ローカルの料理本を準備するため、パントリーとの照合やオフライン検索の前に実行します。

    food52-pp-cli sync recipes chicken vegetarian --limit 100
    
  • articles for-recipe — 指定したレシピが relatedReading で言及されている、同期済みの記事を検索します。

    見つけたレシピの背景にある編集者の見解をユーザーが知りたい場合に使います。

    food52-pp-cli articles for-recipe sarah-fennel-s-best-lunch-lady-brownie-recipe
    
見過ごされがちな編集者の評価指標
  • recipes top — 指定したタグについて、Food52 のテストキッチンが承認したレシピのみを、評価の下限を指定して表示します。

    コミュニティのレシピなら何でもよいのではなく、「Food52 の編集者がお墨付きを与えたレシピ」をユーザーが求めている場合は、幅広い検索よりこちらを優先します。

    food52-pp-cli recipes top chicken --min-rating 4 --limit 5 --json
    
レシピの変換
  • scale — Schema.org の recipeYield を使って、レシピの材料を異なる人数分に調整します。

    レシピの標準的な分量とは異なる人数分を調理する場合に使います。

    food52-pp-cli scale mom-s-japanese-curry-chicken-with-radish-and-cauliflower --servings 8 --json
    
  • print — レシピを、材料と番号付き手順のみの形式で表示します。ナビゲーション、画像、広告、コメントは含まれないため、lp にパイプで渡したり、メモに貼り付けたりできます。

    レシピを閲覧するだけでなく、実際に調理したい場合に使います。

    food52-pp-cli print sarah-fennel-s-best-lunch-lady-brownie-recipe
    

HTTP トランスポート

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

検出シグナル

この CLI は、ブラウザーで観測したトラフィックのコンテキストをもとに生成されています。

  • キャプチャ範囲:ネットワークエントリーの合計 0 件中、API エントリーは 0 件
  • プロトコル:ssr_embedded_data(信頼度 100%)、next_data_json(信頼度 100%)、rest_json(信頼度 100%)、schema_org_jsonld(信頼度 100%)
  • 認証シグナル:なし
  • 生成時のヒント:browser_http_transport
  • コマンド候補のアイデア:recipes search;recipes browse;recipes get;tags list;verticals list;articles browse;articles get
  • 注意事項:scope_note:Hotline(/hotline、/hotline/questions/)は pageProps に siteSettings のみを返し、DOM に質問・回答データを描画しません。コミュニティ Q&A は、認証されていない読み取りスクレイパーからは実質的にアクセスできません。CLI の対象範囲から除外されています。;scope_note:ショップのエンドポイントは shop.food52.com と food52.myshopify.com/api/2025-01/graphql.json に存在しますが、Shopify Storefront API トークンの特定が必要なため、v1 では対応を見送っています。;scope_note:buildId(ブラウザーでのスニッフィング時点では Pq8fQj0nm7uTx90i5u0si)と _app.js バンドルのハッシュは、Food52 のデプロイごとに変わります。CLI の実行時検出機能(NEXT_DATA.buildId からの buildId の取得、および有効な _app-.js に対する正規表現でのキー取得)が、ローテーションを透過的に処理します。;scope_note:Typesense の /collections エンドポイントには管理者キーが必要です(検索専用キーでは 403 が返されます)。CLI はコレクションを一覧表示せず、既知のコレクション名 'recipes_production_food52_current' に直接クエリを実行します。

コマンドリファレンス

articles — food と life のカテゴリーにある Food52 の記事(ストーリー)を閲覧・読む

  • food52-pp-cli articles browse — カテゴリー(food、life)の最新の Food52 記事を閲覧する
  • food52-pp-cli articles get — スラッグで Food52 の記事(ストーリー)を取得する

recipes — タグで Food52 のレシピを閲覧し、個別レシピの詳細を取得する(SSR HTML に埋め込まれた Next.js の NEXT_DATA から抽出)

  • food52-pp-cli recipes browse — タグ(例:chicken、breakfast、vegetarian)で絞り込んだ Food52 のレシピを閲覧する
  • food52-pp-cli recipes get — スラッグで個別の Food52 レシピの詳細な構造化データを取得する

手書きコマンド

  • food52-pp-cli recipes search <query> — Typesense で Food52 のレシピを検索する(ホストと検索専用キーは公開 JS バンドルから自動検出)
  • food52-pp-cli recipes top <tag> — タグでテストキッチン承認済みのレシピのみを表示し、任意で評価の下限(--min-rating)を指定する
  • food52-pp-cli articles browse-sub <vertical> <subvertical> — Food52 の記事カテゴリー内のサブカテゴリー(例:food baking、food drinks、life travel)を閲覧する
  • food52-pp-cli articles for-recipe <slug> — 関連するレシピのスラッグに言及している relatedReading を含む、同期済みの記事を検索する
  • food52-pp-cli tags list — ホームページのナビゲーションから検出された Food52 のレシピタグを一覧表示する(chicken、breakfast、vegetarian、dessert、pasta、...)
  • food52-pp-cli sync recipes <tag> [<tag>...] — 1 つ以上のタグに該当するレシピを、ローカルの FTS インデックス付きストアに取得する
  • food52-pp-cli sync articles <vertical> [<subvertical>] — カテゴリーまたはサブカテゴリーの記事一覧をローカルストアに取得する
  • food52-pp-cli search <query> — ローカルストア内のレシピと記事を検索する(FTS5、オフライン)
  • food52-pp-cli pantry add <ingredient> [<ingredient>...] — 食材をローカルのパントリーに追加する
  • food52-pp-cli pantry list — ローカルのパントリーを表示する
  • food52-pp-cli pantry remove <ingredient> — パントリーから食材を削除する
  • food52-pp-cli pantry match — 食材がパントリーの内容と一致する(またはおおむね一致する)同期済みのレシピを検索する
  • food52-pp-cli scale <slug-or-url> — レシピの JSON-LD から recipeYield を解析し、異なる分量に合わせてレシピの食材の量を調整する
  • food52-pp-cli print <slug-or-url> — レシピを料理に使いやすいシンプルな形式で出力する(食材+番号付き手順、ナビゲーションなし、画像なし、そのまま貼り付け可能、または...
  • food52-pp-cli open <slug-or-url> — Food52 のレシピまたは記事の URL を出力する。--launch を指定すると、既定のブラウザーで実際に開く
適切なコマンドを見つける

やりたいことは分かっていても、どのコマンドを使えばよいか分からない場合は、CLI に直接尋ねてください。

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

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

レシピ

材料 5 つ以内で TK が承認したチキンレシピを探す
food52-pp-cli recipes search chicken --tag 5-ingredients-or-fewer --json --select 'hits.document.title,hits.document.slug,hits.document.testKitchenApproved'

タグで絞り込んだ Typesense 検索を行い、エージェントがレシピを選ぶのに必要なフィールドだけを取得します。

後続の献立作成に使うレシピ全体を JSON で取得する
food52-pp-cli recipes get mom-s-japanese-curry-chicken-with-radish-and-cauliflower --json --select 'recipe.title,recipe.recipeDetails.ingredients,recipe.recipeDetails.instructions,recipe.averageRating'

構造化された材料と手順を取得し、献立作成ツールや買い物リスト作成ツールに渡せるようにします。

平日の夜向けのオフライン料理本を一度に作成する
food52-pp-cli sync recipes weeknight quick-and-easy 30-minutes-or-fewer && food52-pp-cli search 'weeknight' --json

関連性の高い 3 つのタグのデータをローカルストアに取得してから、FTS5 で検索します。飛行機内でも使えます。

今すぐ何が作れますか?
food52-pp-cli pantry match --min-coverage 0.6 --json --select 'matches.title,matches.coverage,matches.missing_ingredients'

ローカルのパントリーの内容を同期済みのすべてのレシピと照合し、ほぼ材料がそろっているレシピを返します。

認証の設定

認証は必要ありません。

food52-pp-cli doctor を実行して、セットアップを確認してください。

エージェントモード

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

  • パイプ可能 — stdout に JSON、stderr にエラーを出力します

  • フィルタリング可能 — --select でフィールドの一部だけを取得します。ドット区切りのパスでネストされた構造をたどり、配列では各要素を処理します。詳細な API でコンテキストを小さく保つうえで重要です。

    food52-pp-cli articles get best-mothers-day-gift-ideas --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 について気になる点があれば、あなた自身またはエージェントが気付いたことを記録してください。

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

記録はローカルの ~/.food52-pp-cli/feedback.jsonl に保存されます。FOOD52_FEEDBACK_ENDPOINT が設定され、かつ --send が指定されているか、FOOD52_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」パターンがその例です。

food52-pp-cli profile save briefing --json
food52-pp-cli --profile briefing articles get best-mothers-day-gift-ideas
food52-pp-cli profile list --json
food52-pp-cli profile show briefing
food52-pp-cli profile delete briefing --yes

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

終了コード

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

引数の解析

$ARGUMENTS を解析します:

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

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

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

直接使用

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

コメント