feedback-analysis について
feedback-analysisは、AppFollowのアプリレビューと評価を読み取り専用で分析するスキルです。アプリ、コレクション、サブセットを対象に、カバレッジを考慮した傾向や異常、フィードバックのテーマをレポートします。
主な機能
- 01レビューと評価の傾向分析
- 02アプリ・コレクション・サブセット指定
- 03カバレッジを考慮した分析結果
- 04JSON・HTML・Markdownレポート
活用シーン
- 012つの期間のフィードバック比較
- 02繰り返し発生する不具合や要望の特定
- 03コレクション内の指定アプリの分析
MCP 対応
関連スキルのusing-appfollowを通じてAppFollowのツールを使用します。利用可能なツールを確認し、任意ツールがない場合は記載された代替手順に切り替えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ appfollow/ appfollow-ai-toolkit --skill feedback-analysisインストール後、Claude Code で/feedback-analysisを入力して読み込まれたか確認します。
同梱ファイルreferences/method.mdreferences/report-template.html
詳細
feedback-analysis
まず using-appfollow を読んでください。このスキルは読み取り専用です。書き込みペアを呼び出すことはありません。
入力
- scope: アプリ(
ext_id+store)、コレクション全体、または1つのコレクションからユーザーが選択したアプリのサブセット(例:「 からこの3つのアプリだけ」)。1つのレポートで複数のコレクションを対象にすることは、まだサポートされていません(今後対応予定)。 - window: デフォルトは直近30日間。比較対象は、その直前の同じ期間です。
- country / lang(任意)。
- depth:
quick|standard|deep= 1回の取得あたりのget_reviewsページ上限が2/5/10です。コレクション全体の取得では上限が1回適用され、アプリ単位とサブセットの取得ではアプリごとに適用されます。デフォルトはdeepです。quick/standardは、ユーザーから明示的にリクエストされた場合にのみ使用します。 - テストのフィードバック(任意、Google Play のみ):クローズドまたはオープンのテストトラックでテスターが残した内容です。レビューとは別のセットで、デフォルトでは無効です。ユーザーから明示的にリクエストされた場合にのみ取得します(Gather のステップ D)。
2つのティア、実行時にプローブ
公開されているツール一覧を読み、プランを選択してください(ツールキットと MCP のリリース系列は独立しています)。
- ティア A(常時):
whoami、list_collections、list_apps、get_reviews、get_ratings_history。 - ティア B(プローブで利用不可と判明した場合は縮退):
reviews_semantic、get_reviews_summary、get_reviews_ai_summary。 - 縮退可能、アプリレベル(プローブで有無を判定するティアではありません):
get_gp_console_ratings— 縮退ルールについては Gather のステップ B を参照してください。
Gather
- セッション(
using-appfollow)。 A. スコープの解決。ext_idのみが指定されている場合でも、コレクションの検索は必須です。get_reviews、get_reviews_summary、get_gp_console_ratingsにはコレクションのapps_id(list_collectionsのcollectionId)を指定し、get_reviews_ai_summaryにはコレクションのcollection_name(collectionCode)とstoreを指定します。list_apps(apps_id)から、各アプリのextId(ext_id引数)を取得できます。また、storeは正式名称で返されるため、store引数を指定する前に短縮コードへ変換してください(using-appfollow→references/tool-map.md)。コレクション全体を対象とする場合は、そのコレクションに属するアプリ(list_appsのisCompetitor: false)のみを対象にします。以下のアプリ単位の呼び出しは、すべてそのアプリに対して実行して ください。一部を対象とする場合は、list_collectionsでコレクションを解決し、list_appsでそのアプリを一覧表示してから、 選択したアプリのみのデータを収集します。scope.type: "collection_subset"を出力し、collection_nameを設定して、appsにはコレクション全体ではなく選択したアプリを設定してください。 B. まず低コストの集計を実行します。 アプリごとに、両方の期間をカバーするget_ratings_historyを1回呼び出します (ext_idと短縮形のstore、period=daily、type=total、countryは1つ。ユーザー指定の国があればそれを、 なければall)。全期間のデータが1回の呼び出しで返されるため、ページ分割は不要です。クライアント側で分割して ください。現在の期間について、Cのステップのスコープでget_reviews_summary(Tier B)を1回呼び出します (apps_id。Cのステップでアプリ単位の取得を行う場合はext_idも指定)。total.value、previous、diffには 現在の期間と、その直前の同じ長さの期間のデータが含まれます。また、total.valueはCのステップで取得する レビューの件数を見積もるために使用します。レビューの各ページには合計件数が含まれません。get_gp_console_ratings(apps_idと各Google Playアプリのext_id、レポート期間のfromとto、fields: ["ratings"])は取得できない場合があります。Google Play Consoleがアプリに接続されていない場合や、 サーバー側で機能を利用できない場合があります。エラー(FEATURE_DISABLED、VALIDATION_ERROR、UNKNOWN_TOOL、その他のエラー)が発生した場合、またはレスポンスが空の場合は、GP Consoleの評価シグナルを省略し、 レポートに欠落を記載して続行してください。App Storeの評価履歴の取得には影響しません。この呼び出しを理由に 分析全体を失敗させないでください。 C. ナラティブ。 アプリごとに、レポート期間のfromとto、アプリのext_id、コレクションのcollection_name(collectionCode)、短縮形のstoreを指定してget_reviews_ai_summaryを呼び出します (エラーが発生した場合はスキップしてください。AIサマリー機能が利用できない場合は、FEATURE_DISABLEDまたはACCESS_DENIEDが返されます)。reviews_semantic— クライアント側の分類を第一の代替手段とします。続いて、get_reviewsで生のレビューを ページ単位で取得します。コレクション全体の場合は1回の取得(apps_id、ext_idなし。対象はそのコレクションに 属するアプリのみで、コレクションの競合アプリは除外されます)、アプリまたは一部のアプリを対象とする場合は アプリごとに1回取得します(apps_idとext_id)。各nextCursorをcursorとして渡してページを取得し (引数は同じ)、深度上限に達するまで続けます。nextCursorがnullまたは存在しない場合は、それより前に 終了します。Bのステップで得た合計件数に対する取得率を記録してください(references/method.md)。 D. テストフィードバック(オプトイン、Google Play)。 これは別のレビューセットです。Google Playアプリでget_reviewsを呼び出すと、通常は公開レビューのみが返されますが、testing_feedback: trueを指定すると、 テストフィードバックのみが返されます(typeList: ["beta"])。1回の呼び出しで両方を取得することはできず、 公開レビューのセクションに統合してはなりません。テスター、ベータ版、テストトラックのフィードバックを明示的に ユーザーが求めた場合にのみ実行してください。レポート期間について、Google Playアプリごとにget_reviewsを 別途呼び出し、各呼び出しにコレクションのapps_id、そのアプリのext_id、testing_feedback: trueを指定します。 ページ分割と深度上限はCのステップと同じです。他のストアではこのフラグは無視され、常に公開レビューが返されるため、 対象外としてください。ワークスペース全体に対してtrueを指定してはならず、typeListにbetaを含むレビュー のみを対象にしてください。get_reviewsの引数にtesting_feedbackが含まれていない場合は、このステップを スキップしてその旨を記載してください。このフラグに対応していないサーバーでは、公開レビューが返されます。 結果が空でもエラーではありません。期間内にテストフィードバックがない場合、またはAppFollowにGoogle Play Consoleが 接続されていない場合がありますが、ツールはそのどちらかを示しません。結果は空として報告し、再試行しないでください。 ユーザーがテスターからのフィードバックのみを求めた場合は、ステップ0、A、Dを実行し、BとCはスキップして、 テスト用セクションのみを出力してください。公開レビューとは分けて分析してください(references/method.md)。
分析
references/method.md に従います。KPI と増減、日次平均と 7 日間の移動傾向、明示的なしきい値を用いた異常検出ヒューリスティックを確認します。バグ/機能の抽出は、セマンティック分析を優先し、デフォルトのフォールバックとしてクライアント側で分類します。カバレッジによるゲーティングを適用し、テキスト由来の調査結果が 60% の基準を下回る場合は、「参考情報のみ」に格下げします。評価由来の調査結果には、カバレッジによるゲーティングを適用しません。各アプリの評価件数(最新の get_ratings_history 行の starsTotal)に基づいてロールアップの重みを付け、アプリをまたぐクラスターを affected_apps に統合します。
エラー時の対応(using-appfollow)
INSUFFICIENT_CREDITS の場合は停止し、カバレッジに関する注記を含む部分的なレポートを出力します。RATE_LIMITED の場合は、バックオフを 1 回行ってから続行します。重要でない呼び出しで NETWORK_ERROR/UPSTREAM_ERROR が発生した場合は、そのセクションをスキップして処理を続行します。Tier-B ツールがない場合は、文書化されたフォールバックを使用します。1 つのツールのエラーでレポート全体を失敗させないでください。
出力
./appfollow-reports/<report_id>/ に書き込みます。
findings.json—appfollow.toolkit.findings/v1、report_type:"feedback"。書き込む前にschemas/findings.schema.jsonに照らして検証します。各調査結果には、安定したid、type、title、description、severity、priority_hint、affected_apps、metrics、evidence(レビュー ID を用いた、200 文字以下の引用 3~5 件。パーマリンクの方式はありません)、suggested_labels、安定したdedup_key(再実行時に重複を作成せず更新できるようにするため)、status:"proposed"を含めます。report.html—references/report-template.htmlに内容を入力します。SVG チャートはインラインで埋め込み、外部リクエストは行いません。report.md— 同じ内容を Markdown 形式で記載します。
Claude Code では、HTML アーティファクトも公開します。Codex では、ファイルを書き込み、そのパスを伝えます。
調査結果の引き継ぎ
ユーザーには、接続済みのトラッカーエージェントを使って、自身のトラッカーに findings.json を登録できると伝えます。このツールキットからトラッカーにアクセスすることはありません。