CommunityRédaction et éditiongithub.com

Analyse d'avis et arbitrage de positionnement

Récupère les avis faibles étoiles de l'App Store et Google Play, les regroupe en schémas de promesses non tenues et génère un brief marketing classé avec opportunités de positionnement.

Qu'est-ce que Analyse d'avis et arbitrage de positionnement ?

Ce skill transforme l'URL d'une application concurrente sur l'App Store ou Google Play en un brief GTM (Go-To-Market) complet en une seule session. Il collecte d'abord les avis (1 à 3 étoiles), puis les regroupe en 4 à 6 thèmes de réclamation nommés en utilisant le langage exact des utilisateurs. L'étape clé est la détection des promesses non tenues : il extrait les assertions du descriptif du store et les confronte aux clusters de plaintes, identifiant les écarts entre ce qui est promis et ce que vivent les utilisateurs. Enfin, il génère des titres de page d'accueil, des directions de copy publicitaire et des avertissements anti-réclamation, en s'appuyant uniquement sur des citations textuelles et en interdisant tout jargon marketing vide ou statistiques inventées. Le skill est conçu pour fonctionner principalement avec Google Play et, dans une moindre mesure, avec l'App Store via l'API iTunes, et intègre des passerelles de qualité (minimum 10 avis faibles, clusters d'au moins 3 avis) pour garantir la fiabilité des résultats.

Compatible avec✓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 Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Arbitrage d'avis App Store / Google Play

Convertissez l'URL d'une application concurrente sur l'App Store ou Google Play en un brief GTM (Go-To-Market) complet en une session : clusters de réclamations classés, carte des promesses non tenues, titres de pages d'accueil et directions de copy publicitaire — le tout issu des avis textuels exacts.


Règles critiques (à lire avant l'Étape 1)

Ces règles s'appliquent à toutes les étapes. Toute violation entraîne l'échec de l'Auto-QA (Étape 6).

  1. Chaque citation doit être textuelle. Pas de paraphrase, ni de correction grammaticale, ni de nettoyage. Uniquement les mots exacts des utilisateurs.
  2. Aucune statistique fabriquée. N'écrivez pas "40 % plus rapide" ou "2 × plus fiable" à moins qu'un utilisateur n'ait explicitement utilisé un langage similaire. L'étape d'Auto-QA vérifie les pourcentages non cités.
  3. Les noms des clusters doivent reprendre le langage des utilisateurs. Étudiez le tableau des anti-modèles à l'Étape 3.
  4. Chaque titre et direction de copy publicitaire doit citer son cluster source. Format : [cluster: "nom-du-cluster"].
  5. La Section 2 est toujours présente dans la sortie — même dégradée. Ne l'omettez jamais.
  6. Aucun mot interdit dans les copies générées : puissant, robuste, fluide, innovant, révolutionnaire, optimiser, exploiter, révolutionner, transformer.

Étape 1 — Analyser l'entrée et détecter la plateforme

Acceptez une invite en langage naturel contenant une URL d'application. Extrayez l'URL.

Détection de plateforme :

  • apps.apple.com → App Store
  • play.google.com/store/apps/details?id= → Google Play
  • Toute autre URL → arrêtez et répondez : "Veuillez fournir une URL directe d'App Store ou Google Play. Je ne peux pas analyser les avis provenant d'autres sources."

Extraction de l'identifiant (à faire avant d'exécuter le script) :

PlateformeCe qu'il faut extraireComment faire
App Storeapp_id numériqueChiffres après /id dans l'URL
App StorecountryCode à 2 lettres après apps.apple.com/ (ex. us, gb)
Google Playpackage_nameValeur du paramètre id= de la requête

Conservez les valeurs extraites — vous en aurez besoin pour le nom du fichier de sortie à l'Étape 7.

Si un product_context a été fourni dans l'invite (ce que fait leur propre produit), stockez-le — il servira à personnaliser la copie à l'Étape 5.


Étape 2 — Collecter les avis et les métadonnées

Exécutez le script de récupération complet :

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

(Remarque : Remplacez {tmpdir} par le répertoire temporaire de votre système d'exploitation, par exemple /tmp sur macOS/Linux ou C:\Temp sur Windows).

Ce script récupère à la fois les métadonnées de la description du store et les avis.

  • App Store : API iTunes — gratuite, sans authentification. Les avis de l'App Store sont récupérés via le fil RSS public d'Apple. Certaines applications renvoient 0 avis en raison des limitations de l'API Apple — dans ce cas, le skill continue avec les données disponibles et enregistre un avertissement. Google Play est la voie principale prise en charge.
  • Google Play : package google-play-scraper — gratuit, sans authentification

Si le script échoue, lisez l'erreur sur stderr. Causes courantes :

  • Package non installé : exécutez pip install google-play-scraper
  • Application introuvable : vérifiez que l'URL correspond à une fiche active et en ligne
  • Erreur API Google Play : exécutez pip install --upgrade google-play-scraper et réessayez

Le script affiche la progression de la collecte sur stderr. Attendez la fin. Après la fin, lisez {tmpdir}/asr-raw.json et affichez le résumé de la collecte à l'utilisateur :

✓ Collecte terminée : [N] avis ([N] avis faibles 1–3★) depuis [plateforme]
  Période : [plus ancien] à [plus récent]
  Package : [iTunes API | google-play-scraper]

Vérifiez le code de sortie :

  • Code 0 → collecte réussie, vérifiez metadata.store_description. S'il est null : notez-le — la Section 2 utilisera l'état dégradé. Passez à l'Étape 3.
  • Code 1 → erreur (lisez le message sur stderr, transmettez-le à l'utilisateur, arrêtez)
  • Code 2 → Passerelle 1 déclenchée (moins de 10 avis faibles trouvés)

Passerelle 1 — Arrêt pour signal faible : Si le script se termine avec le code 2, lisez le gate_message depuis {tmpdir}/asr-raw.json et transmettez-le textuellement à l'utilisateur. Ne passez pas à l'Étape 3. Ne produisez pas de brief partiel.


Étape 3 — Regroupement en clusters de réclamations

Chargez low_star_reviews depuis {tmpdir}/asr-raw.json.

Regroupez tous les avis faibles en 4 à 6 thèmes de réclamation nommés. Appliquez cette formule pour noter chaque avis :

poids_réclamation = (4 - note) × facteur_récence

facteur_récence :
  âge de l'avis ≤ 90 jours → 1.0
  âge de l'avis 91–365 jours → 0.7
  âge de l'avis > 365 jours → 0.4

âge de l'avis = (date d'aujourd'hui) − (champ date de l'avis) en jours.

score_cluster = somme des poids_réclamation pour tous les avis du cluster.

Nommage des clusters — règle critique :

Vous serez tenté d'utiliser des noms abstraits. Résistez. Utilisez le verbe et le nom exacts des avis.

❌ Abstrait (incorrect)✅ Langage de l'utilisateur (correct)
"Problèmes de stabilité""Plante lors de l'exportation en PDF"
"Problèmes de synchronisation""Données perdues après la synchronisation entre téléphone et ordinateur"
"Friction de monétisation""Paywall apparaît après 3 jours, pas 14 comme promis"
"Dégradation des performances""L'application se fige à chaque fois que je recherche"
"Problèmes d'intégration""Je n'arrive pas à inviter un collègue"

Règles :

  • Chaque avis appartient à exactement un cluster (attribuez-le à son thème dominant)
  • Écartez tout cluster avec moins de 3 avis — enregistrez-le comme bruit
  • Sélectionnez 3 à 4 citations textuelles par cluster : d'abord la note la plus faible, puis la plus récente

Passerelle 2 — Taille minimale de cluster : Après avoir écarté les clusters de moins de 3 avis, vérifiez combien de clusters restent.

Passerelle 3 — Drapeau de faible confiance : S'il reste moins de 3 clusters :

  • NE vous arrêtez PAS. Continuez à produire le résultat.
  • Ajoutez ceci en préambule de l'en-tête du brief immédiatement après les métadonnées de l'application :

    ⚠ FAIBLE CONFIANCE : Seulement [N] cluster(s) de réclamations atteignent le seuil d'évidence minimum (≥ 3 avis de support). La sortie reflète des données limitées. Envisagez un concurrent avec plus d'avis, ou élargissez le filtre de notation.

  • Incluez les clusters de niveau Moyen dans la sortie (score ≥ 5)

Classification par niveau (pour le tableau de classement dans la Section 1) :

  • Critique : score ≥ 60
  • Élevé : score 15–59
  • Moyen : score 5–14 (n'incluez que lorsque la Passerelle 3 s'applique)
  • Bruit : score < 5 (écartez, n'incluez pas)

Écrivez les clusters dans {tmpdir}/asr-clusters.json :

{
  "clusters": [
    {
      "name": "nom du cluster dans le langage des utilisateurs",
      "score": 34.5,
      "tier": "Élevé",
      "review_count": 14,
      "verbatim_quotes": [
        {"rating": 1, "text": "mots exacts de l'utilisateur", "date": "YYYY-MM-DD"},
        ...
      ]
    }
  ],
  "discarded_noise": 2,
  "gate_3_triggered": false
}

Étape 4 — Détection des promesses non tenues

C'est l'étape qui distingue ce skill de tous les outils existants. Elle doit s'exécuter comme une étape distincte et nommée.

Chargez :

  • metadata.store_description depuis {tmpdir}/asr-raw.json
  • Tous les clusters depuis {tmpdir}/asr-clusters.json

Si store_description est null : Définissez store_description_available: false. Écrivez {tmpdir}/asr-promises.json avec un tableau broken_promises vide et detection_note comme spécifié ci-dessous. Passez à l'Étape 5.

Si la description du store est disponible :

  1. Extrayez les affirmations. Une affirmation est toute assertion spécifique et vérifiable concernant le comportement de l'application. Consultez references/broken-promise.md pour la définition complète et des exemples. Excluez les superlatifs vagues, les descriptions d'équipe et les citations de presse.

  2. Faites la corrélation croisée. Pour chaque affirmation, vérifiez tous les noms de clusters et les citations textuelles. Une contradiction existe lorsque le cluster documente directement l'échec du comportement promis (minimum 3 avis).

  3. Produisez des enregistrements de promesses non tenues — un par contradiction confirmée :

    {
      "claim_text": "extrait textuel de la description du store",
      "complaint_cluster": "nom exact du cluster",
      "gap_label": "Affirme X ; les utilisateurs signalent Y",
      "evidence_count": 18
    }
    

Écrivez dans {tmpdir}/asr-promises.json :

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

États dégradés :

  • Pas de description : store_description_available: false, detection_note: "Description du store indisponible (récupérée le YYYY-MM-DD, renvoyée vide). La comparaison de promesses non tenues ne peut pas être effectuée."
  • Aucune contradiction : no_contradictions_found: true, detection_note: "Aucune promesse non tenue détectée. La description du store ne semble pas exagérer par rapport aux clusters de réclamations."

Consultez references/broken-promise.md pour les anti-modèles (ce qu'il NE faut PAS signaler).


Étape 5 — Générer la copie

À l'aide des clusters de l'Étape 3 et des promesses non tenues de l'Étape 4, générez les Sections 3 à 5 du brief.

Règles pour la copie (s'appliquent aux trois sections) :

  • Chaque titre et direction doit citer son cluster source : [cluster: "nom-du-cluster"]
  • Aucun mot interdit : puissant, robuste, fluide, innovant, révolutionnaire, optimiser, exploiter, révolutionner, transformer
  • Aucune statistique fabriquée — pas de pourcentages ou de chiffres à moins qu'un utilisateur ne les ait utilisés
  • Si product_context a été fourni : personnalisez les directions "Dites ceci" en fonction des fonctionnalités de ce produit. Sinon : écrivez comme des modèles de positionnement que l'utilisateur remplira.
  • Utilisez le langage des utilisateurs dans les titres — dérivez-le ou citez le texte réel des avis

Section 3 — Banque de H1 pour page d'accueil (3 à 5 titres) :

  • Chacun : "[texte du titre]" [cluster: "nom-du-cluster"]
  • ≤ 8 mots si possible
  • Adressez-vous directement à l'utilisateur frustré

Section 4 — Directions de copy publicitaire (exactement 3 paires) :

Cluster : [nom du cluster]
Pas ça : "[ce que prétend le concurrent ou une alternative générique faible]"
Dites ceci : "[contre-affirmation fondée sur les preuves de réclamations]"
Preuve : [N] utilisateurs ont signalé [résumé textuel de la réclamation]

Section 5 — Avertissements anti-affirmations :

  • Un avertissement par promesse non tenue de l'Étape 4
  • Si la Section 2 est dégradée : une seule note (consultez references/brief-format.md pour le texte exact)

Étape 6 — Auto-QA

Avant d'enregistrer, vérifiez le brief généré par rapport à ces contrôles. Si un contrôle échoue, corrigez l'élément spécifique et revérifiez — n'enregistrez pas un brief échouant.

ContrôleRègle
Citations textuelles présentesChaque cluster a ≥ 2 citations textuelles
Aucun mot interditAucun des 9 mots interdits n'apparaît dans les Sections 3 à 5
Aucun pourcentage non citéTout % dans la sortie doit provenir de mots réels d'un utilisateur
Toute copie citéeChaque titre et "Dites ceci" a une citation [cluster: "nom"]
Nombre de clusters ≥ 1Au moins un cluster a survécu aux Passerelles 2 et 3
Section 2 présenteLa Section 2 apparaît dans la sortie (dans n'importe quel état)
Notes des citations ≤ 3Toutes les citations textuelles proviennent d'avis 1–3★

Remarque sur le nombre de clusters : Le minimum pour un brief réussi est de 1 cluster (pas 3). Le drapeau de faible confiance de la Passerelle 3 gère les cas où moins de 3 clusters survivent — c'est un avertissement, pas un échec. L'Auto-QA échoue uniquement si 0 clusters existent.


Étape 7 — Enregistrer la sortie

Assemblez le brief complet selon le format dans references/brief-format.md.

Enregistrez dans :

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

Créez le répertoire docs/review-briefs/ s'il n'existe pas.

Imprimez le brief complet à l'utilisateur.

Nettoyez les fichiers temporaires : {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.

Skills associés