Communitygithub.com

SUDARSHANCHAUDHARI/WinNow

Pesquisa dos últimos 30 dias ranqueada por autenticidade, não por engajamento bruto. Pontua cada resultado para sinais de astroturfing/bots e cobre fontes que outros ignoram — avaliações da App Store + Play Store e Pantip (Tailândia). Motor Python + skill para agente + dashboard Next.js.

O que é WinNow?

Winnow é um skill para agentes de IA (como Claude Code, Cursor ou Codex) que executa um motor Python headless para coletar conteúdo dos últimos 30 dias de fontes de avaliações e plataformas regionais. Ele pontua cada item com base em autenticidade — usando detectores de explosão, duplicatas, texto raso e anônimos — e ranqueia por engajamento ponderado por autenticidade. É útil porque resolve o problema de ruído e manipulação em pesquisas de sentimento do usuário: em vez de confiar apenas em métricas de engajamento bruto (que podem ser infladas por bots), ele fornece um sinal de confiança claro (✅ confiável, ⚠️ misto, 🚩 suspeito). O skill suporta fontes como App Store, Play Store e Pantip (Tailândia), e o agente é instruído a sintetizar um briefing honesto e curto a partir da saída estruturada do motor, sem re-ranquear ou inventar dados. O fluxo de trabalho é simples: o agente localiza e executa o motor Python com um tópico e fontes, lê o markdown de saída com classificações de confiança e bandeiras de autenticidade, e produz um resumo com manchete, pontos positivos/negativos baseados em avaliações citadas, nota de confiança e a lista ranqueada original.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add SUDARSHANCHAUDHARI/WinNow

Perguntar na sua IA favorita

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

Documentação

O que WinNow faz?

O Winnow executa um motor Python headless que coleta conteúdo dos últimos 30 dias de fontes de avaliações e plataformas regionais, pontua cada item por autenticidade (detectores de explosão / duplicata / texto raso / anônimo) e ranqueia por engajamento ponderado por autenticidade. Seu trabalho é executar o motor, ler seu markdown estruturado e sintetizar um breve resumo honesto.

O motor faz a recuperação, pontuação e ranqueamento. Você faz a prosa. Não re-ranqueie, re-pontue ou invente dados — os rótulos de confiança são computados, confie neles.

Execute o motor

Resolva SKILL_DIR para o diretório deste SKILL.md, então localize o motor. Ele está em um de dois locais conhecidos — embutido dentro do skill (instalações autônomas) ou dois níveis acima (checkout do repositório). Verifique ambos, sem busca aberta:

ENGINE=""
for cand in "$SKILL_DIR/engine/winnow.py" "$SKILL_DIR/../../engine/winnow.py"; do
  [ -f "$cand" ] && ENGINE="$cand" && break
done
python3 "$ENGINE" "<TOPICO>" --sources <fontes> --limit 25
  • Fontes padrão: appstore para um nome de aplicativo; appstore,pantip se o usuário quiser sinal regional/d a Tailândia; playstore quando o tópico é um id de pacote (contém pontos, ex. com.whatsapp).
  • Nomes de aplicativos resolvem automaticamente para um id da App Store. Ids de pacote vão para a Play Store.
  • Uma fonte morta nunca falha a execução; ela registra em stderr e continua.

Desambigue marcas ambíguas. Quando o tópico é uma palavra que também significa outra coisa (Notion o aplicativo vs. a banda; Apple a empresa vs. a fruta) e você está usando uma fonte de palavra-chave (reddit, youtube, x, pantip), VOCÊ sabe qual sentido é pretendido — então passe isso:

--context-exclude "song,lyrics,album,music video,band,movie,trailer"
--context-include "app,software,workspace,update,feature"

Esses filtros se aplicam APENAS a fontes de palavra-chave (fontes de avaliação são obtidas por id de aplicativo e já são inequívocas). Forneça uma lista de exclusão restrita para qualquer tópico cujo nome colida com um sentido comum não relacionado. Ambas as flags são no-ops se omitidas.

Leia a saída

O motor imprime um breve resumo em markdown: um cabeçalho, avisos opcionais de corpus ⚠️, depois itens ranqueados. Cada item carrega:

  • uma tag de fonte (appstore / playstore / pantip)
  • classificação N★ (fontes de avaliação)
  • trust 0.00–1.00 com um rótulo: ✅ confiável · ⚠️ misto · 🚩 suspeito
  • flags: os sinais de autenticidade que dispararam (ex. review-burst, near-duplicate)

Um aviso de corpus como "Baixa confiança no corpus (48%)" significa que o engajamento é fortemente manipulado — diga isso claramente em seu breve resumo.

Sintetize o breve resumo

Emita, nesta ordem:

  1. Manchete de uma linha sobre o que usuários reais estão realmente dizendo este mês.
  2. O que está funcionando / o que está quebrado — 2–4 marcadores, cada um baseado em uma avaliação citada. Vincule cada citação como [fonte](url).
  3. Nota de confiança — se algum item de alto rank estiver sinalizado ou a confiança do corpus estiver baixa, destaque: "N dos principais itens mostram sinais de push coordenado."
  4. Os recibos — passe a lista ranqueada do motor (ou os 5–8 primeiros).

Regras, mantidas curtas de propósito:

  • Nunca invente uma avaliação, classificação ou número. Se o motor não retornou nada, diga.
  • Cada citação vem da saída do motor. Cada link é um [texto](url) real.
  • Comece com a história de autenticidade — é todo o propósito desta ferramenta.
  • Sem travessões longos (em-dashes) na sua própria prosa; use -.

É isso. O motor é o contrato; este arquivo é enxuto por design.

Habilidades Relacionadas