Communityライティング&編集github.com

Varnan-Tech/opendirectory

競合アプリの低評価レビューを取得し、約束と実態の乖離パターンにクラスタリング。その結果から優先順位付きのコピー作成ブリーフ(ポジショニング機会を含む)を自動生成します。

opendirectory とは?

このスキルは、App StoreまたはGoogle Play上の競合アプリの低評価レビュー(1〜3★)を自動収集し、ユーザーが実際に口にした不満を「約束と実態の乖離(ブロークンプロミス)」パターンにクラスタリングします。各クラスタはレビューアの生の言葉で命名され、重み付けスコアに基づいて優先順位付けされます。さらに、ストアの説明文とレビュークラスタをクロスリファレンスすることで、アプリが約束していながら実現できていない機能や体験を特定します。最終的には、ランディングページの見出し案、広告コピーの方向性、そして競合が使うべきでない「誇大表現」への警告を含む、ワンセッションで使えるGTM(Go-to-Market)ブリーフを生成します。このスキルはClaude CodeやCursorなどのAIエージェント上で動作し、Pythonスクリプト(google-play-scraper、iTunes API)を利用してデータを収集します。検証ステップ(Self-QA)を内蔵しており、引用はすべて原文ママ、統計データの捏造禁止、9つの禁止ワードの不使用を徹底することで、信頼性の高いマーケティングインサイトを提供します。

対応✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/app-store-review-arbitrage

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

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

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

ドキュメント

app-store-review-arbitrage

競合のApp StoreまたはGoogle Play URLを入力するだけで、ワンセッションで使えるGTMブリーフを生成します。優先順位付きの苦情クラスタ、約束と実態の乖離マップ、ランディングページの見出し、広告コピーの方向性——すべて実際のレビューから抽出します。


重要ルール(Step 1の前に必読)

以下のルールは全ステップに適用されます。違反するとSelf-QA(Step 6)で失敗します。

  1. すべての引用は原文ママであること。 言い換え、文法修正、クリーニングは禁止。レビュアーの言葉をそのまま使用します。
  2. 統計データの捏造禁止。 レビュアーが明示的に類似の言葉を使っていない限り、「40%高速化」「2倍信頼性向上」などと記述しないでください。Self-QAステップでは、引用元のないパーセンテージをチェックします。
  3. クラスタ名はレビュアーの言葉を使用すること。 Step 3のアンチパターン表を参照してください。
  4. すべての見出しと広告コピーの方向性は、そのソースクラスタを引用すること。 形式: [cluster: "クラスタ名"]
  5. セクション2は常に出力に含めること。 たとえ劣化状態であっても。省略してはいけません。
  6. 生成するコピーに禁止ワードを使用しないこと: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform

Step 1 — 入力の解析とプラットフォームの検出

1つのアプリURLを含む自然言語プロンプトを受け付けます。URLを抽出します。

プラットフォーム検出:

  • apps.apple.com → App Store
  • play.google.com/store/apps/details?id= → Google Play
  • その他のURL → 処理を停止し、「直接のApp StoreまたはGoogle Play URLを提供してください。他のソースからのレビューデータは分析できません。」と応答します。

ID抽出(スクリプト実行前に行うこと):

プラットフォーム抽出するもの方法
App Store数値の app_idURL内の /id の後の数字
App Storecountryapps.apple.com/ の後の2文字コード(例: us, gb)
Google Playpackage_nameid= クエリパラメータの値

抽出した値は保持しておきます。Step 7で出力ファイル名に必要です。

ユーザーのプロンプトに product_context(自社製品の説明)が含まれている場合は、それを保存します。Step 5でコピーをパーソナライズするために使用します。


Step 2 — レビューとメタデータの収集

フルフェッチスクリプトを実行します:

python3 scripts/fetch_reviews.py "{app_url}" --output {tmpdir}/asr-raw.json

(注: {tmpdir} はオペレーティングシステムの一時ディレクトリに置き換えてください。例: macOS/Linuxでは /tmp、Windowsでは C:\Temp)

これにより、ストアの説明メタデータとレビューの両方が取得されます。

  • App Store: iTunes API — 無料、認証不要。App StoreのレビューはAppleの公開iTunes RSSフィードを介して取得されます。AppleのAPI制限によりレビューが0件になるアプリもあります。その場合は、利用可能なデータで処理を続行し、警告をログに記録します。Google Playが主要な対応パスです。
  • Google Play: google-play-scraper パッケージ — 無料、認証不要

スクリプトが失敗した場合は、stderrからエラーを読み取ります。一般的な原因:

  • パッケージがインストールされていない: pip install google-play-scraper を実行
  • アプリが見つからない: URLが現在有効な公開リストであることを確認
  • Google Play APIエラー: pip install --upgrade google-play-scraper を実行して再試行

スクリプトは収集の進行状況をstderrに出力します。完了するまで待ちます。完了後、{tmpdir}/asr-raw.json を読み取り、収集サマリーをユーザーに表示します:

✓ [N]件のレビュー(うち低評価1〜3★ [N]件)を [プラットフォーム] から収集しました
  期間: [最古] 〜 [最新]
  パッケージ: [iTunes API | google-play-scraper]

終了コードを確認:

  • 終了コード0 → 収集成功。metadata.store_description を確認。nullの場合は、その旨をメモします — セクション2は劣化状態になります。Step 3に進みます。
  • 終了コード1 → エラー(stderrメッセージを読み取り、ユーザーに表示して停止)
  • 終了コード2 → ゲート1発動(低評価レビューが10件未満)

ゲート1 — シグナル不足による停止: スクリプトが終了コード2で終了した場合、{tmpdir}/asr-raw.json から gate_message を読み取り、そのままユーザーに表示します。Step 3には進みません。部分的なブリーフは生成しません。


Step 3 — 苦情のクラスタリング

{tmpdir}/asr-raw.json から low_star_reviews を読み込みます。

すべての低評価レビューを 4〜6個の名前付き苦情テーマ にクラスタリングします。各レビューのスコアは以下の式で計算します:

complaint_weight = (4 - 評価) × 最近性係数

最近性係数:
  レビュー経過日数 ≤ 90日 → 1.0
  レビュー経過日数 91〜365日 → 0.7
  レビュー経過日数 > 365日 → 0.4

レビュー経過日数 = (今日の日付)−(レビューの date フィールド)の日数。

cluster_score = そのクラスタ内のすべてのレビューの complaint_weight の合計。

クラスタ名 — 重要ルール:

抽象的な名前をつけたくなるでしょう。それを抑えてください。レビュー内の正確な動詞と名詞を使用します。

❌ 抽象化(誤り)✅ レビュアーの言葉(正しい)
"安定性の問題""PDFにエクスポートするときにクラッシュする"
"同期の問題""電話とデスクトップ間の同期後にデータが失われた"
"収益化の摩擦""約束の14日後ではなく、3日後にペイウォールが表示される"
"パフォーマンス低下""検索するたびにアプリがフリーズする"
"オンボーディングの問題""チームメイトを招待する方法がわからない"

ルール:

  • 各レビューは正確に1つのクラスタに属する(主要テーマに割り当てる)
  • レビューが3件未満のクラスタは破棄 — ノイズとして記録
  • クラスタごとに3〜4個の原文引用を選択: まず最も低い星評価、次に最も新しいもの

ゲート2 — 最小クラスタサイズ: 3件未満のクラスタを破棄した後、残っているクラスタの数を確認します。

ゲート3 — 低信頼性フラグ: 残ったクラスタが3個未満の場合:

  • 停止しないでください。出力を続行します。
  • ブリーフヘッダーのアプリメタデータの直後に以下を先頭に追加します:

    ⚠ 低信頼性: 最小エビデンス基準(裏付けレビュー3件以上)を満たした苦情クラスタは [N] 個のみです。出力は限られたデータを反映しています。より多くのレビューを持つ競合を検討するか、評価フィルタを広げてください。

  • 出力にMedium層のクラスタ(スコア5以上)を含めます

層の分類(セクション1のリーダーボード表用):

  • Critical: スコア60以上
  • High: スコア15〜59
  • Medium: スコア5〜14(ゲート3が適用される場合のみ含める)
  • Noise: スコア5未満(破棄、含めない)

クラスタを {tmpdir}/asr-clusters.json に書き込みます:

{
  "clusters": [
    {
      "name": "レビュアーの言葉でのクラスタ名",
      "score": 34.5,
      "tier": "High",
      "review_count": 14,
      "verbatim_quotes": [
        {"rating": 1, "text": "レビュアーの正確な言葉", "date": "YYYY-MM-DD"},
        ...
      ]
    }
  ],
  "discarded_noise": 2,
  "gate_3_triggered": false
}

Step 4 — 約束と実態の乖離検出

このステップが、このスキルを既存のツールと差別化するものです。明確な名前付きステップとして実行する必要があります。

以下を読み込みます:

  • {tmpdir}/asr-raw.json の metadata.store_description
  • {tmpdir}/asr-clusters.json のすべてのクラスタ

store_description が null の場合: store_description_available: false を設定します。{tmpdir}/asr-promises.json に空の broken_promises 配列と、以下で指定する detection_note を書き込みます。Step 5に進みます。

ストアの説明が利用可能な場合:

  1. 主張を抽出します。 主張とは、アプリの動作に関する具体的で検証可能な主張のことです。完全な定義と例については references/broken-promise.md を参照してください。漠然とした最上級表現、チームの説明、プレスからの引用は除外します。

  2. クロスリファレンスします。 各主張について、すべてのクラスタ名と原文引用をチェックします。クラスタがその約束された動作の失敗を直接文書化している場合(最低3件のレビュー)、矛盾が存在します。

  3. ブロークンプロミスレコードを生成します — 確認された矛盾ごとに1つ:

    {
      "claim_text": "ストア説明からの原文",
      "complaint_cluster": "正確なクラスタ名",
      "gap_label": "「X」と主張するが、ユーザーはYと報告",
      "evidence_count": 18
    }
    

{tmpdir}/asr-promises.json に書き込みます:

{
  "store_description_available": true,
  "broken_promises": [...],
  "no_contradictions_found": false,
  "detection_note": null
}

劣化状態:

  • 説明なし: store_description_available: false、detection_note: "ストアの説明が利用できません(YYYY-MM-DDに取得、空を返しました)。ブロークンプロミスの比較は実行できません。"
  • 矛盾なし: no_contradictions_found: true、detection_note: "ブロークンプロミスは検出されませんでした。ストアの説明は苦情クラスタと比較して過剰主張しているようには見えません。"

アンチパターン(フラグを立てるべきでないもの)については references/broken-promise.md を参照してください。


Step 5 — コピーの生成

Step 3のクラスタとStep 4のブロークンプロミスを使用して、ブリーフのセクション3〜5を生成します。

コピールール(3つのセクションすべてに適用):

  • すべての見出しと方向性は、そのソースクラスタを引用すること: [cluster: "クラスタ名"]
  • 禁止ワードを使用しない: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform
  • 統計データの捏造禁止 — レビュアーが使用していない限り、パーセンテージや数値は記載しない
  • product_context が提供された場合: 「Say this」の方向性をその製品の機能に特化させる。提供されていない場合: ユーザーが埋めるポジショニングテンプレートとして記述する。
  • 見出しにはレビュアーの言葉を使用 — 実際のレビューテキストから派生させるか引用する

セクション3 — ランディングページH1バンク(3〜5個の見出し):

  • 各: "[見出しテキスト]" [cluster: "クラスタ名"]
  • 可能な限り8単語以内
  • 不満を抱えるユーザーに直接語りかける

セクション4 — 広告コピーの方向性(正確に3組):

クラスタ: [クラスタ名]
それではなく: "[競合が主張していること、または一般的な弱い代替案]"
これを言え: "[苦情エビデンスに基づいた反論]"
エビデンス: [N]人のレビュアーが [原文の苦情サマリー] と報告

セクション5 — アンチクレーム警告:

  • Step 4のブロークンプロミスごとに1つの警告
  • セクション2が劣化状態の場合: 単一の注意書き(正確な文言については references/brief-format.md を参照)

Step 6 — 自己QA

保存する前に、生成されたブリーフが以下のチェックに合格しているか確認します。いずれかのチェックが失敗した場合は、該当する項目を修正して再確認します — 不合格のブリーフは保存しません。

チェックルール
原文引用が存在するすべてのクラスタに2件以上の引用がある
禁止ワードがないセクション3〜5に9つの禁止ワードが1つも現れない
引用元のないパーセンテージがない出力内のすべての % はレビュアーの実際の言葉に遡れる必要がある
すべてのコピーが引用されているすべての見出しと「これを言え」に [cluster: "名前"] の引用がある
クラスタ数が1以上少なくとも1つのクラスタがゲート2/3を生き残っている
セクション2が存在するセクション2が出力に(任意の状態で)現れる
引用の評価が3以下すべての原文引用は1〜3★のレビューからのもの

クラスタ数に関する注記: 合格ブリーフの最小クラスタ数は1つです(3つではありません)。ゲート3の低信頼性フラグは、3つ未満のクラスタが生き残った場合を処理します — これは警告であり、失敗ではありません。自己QAは、クラスタが0個の場合にのみ失敗します。


Step 7 — 出力の保存

references/brief-format.md の形式に従って完全なブリーフを組み立てます。

以下に保存します:

docs/review-briefs/[app-id]-[YYYY-MM-DD].md

docs/review-briefs/ ディレクトリが存在しない場合は作成します。

完全なブリーフをユーザーに出力します。

一時ファイルをクリーンアップします: {tmpdir}/asr-raw.json、{tmpdir}/asr-clusters.json、{tmpdir}/asr-promises.json。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, then outputs a ranked shortlist with explainable reasoning and risk flags.

Varnan-Tech/opendirectory

Brutally honest developer-experience audit for a GitHub repo. Scores 10 DX dimensions (time-to-first-success, README clarity, visual proof, install, quick-start, docs, examples, community, trust, marketing), writes a shareable roast in the requested tone (brutal/honest/kind), produces a prioritized action plan ranked by impact × effort, and sketches an ideal README. Trigger when user says "roast my repo", "audit my README", "dx audit", "developer experience review", "score my GitHub project", "before launch checklist", or "make my repo shareable".

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF. 3–10 pages, 9 style presets, 11 page layout types. Trigger when user says "create an ebook", "design a lead magnet", "make a PDF guide", "build a gated content piece", "write a B2B ebook", "design a white paper", "create a nurture asset", or "make a PDF report".

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

関連スキル