CommunityEscrita e Ediçãogithub.com

Varnan-Tech/opendirectory

Busca avaliações com poucas estrelas da App Store e Google Play, agrupa-as em padrões de promessas não cumpridas e gera um briefing de cópia ranqueado com oportunidades de posicionamento.

O que é opendirectory?

Este skill transforma a URL de um concorrente (App Store ou Google Play) em um briefing de Go-to-Market (GTM) completo em uma única sessão. Ele coleta avaliações com 1 a 3 estrelas, agrupa as reclamações em clusters temáticos pontuados por peso e identifica lacunas entre o que a descrição do aplicativo promete e o que os usuários realmente relatam. O resultado é um documento com clusters ranqueados de reclamações (com citações literais), um mapa de promessas quebradas, sugestões de títulos para página inicial e direções para anúncios — tudo baseado em palavras reais de usuários, sem estatísticas inventadas. O skill suporta as plataformas App Store (via iTunes API) e Google Play (via google-play-scraper), tem gates de qualidade que impedem a geração de briefings com dados insuficientes e executa uma auto-verificação rigorosa para garantir a fidelidade das citações e a ausência de palavras proibidas.

Funciona com✓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 Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

app-store-review-arbitrage

Converta a URL de um concorrente (App Store ou Google Play) em um briefing de GTM de uma sessão: clusters de reclamações ranqueados, um mapa de promessas quebradas, títulos para página inicial e direções para anúncios — tudo originado de avaliações literais.


Regras Críticas (leia antes do Passo 1)

Estas regras se aplicam a todos os passos. Violar qualquer uma delas falha na Auto-QA (Passo 6).

  1. Toda citação deve ser literal. Sem paráfrase, sem correção gramatical, sem limpeza. Apenas as palavras exatas do avaliador.
  2. Nenhuma estatística fabricada. Não escreva "40% mais rápido" ou "2× mais confiável" a menos que um avaliador tenha usado explicitamente uma linguagem semelhante. O passo de Auto-QA verifica porcentagens não citadas.
  3. Os nomes dos clusters devem usar a linguagem do avaliador. Estude a tabela de anti-padrões no Passo 3.
  4. Cada título e direção de anúncio deve citar seu cluster de origem. Formato: [cluster: "nome-do-cluster"].
  5. A Seção 2 está sempre presente na saída — mesmo quando degradada. Nunca pule ou omita.
  6. Nenhuma palavra proibida em qualquer cópia gerada: poderoso, robusto, contínuo, inovador, revolucionário, simplificar, alavancar, revolucionar, transformar.

Passo 1 — Analisar Entrada e Detectar Plataforma

Aceite um prompt em linguagem natural contendo uma URL de aplicativo. Extraia a URL.

Detecção de plataforma:

  • apps.apple.com → App Store
  • play.google.com/store/apps/details?id= → Google Play
  • Qualquer outra URL → pare e responda: "Por favor, forneça uma URL direta da App Store ou Google Play. Não consigo analisar dados de avaliações de outras fontes."

Extração de ID (faça isso antes de executar o script):

PlataformaO que extrairComo
App Storeapp_id numéricoDígitos após /id na URL
App StorecountryCódigo de 2 letras após apps.apple.com/ (ex.: us, gb)
Google Playpackage_nameValor do parâmetro id=

Persista os valores extraídos — você precisará deles para o nome do arquivo de saída no Passo 7.

Se product_context foi fornecido no prompt do usuário (o que o próprio produto deles faz), armazene-o — usado para personalizar a cópia no Passo 5.


Passo 2 — Coletar Avaliações e Metadados

Execute o script de coleta completo:

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

(Nota: Substitua {tmpdir} pelo diretório temporário do seu sistema operacional, por exemplo, /tmp no macOS/Linux ou C:\Temp no Windows).

Isso busca tanto os metadados da descrição da loja quanto as avaliações.

  • App Store: iTunes API — gratuito, sem autenticação. As avaliações da App Store são buscadas via feed público RSS da Apple. Alguns aplicativos retornam 0 avaliações devido às limitações da API da Apple — nesse caso, o skill continua com os dados disponíveis e registra um aviso. Google Play é o caminho principal suportado.
  • Google Play: pacote google-play-scraper — gratuito, sem autenticação

Se o script falhar, leia o erro do stderr. Causas comuns:

  • Pacote não instalado: execute pip install google-play-scraper
  • Aplicativo não encontrado: verifique se a URL é uma listagem atual e ativa
  • Erro na API do Google Play: execute pip install --upgrade google-play-scraper e tente novamente

O script imprimirá o progresso da coleta no stderr. Aguarde a conclusão. Após a conclusão, leia {tmpdir}/asr-raw.json e exiba o resumo da coleta para o usuário:

✓ Coletadas [N] avaliações ([N] com poucas estrelas 1–3★) do(a) [plataforma]
  Intervalo de datas: [mais antiga] a [mais recente]
  Pacote: [iTunes API | google-play-scraper]

Verifique o código de saída:

  • Saída 0 → coleta bem-sucedida, verifique metadata.store_description. Se nulo: anote isso — a Seção 2 usará o estado degradado. Prossiga para o Passo 3.
  • Saída 1 → erro (leia a mensagem de stderr, exiba-a para o usuário, pare)
  • Saída 2 → Gate 1 acionado (< 10 avaliações com poucas estrelas encontradas)

Gate 1 — Parada por sinal baixo: Se o script sair com código 2, leia o gate_message de {tmpdir}/asr-raw.json e exiba-o literalmente para o usuário. Não prossiga para o Passo 3. Não produza um briefing parcial.


Passo 3 — Agrupamento de Reclamações

Carregue low_star_reviews de {tmpdir}/asr-raw.json.

Agrupe todas as avaliações com poucas estrelas em 4–6 temas de reclamação nomeados. Aplique esta fórmula para pontuar cada avaliação:

peso_reclamacao = (4 - avaliacao) × fator_recencia

fator_recencia:
  idade da avaliacao ≤ 90 dias  → 1,0
  idade da avaliacao 91–365 dias → 0,7
  idade da avaliacao > 365 dias  → 0,4

idade da avaliacao = (data de hoje) − (campo date da avaliação) em dias.

pontuacao_cluster = soma de peso_reclamacao para todas as avaliações no cluster.

Nomeação de clusters — regra crítica:

Você vai querer escrever nomes abstratos. Resista. Use o verbo e substantivo exatos das avaliações.

❌ Abstraído (errado)✅ Linguagem do avaliador (correto)
"Problemas de estabilidade""Falha ao exportar para PDF"
"Problemas de sincronização""Dados perdidos após sincronização entre celular e desktop"
"Atrito de monetização""Paywall aparece após 3 dias, não 14 como prometido"
"Degradação de desempenho""O aplicativo congela toda vez que pesquiso"
"Problemas de integração""Não consigo descobrir como convidar um colega"

Regras:

  • Cada avaliação pertence a exatamente um cluster (atribua ao seu tema dominante)
  • Descarte qualquer cluster com menos de 3 avaliações — registre-o como ruído
  • Selecione 3–4 citações literais por cluster: menor classificação de estrelas primeiro, depois a mais recente

Gate 2 — Tamanho mínimo do cluster: Após descartar clusters com menos de 3 avaliações, verifique quantos clusters restam.

Gate 3 — Sinalizador de baixa confiança: Se restarem menos de 3 clusters:

  • NÃO pare. Continue para a saída.
  • Anteponha isso ao cabeçalho do briefing imediatamente após os metadados do aplicativo:

    ⚠ BAIXA CONFIANÇA: Apenas [N] cluster(s) de reclamação atenderam ao limite mínimo de evidência (≥ 3 avaliações de suporte). A saída reflete dados limitados. Considere um concorrente com mais avaliações, ou amplie o filtro de classificação.

  • Inclua clusters de nível Médio na saída (pontuação ≥ 5)

Classificação por nível (para a tabela de classificação na Seção 1):

  • Crítico: pontuação ≥ 60
  • Alto: pontuação 15–59
  • Médio: pontuação 5–14 (inclua apenas quando o Gate 3 se aplicar)
  • Ruído: pontuação < 5 (descarte, não inclua)

Escreva clusters em {tmpdir}/asr-clusters.json:

{
  "clusters": [
    {
      "name": "nome do cluster na linguagem do avaliador",
      "score": 34.5,
      "tier": "Alto",
      "review_count": 14,
      "verbatim_quotes": [
        {"rating": 1, "text": "palavras exatas do avaliador", "date": "YYYY-MM-DD"},
        ...
      ]
    }
  ],
  "discarded_noise": 2,
  "gate_3_triggered": false
}

Passo 4 — Detecção de Promessas Não Cumpridas

Este é o passo que diferencia este skill de todas as ferramentas existentes. Deve ser executado como um passo nomeado e distinto.

Carregue:

  • metadata.store_description de {tmpdir}/asr-raw.json
  • Todos os clusters de {tmpdir}/asr-clusters.json

Se store_description for nulo: Defina store_description_available: false. Escreva {tmpdir}/asr-promises.json com array broken_promises vazio e detection_note conforme especificado abaixo. Prossiga para o Passo 5.

Se a descrição da loja estiver disponível:

  1. Extraia alegações. Uma alegação é qualquer afirmação específica e testável sobre o comportamento do aplicativo. Consulte references/broken-promise.md para a definição completa e exemplos. Exclua superlativos vagos, descrições de equipe e citações de imprensa.

  2. Referência cruzada. Para cada alegação, verifique todos os nomes de clusters e citações literais. Existe uma contradição quando o cluster documenta diretamente a falha do comportamento prometido (mínimo de 3 avaliações).

  3. Produza registros de promessa não cumprida — um por contradição confirmada:

    {
      "claim_text": "trecho literal da descrição da loja",
      "complaint_cluster": "nome exato do cluster",
      "gap_label": "Alega X; usuários relatam Y",
      "evidence_count": 18
    }
    

Escreva em {tmpdir}/asr-promises.json:

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

Estados degradados:

  • Sem descrição: store_description_available: false, detection_note: "Descrição da loja indisponível (buscada em YYYY-MM-DD, retornou vazia). A comparação de promessas não cumpridas não pode ser realizada."
  • Sem contradições: no_contradictions_found: true, detection_note: "Nenhuma promessa não cumprida detectada. A descrição da loja não parece exagerar em relação aos clusters de reclamação."

Consulte references/broken-promise.md para anti-padrões (o que NÃO sinalizar).


Passo 5 — Gerar Cópia

Usando clusters do Passo 3 e promessas não cumpridas do Passo 4, gere as Seções 3–5 do briefing.

Regras de cópia (aplicam-se a todas as três seções):

  • Cada título e direção deve citar seu cluster de origem: [cluster: "nome-do-cluster"]
  • Sem palavras proibidas: poderoso, robusto, contínuo, inovador, revolucionário, simplificar, alavancar, revolucionar, transformar
  • Nenhuma estatística fabricada — sem porcentagens ou números, a menos que um avaliador os tenha usado
  • Se product_context foi fornecido: torne as direções "Diga isto" específicas para os recursos desse produto. Se não: escreva como modelos de posicionamento que o usuário preenche.
  • Use a linguagem do avaliador nos títulos — derive ou cite o texto real da avaliação

Seção 3 — Banco de H1 para Página Inicial (3–5 títulos):

  • Cada um: "[texto do título]" [cluster: "nome-do-cluster"]
  • ≤ 8 palavras quando possível
  • Aborde diretamente o usuário frustrado

Seção 4 — Direções de Cópia de Anúncios (exatamente 3 pares):

Cluster: [nome do cluster]
Não isso: "[o que o concorrente alega ou uma alternativa genérica fraca]"
Diga isto: "[contra-alegação fundamentada na evidência da reclamação]"
Evidência: [N] avaliadores relataram [resumo literal da reclamação]

Seção 5 — Avisos de Contra-Alegação:

  • Um aviso por promessa não cumprida do Passo 4
  • Se a Seção 2 estiver degradada: nota única (consulte references/brief-format.md para o texto exato)

Passo 6 — Auto-QA

Antes de salvar, verifique o briefing gerado em relação a estas verificações. Se alguma verificação falhar, corrija o item específico e reverifique — não salve um briefing com falha.

VerificaçãoRegra
Citações literais presentesCada cluster tem ≥ 2 citações literais
Nenhuma palavra proibidaNenhuma das 9 palavras proibidas aparece nas Seções 3–5
Nenhuma porcentagem não citadaQualquer % na saída deve ser rastreável até as palavras reais de um avaliador
Toda cópia citadaCada título e "Diga isto" tem uma citação [cluster: "nome"]
Contagem de clusters ≥ 1Pelo menos um cluster sobreviveu aos Gates 2/3
Seção 2 presenteA Seção 2 aparece na saída (em qualquer estado)
Classificações de citações ≤ 3Todas as citações literais vieram de avaliações de 1–3★

Nota sobre a contagem de clusters: O mínimo para um briefing aprovado é 1 cluster (não 3). O sinalizador de baixa confiança do Gate 3 lida com casos em que < 3 clusters sobrevivem — isso é um aviso, não uma falha. A Auto-QA falha apenas se 0 clusters existirem.


Passo 7 — Salvar Saída

Monte o briefing completo de acordo com o formato em references/brief-format.md.

Salve em:

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

Crie o diretório docs/review-briefs/ se ele não existir.

Imprima o briefing completo para o usuário.

Limpe os arquivos temporários: {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.

Habilidades Relacionadas