Communitygithub.com

redirhan/panel-tr-lite

Panel TR — トルコ語、エビデンスベースの合成フォーカスグループ。リール、ウェブサイト、投稿、オファーを公開前にトルコのユーザーカード(18-24歳から55歳以上、大都市/アナトリア/農村、ヘビー/ライトなInstagram利用者、懐疑的・低テクノロジー層を含む;Pro版では事業主やマーケティング意思決定者も追加)でテストします。各パネリストは実際に目にするもの(リールなら静止画+オンスクリーンテキスト、サイトならFirefox/WebKitのスクリーンショット、投稿なら画像)だけを評価し、トルコ語で回答します — 最初の3秒で止まるか、何を伝えているか、信頼性1-5、DM/フォロー/購入、価格(購入者)、最大の反論、具体的な改善点。グループは独立したサブエージェントで並行実行され、スクリプトが集計し、レポートは必須の正直ボックスで締めくくられます。リール、ランディングページ、投稿、オファーの公開・納品前の最終チェック、A/Bテスト(Pro版)、そしてユーザーが「パネル」「フォーカスグループ」「何人が買うか」「テスト」「異なる年齢層に見せる」「合成フォーカスグループ」と言ったときに使用します。

panel-tr-lite とは?

Panel TR(パネルTR)は、AIエージェント(Claude Codeなど)向けのスキルで、トルコ語のリール、ウェブサイト、SNS投稿、オファーを公開前に**合成フォーカスグループ**で評価します。10人(Lite版)または30人(Pro版)の視聴者カードと、Pro版では24人の購入者カードを用い、各カードは年齢、居住地域、テクノロジーリテラシー、懐疑度などを反映したエビデンスベースのペルソナです。ユーザーは刺激(静止画・スクリーンショット・テキスト)とコンテキストを用意し、スキルがサブエージェントを並列起動して各ペルソナに評価させ、結果を集計・レポート化します。Lite版は迅速なチェックに、Pro版は詳細なセグメント分析やA/B比較に適しており、報告書には必ず「合成結果は実際の市場データではない」旨の正直ボックスが含まれます。このスキルは、実際のユーザーテスト前に初期の問題発見や仮説検証に役立ちます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/redirhan/panel-tr-lite/tree/main

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Panel TR(合成フォーカスグループ)

何に役立つか: 実際のユーザーに触れる前に問題を洗い出す——理解されない提案、読まれない小さな文字、最初の3秒で誰も止まらないオープニング、特定の年齢層を遠ざける要素など。そうではないもの: 販売予測や市場調査。数値は合成回答の集計であり、決して「市場の何%」ではありません。

バージョン(EDITIONファイル):Lite = 10の視聴者カード、単一選択、すぐに使える簡易レポート。 Pro = 30の視聴者カード+24の購入者カード(10セグメント)、A/Bモード、セグメント表とグラフ、別レポートライター。 Pro専用の手順は以下に (Pro) と記載。Liteではスクリプトがそれらを丁寧に拒否します。

ファイル

SKILL.md                    このファイル
EDITION                     lite | pro
config.example.yaml         コピー → config.yaml(パス、ブラウザ、ベースレート)。絶対パスは不要
requirements.txt            PyYAML, Pillow, playwright(サイトモード用)
personas/viewers.yaml       視聴者カード(Lite 10、Pro 30)
personas/buyers.yaml        購入者カード(Proのみ、24)
sources/index.yaml + *.md   カードが参照する公開情報の要約(TÜİK、DataReportal、...)
prompts/persona_batch.md    グループサブエージェントへの指示(panel.py が plan を埋める)
prompts/aggregator.md       (Pro) レポートライターへの指示(panel.py が report-prompt を埋める)
scripts/make_stimulus.py    動画/サイト/投稿 → 静止画、スクリーンショット、stimulus.md
scripts/panel.py            doctor | validate | cite | init-run | plan [--dry-run] | report-prompt (Pro)
scripts/aggregate.py        responses/*.json → 表、グラフ、正直チェック、簡易レポート
examples/demo-kafe-reel/    架空のカフェのリールを使ったエンドツーエンドの実行例

以下、S = このスキルのフォルダ(通常 ~/.claude/skills/panel-tr)、PY = python3(推奨は S/.venv/bin/python)。実行フォルダは config.yaml 内の runs_dir に作成されます(デフォルトは ~/panel-tr-runs)。

手順

  1. 初回セットアップ時/問題発生時: PY S/scripts/panel.py doctor(依存関係、ffmpeg、ブラウザ、バージョン)。 カードを変更した場合: PY S/scripts/panel.py validate がエラー0であること。 PY S/scripts/panel.py cite V07 はカードとそれが参照する情報源を並べて表示します。
  2. 実行フォルダ: RUN=$(PY S/scripts/panel.py init-run --slug kafe-reels-v2) → RUN/inputs/ テンプレートが作成されます。
  3. 入力を記述(RUN/inputs/)、中立的なトルコ語で、あなた自身のレビューに基づいて:
    • context.txt — ユーザーがこれをどこでどのように見るか(「Reelsのフィードで目にします。共有しているアカウントは@x。説明文はあり/なし」)。共有アカウントは、アプリ上で実際に表示される場合のみ記述。誰が作ったか、何を目的としているか、どのバージョンを好むかは決して書かないでください。
    • onscreen.txt(動画)— 画面上のすべてのテキスト、時間範囲付き、画面上に表示されたままに。
    • audio.txt(動画)— 聞こえるもの、事実として:生音かどのトラックか、何秒からか、会話/効果音の有無、映像と整合しているか。パネリストには「私たちの分析 — あなたはこれを聞いていません」という見出しで表示されます。
    • caption.txt(投稿/リール)— 公開される予定の説明文(あれば)。
  4. 刺激(選択肢ごとに1つ;A/Bの場合は stimulus_A、stimulus_B):
    PY S/scripts/make_stimulus.py video IN.mp4 RUN/stimulus --onscreen RUN/inputs/onscreen.txt --audio RUN/inputs/audio.txt [--caption RUN/inputs/caption.txt] [--transcript]
    PY S/scripts/make_stimulus.py site https://ornek.com RUN/stimulus        # またはローカルの .html
    PY S/scripts/make_stimulus.py post a.jpg,b.jpg,c.jpg RUN/stimulus --caption RUN/inputs/caption.txt
    
    動画:0,0/0,5/…/2,5 秒の静止画、その後毎秒+最後のフレーム;sheet_00_ilk3sn.jpg と各フレームの下にタイムスタンプが付いた2〜3番のシート;--transcript は会話がある場合(faster-whisper / openai-whisper がインストールされていれば)テキストを追加。サイト:Playwright Firefox(デフォルト)または WebKit — デスクトップ 1440×900 とモバイル 390×844、最初の画面+全ページを2画面分のチャンクで、さらに見えるテキストも。Chrome / Chromium / Chrome for Testing は決して起動しません。 自分でページを開き、onscreen.txt がフレームと一致することを確認してください。
  5. パネルを計画:
    PY S/scripts/panel.py plan --run RUN --panel viewer --n 10 --batches 2 --stimulus RUN/stimulus --context-file RUN/inputs/context.txt [--action "…"] [--seed 7] [--dry-run]
    PY S/scripts/panel.py plan --run RUN --panel viewer --n 30 --batches 6 …                                   (Pro)
    PY S/scripts/panel.py plan --run RUN --panel buyer --n 24 --batches 5 --segments kafe_restoran,emlak,… …   (Pro)
    PY S/scripts/panel.py plan … --stimulus-a RUN/stimulus_A --stimulus-b RUN/stimulus_B                     (Pro, A/B)
    
    サイズ:クイックチェック 10人(2×5);フルチェック(Pro)30視聴者(6×5)および/または24購入者(5×~5)。 視聴者選択はInstagramトルコの年齢分布に基づいて重み付け(config: viewer_age_weights、出典NapoleonCat)、各年齢層から少なくとも1人;約20%の「ターゲット外」ユーザー(--out-share);--local İzmir でその都市のユーザーを優先;--ids で手動選択。各パネルには少なくとも1人の懐疑的/ターゲット外ユーザーが含まれます。 A/B(Pro):選択肢は「選択肢1/2」と表示;奇数のグループは最初にA、偶数のグループは最初にBを表示;キーは plan.json のみに保存され、どのプロンプトにも含まれません。 デフォルトのアクション質問が合わない場合は --action で変更(「このリールを見て、今週末に行きますか?」)。
  6. グループを実行 — 各グループごとに別々の新しいサブエージェント、すべて並列。 エージェントツールでは汎用エージェントを使用し、フォークは使用しないでください(フォークは私たちのコンテキストと期待を引き継ぎます)。プロンプト: "Read <RUN>/batches/batch_NN.md and do exactly what it says. Write only the JSON file it names." 各サブエージェントは自分のプロンプトファイルと画像のみを見ます。その後、各 RUN/responses/batch_NN.json ファイルが存在することを確認;失敗したグループは同じプロンプトで一度再実行します。
  7. 集計: PY S/scripts/aggregate.py RUN --title "…" [--real-people "…"] → RUN/data/panel_data.md、 chart_aksiyon.png、chart_ilk3sn.png、all_answers.md とチェック:スキーマ、根拠(表示されていないフレームへの言及=ユーザーが何かを捏造した)、カードエコー(ユーザーが自分のカードを繰り返した)、単一性(グループ内 vs グループ間の単語重複)。Lite ではここで RUN/PANEL_REPORT.md 簡易レポートも作成します。 Pro ではさらに各ディメンションの表とセグメントグラフ(chart_aksiyon_<boyut>.png)およびA/Bの好みを作成します。
  8. (Pro) レポート: PY S/scripts/panel.py report-prompt --run RUN --title "…" --real-people "…" → RUN/aggregator_prompt.md。新しいサブエージェントに渡す("Read … and do it") → RUN/PANEL_REPORT.md (クラスタリングされた反論、優先順位付き修正、セグメントコメント)。レポートを all_answers.md と比較して読むこと(引用は実際のもの、数字は変更されていない必要があります)。
  9. ユーザーに伝える(トルコ語):数字を使った3〜5行の結果、最初の3つの修正点、正直ボックスの一文、そして実際の3〜5人のユーザーが必要な理由。パネルはユーザーやクライアントの好みを覆しません。

ルール

  • まずエビデンス。 各カードの属性は [ANAHTAR:Fnn](sources/ 内の事実行)または [varsayım] で終わります。 panel.py validate はすべての参照をチェックします。現在、属性の約半数が [varsayım] です(性格や好みに関する公開測定データが存在しないため) — レポートはこの割合を表示します。自分の調査を追加するには、sources/ 以下に "Fnn ..." 行を含む .md ファイルを作成し、sources/index.yaml にキーを追加してください。
  • カードにフィクションやマーケティング理論はありません。 カードはユーザーに関する事実(職業、都市、予算、習慣)を保持し、私たちの見解(「最初の2秒が重要」など)は含めません。そうしないと、パネルは私たち自身の信念を反映するだけになります。
  • 意図的な多様性: 懐疑論者、価格敏感層、低テクノロジー層、農村部在住者、保守層、Facebook中心の高齢者、ターゲット外ユーザーはそのまま残します。彼らの「ノー」はターゲティング情報です。
  • 表示されたものだけを評価。 ユーザーはフレーム、スクリーンショット、画像、そして私たちが書いたテキスト/音声の事実を見ます。動画は視聴しておらず、音声も聞いていません。各回答は≥2フレームに基づきます。評価できないものは goremedigim フィールドに入ります。音声は常に「私たちの分析」であり、「聞いた」ではありません。
  • ブラインドテスト: context/onscreen/audio ファイルには、作成者、「私たちのバージョン」、または期待される回答は含まれません。A/Bラベルはニュートラルで順序はバランスが取れています。
  • 丁寧ではなく、キャリブレーション: プロンプトは実際のベースレートを持ちます(config.yaml calibration;デフォルトは Click Analytic / Socialinsider のエンゲージメント率と Hunter のコールドメール返信率、出典 sources/EB_*.md 参照)。自分のアカウントの実際のレートを知っている場合はそれを記入してください。過半数が「DMを送る」と言うパネルは、成功ではなくレッドフラグです。
  • 独立したコンテキスト: グループごとに1つのサブエージェント;グループ内では各ユーザーが順番に、前のユーザーの文を使用せずに記述されます。aggregate.py が単一性の警告を発した場合は、より小さいグループ(3)で再実行してください。
  • 数字はスクリプトが数え、言葉はモデルが書く。 レポートライターは数字を捏造したり、再計算したりできません。
  • 正直ボックスはすべてのレポートで必須: 合成 ≠ 市場データ;3〜5人の実際のユーザーで検証(最初の3秒で止まるか?一言で何を伝えているか?その後どうするか?)。
  • 回答はトルコ語で、ユーザー自身の言葉で。引用ではトルコ語の İ/ı を保持。
  • コスト:グループあたり約6〜8画像;10人の実行 ≈ 2並列サブエージェント;30人の実行 ≈ 6サブエージェント+1レポートライター。 ドラフトにはクイックチェック(10)、最終版にはフルパネル(Pro、24-30)。
  • プライバシー:実行フォルダはローカル。クライアントの素材を他の場所にアップロードしません。共有する前に、クライアント名や個人データを含む入力をクレンジングしてください。

出力フォルダ

RUN/inputs/{context,onscreen,audio,caption}.txt
RUN/stimulus[_A|_B]/{stimulus.md,stimulus.json,sheet_*.jpg,frames/|shots/|post/}
RUN/plan.json  RUN/batches/batch_NN.md  RUN/responses/batch_NN.json
RUN/data/{panel_data.md,panel_data.json,all_answers.md,chart_*.png}
RUN/PANEL_REPORT.md            (Lite: 簡易レポート;Pro: レポートライターのレポート、簡易レポートは data/quick_report.md)
RUN/aggregator_prompt.md       (Pro)

関連スキル