mcpField
O
oma-market

oma-market

github.com/first-flukeマーケティング・グロース1.4k44 回インストール1 日前に更新
リポジトリ

oma-market について

oma-marketは、トピック、製品、企業、人物、銘柄に関するコミュニティの声を調査するスキルです。omaが管理する最新のlast30daysを実行し、調査意図に応じた戦略フレームワークと根拠を含むブリーフにまとめます。

主な機能

  1. 01コミュニティの声と課題の調査
  2. 02指定期間におけるトレンド分析
  3. 03競合の評判とポジショニング分析
  4. 04探索、人物、採用シグナルの調査
  5. 05意図に応じたSWOT、5F、PESTEL分析

活用シーン

  1. 01製品カテゴリーへの不満の把握
  2. 02指定期間におけるトピックの変化の追跡
  3. 03競合間のコミュニティ評価の比較
  4. 04企業、人物、銘柄の探索

インストール

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

$npx skills add https://github.com/first-fluke/oh-my-agent --skill oma-market

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
checklist.md
error-playbook.md
execution-protocol.md
intent-rules.md
output-laws.md
resources/frameworks/
pestel.md
porters-5f.md
swot.md

詳細

市場調査エージェント - コミュニティシグナルインテリジェンス

スケジュール設定

目標

上流のlast30days調査エンジン(oma が管理する常に最新のリリース)を実行してコミュニティシグナルを調査し、戦略フレームワークを用いて結果をユーザーの意図(課題/トレンド/競合/探索)に合わせて整理し、簡潔なレポートを1件.agents/results/market/に保存します。

意図のシグネチャ
  • 製品やカテゴリの課題、ユーザーの不満、顧客の声に関するシグナルを尋ねている。
  • 今週または今月、ある分野で何が流行し、成長し、または衰退しているかを尋ねている。
  • コミュニティの評判やポジショニングにおいて、ある製品が別の製品とどう比較されるかを尋ねている。
  • トピック、人物、企業、またはティッカーに関する探索的な市場調査を求めている。
使用する場合
  • コミュニティ投稿(実際のアップボート数や上位コメントを含むReddit、HN、X、Bluesky、GitHub Issues)から実際のユーザーの課題を抽出する場合
  • 期間(--days 7|30|90|180)を指定してカテゴリのトレンドを検出する場合
  • 競合の評判分析や、SWOT/ポーターの5フォースによるポジショニングを行う場合
  • オープンエンドの探索調査(--discover)、人物モード、採用シグナル(--hiring-signals)、追加調査(--drill)を行う場合
使用しない場合
  • 市場の観点を含まない一般的なウェブ調査 → oma-search を直接使用します
  • 学術文献 → oma-scholar を使用します
  • ライブダッシュボードや定期モニタリング → このスキルをラップするoma schedule <action>を使用します
想定される入力
  • トピック文字列。任意で--intent pain|trend|competitor|discoveryを指定します(指定がなければresources/intent-rules.mdに従って分類します)
  • 任意の期間(--days)、--vs <entity>(競合)、--frameworks auto|none|swot,5f,pestel
  • 任意のネイティブなlast30daysフラグ(oma market run --helpを参照)—そのまま渡します
想定される出力
  • .agents/results/market/{topic-slug}-{YYYYMMDD}.mdに1件のMarkdownレポート
  • 先頭行:エンジンのバッジ(🌐 last30days v{VERSION} · synced {date})。本文は上流のOUTPUT CONTRACTに従い、意図に応じたフレームワークのセクションを追加し、エンジンのフッターは保持します
  • 生のエンジン成果物はmarket.save_dir(デフォルトは.agents/results/market/raw/)に保存します
outputs:
  - name: market-brief
    description: Single LAW-compliant markdown brief with framework sections
    artifact: ".agents/results/market/*.md"
    required: true
依存関係
  • oma market resolve/oma market run — エンジンの場所、Python 3.12+の解決、--save-dirのデフォルト
  • 解決されたエンジンのルートにある上流のSKILL.md(oma market resolve --jsonのskillMd)—調査に関する正式な仕様
  • resources/intent-rules.md、resources/frameworks/、resources/output-laws.md、resources/execution-protocol.md
制御フローの機能
  • 他の処理より先にoma market detect-trapのゲートを実行します(終了コード2 = REFUSE、終了コード4 = 無効)
  • エンジンは常に最新リリースを使用します。oma market resolveは管理対象のコピーを更新(頻度制限あり)し、オフライン時はキャッシュ済みのコピーにフォールバックします。market.path/LAST30DAYS_HOMEを固定すると、この動作は無効になります
  • キーやCookieが必要なソースはエンジン内で自動的にスキップされます。認証情報不要のソース(Reddit、HN、GitHub、Polymarket、arXiv、Techmeme、Digg、ウェブ)は常に実行されます
  • 意図に応じてフレームワークを自動切り替えします(課題/トレンド → SWOT、競合 → SWOT + ポーターの5フォース、探索 → SWOT + PESTEL)

構造的なフロー

開始
  1. oma market detect-trap "<topic>"を実行します。終了コード2の場合は、REFUSEの理由と質問の言い換え案を提示して停止します。
  2. oma market resolve --jsonを実行します。ok: falseの場合はreasonを報告し(エンジンがない場合はoma market update、Pythonがない場合はインストール方法を案内)、停止します。WebSearchのみで合成した内容を市場調査として提示してはいけません。
  3. 上流の仕様をengine.skillMdから最初から最後まで読みます。意図的に長くしてあるため、流し読みしてはいけません。engine.rootをそのSKILL_DIRとして扱います。
  4. resources/intent-rules.mdに従って意図を分類し、エンジンのフラグとフレームワークのセットに対応付けます。
シーン
  1. 準備:detect-trap を実行し、resolve、上流の SKILL.md を読み込み、インテントを分類します。
  2. 上流のステップ:上流の SKILL.md に厳密に従います — ステップ 0(初回実行時のセットアップウィザード、同意に基づく)、インテント解析、ステップ 0.45(独自のクエリ品質事前チェック)、ステップ 0.5/0.55(WebSearch が利用可能な場合のハンドル、サブレディット、ハッシュタグの解決)、ステップ 0.75(クエリ計画)。「Runtime Preflight」の Python 探索ブロックのみスキップします。インタープリターは oma market run によってすでに解決済みです。
  3. 実行:上流の契約で "${LAST30DAYS_PYTHON}" "${SKILL_DIR}/scripts/last30days.py" <args> を実行するよう指定されている箇所では、同じ引数で oma market run <args> を実行します(フォアグラウンド、タイムアウト 5 分、--emit=compact)。--save-dir を指定しない場合、market.save_dir から自動的に追加されます。
  4. 統合:上流の OUTPUT CONTRACT の指定どおりにブリーフを作成します(1 行目にバッジ、Ranked Evidence Clusters、LAWs)。続けて、インテントに応じて選択したフレームワークのセクションを追加します。根拠として使えるのは、エンジン出力に含まれるクラスターのみです(resources/frameworks/)。
  5. 最終処理:resources/output-laws.md のセルフチェックを実行し、.agents/results/market/{topic-slug}-{YYYYMMDD}.md に書き込み、先頭 50 行をプレビューします。
遷移
  • --vs <entity> または「A vs B」という表現 → 競合比較のインテント → 上流の COMPARISON フロー(契約の指定どおりに 2 回実行し、直接比較を実施)→ SWOT + ポーターのファイブフォース。
  • 人物/企業/ティッカーのトピック → 上流の人物/採用シグナル/StockTwits の処理をそのまま適用します。
  • engine.status: stale → レポートに note を含めます(キャッシュされたエンジンバージョンで調査が実行されました)。
失敗と復旧
  • detect-trap の終了コードが 2 → 拒否します。エンジンは実行しません。--force はユーザーが明示的に再確認した場合に限り使用します。
  • oma market resolve が ok でない → 理由を示して停止します。エンジンは実行しません。
  • エンジンが 0 以外の終了コードを返す → stderr をそのまま報告します。上流の契約で出力された compact 出力が有効とされている場合を除き、部分的な stdout をもとに統合しません。
  • 上流の Python バージョンチェック/セットアップウィザードのメッセージ → 上流の契約の指示どおりに、そのままユーザーに伝えます。
終了
  • 成功:バッジ、クラスター、フレームワーク、エンジンフッターを含むブリーフを書き込み、パスを報告します。
  • 部分的な成功:一部のソースをスキップしてエンジンを実行した場合(フッターにスキップしたソースが記載されます)、その旨を伝えます。根拠を捏造して補ってはなりません。

論理操作

アクション
アクションSSL プリミティブ根拠
detect-trap の事前チェックVALIDATEトピック引数、トラップパターンのルール
エンジンと Python の解決CALL_TOOLoma market resolve --json
上流の契約を読むREADengine.skillMd
インテントを分類SELECTresources/intent-rules.md
上流の調査前ステップINFER上流の SKILL.md のステップ 0~0.75
エンジンを実行CALL_TOOLoma market run <args>
統合とフレームワークWRITE上流の OUTPUT CONTRACT、resources/frameworks/
セルフチェックとブリーフの書き込みWRITEresources/output-laws.md、.agents/results/market/
ツールとインストゥルメント
  • oma market detect-trap <topic>(事前チェックゲート)
  • oma market resolve [--refresh|--offline] [--json](エンジンと Python の解決。管理対象の最新バージョンを使用)
  • oma market update(管理対象エンジンを強制的に更新)
  • oma market run <engine args…>(解決済みの上流エンジンの Python エントリーポイントに引数を渡します)
標準のコマンドパス
TOPIC="VS Code pain points"
oma market detect-trap "$TOPIC"
oma market resolve --json            # read .engine.skillMd, then follow it
# … upstream Steps 0 / 0.45 / 0.5 / 0.55 / 0.75 …
oma market run "$TOPIC" --plan "$QUERY_PLAN_FILE" --subreddits=vscode --emit=compact --save-suffix=v3
リソースの範囲
範囲リソースの対象
NETWORKエンジン内部のみ(ソースごとのフェッチャー)。管理対象エンジンの更新には GitHub を使用
LOCAL_FS~/.cache/oma-market/last30days/<tag>/(エンジン)、~/.config/last30days/(エンジン設定、キー)、.agents/results/market/(ブリーフと生データ)
PROCESSoma market サブコマンド → 解決済みの上流 Python エントリーポイント
前提条件
  • トピックが detect-trap を通過していること。
  • oma market resolve が ok であること(エンジンが存在し、PATH 上、uv 経由、または market.python/LAST30DAYS_PYTHON で指定された Python ≥ 3.12 が見つかること)。
効果と副作用
  • 概要を .agents/results/market/{topic-slug}-{YYYYMMDD}.md に、エンジンの生ファイルを market.save_dir に書き込みます。
  • 初回実行時:上流のセットアップウィザードが、ユーザーの同意を得て ~/.config/last30days/.env に書き込む場合があります。
  • Python 3.12+ がない場合、oma market resolve は上流のセットアップウィザードの実行前に停止します。表示されたインストール案内を伝え、承認を得てインタープリターをインストールした後に、解決を再試行してください。スキップされた上流の Python 事前チェックによってインストールされるとは考えないでください。

参考資料

  • 実行プロトコル:resources/execution-protocol.md
  • インテントのルーティング:resources/intent-rules.md
  • 出力仕様:resources/output-laws.md
  • 適用するフレームワーク:resources/frameworks/swot.md、resources/frameworks/porters-5f.md、または resources/frameworks/pestel.md(選択したフレームワークのみ読み込みます)
  • 検証:resources/checklist.md
  • 復旧:resources/error-playbook.md
  • 上流エンジンの手順:oma market resolve --json から解決された engine.skillMd パスを読みます。上流のスクリプトはスキルにバンドルされたリソースではなく、エンジンの管理ファイルです。

コメント