Communitygithub.com

SUDARSHANCHAUDHARI/WinNow

Analyse des 30 derniers jours : classement par authenticité, pas par engagement brut. Score anti-astroturf/bots, couvre App Store, Play Store, Pantip (Thaïlande). Moteur Python + skill agent + tableau de bord Next.js.

Qu'est-ce que WinNow ?

Winnow est un skill pour agents AI (Claude Code, Cursor, Codex) qui exécute un moteur Python headless. Il collecte le contenu des 30 derniers jours provenant de sources d'avis (App Store, Play Store) et de plateformes régionales (Pantip pour la Thaïlande), puis score chaque élément selon des signaux d'authenticité (burst, duplicate, thin-text, anonymous). Le classement final est pondéré par l'authenticité, pas par l'engagement brut. L'agent ne doit pas ré-évaluer ou inventer des données : il lit le markdown structuré produit par le moteur, puis synthétise un briefing court et honnête. Le skill est utile pour les développeurs et chefs de produit qui veulent comprendre le vrai ressenti utilisateur récent, sans biais de manipulation. Il propose une interface en ligne de commande, une sortie markdown complète, et des options de désambiguïsation contextuelle pour les marques homonymes.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add SUDARSHANCHAUDHARI/WinNow

Demander à votre IA préférée

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

Documentation

Que fait WinNow ?

Winnow exécute un moteur Python headless qui extrait le contenu des 30 derniers jours provenant de sources d'avis et de plateformes régionales, score chaque élément pour l'authenticité (détecteurs de burst / duplicate / thin-text / anonymous), et classe selon l'engagement pondéré par l'authenticité. Votre tâche est d'exécuter le moteur, de lire son markdown structuré, et de synthétiser un briefing court et honnête.

Le moteur effectue la récupération, le scoring et le classement. Vous faites la prose. Ne pas re-classer, re-scorer ou inventer des données — les labels de confiance sont calculés, faites-leur confiance.

Exécuter le moteur

Résolvez SKILL_DIR vers le répertoire de ce SKILL.md, puis localisez le moteur. Il se trouve dans l’un des deux emplacements connus – inclus dans le skill (installations autonomes) ou deux niveaux au-dessus (checkout du dépôt). Vérifiez les deux, sans recherche ouverte :

ENGINE=""
for cand in "$SKILL_DIR/engine/winnow.py" "$SKILL_DIR/../../engine/winnow.py"; do
  [ -f "$cand" ] && ENGINE="$cand" && break
done
python3 "$ENGINE" "<SUJET>" --sources <sources> --limit 25
  • Sources par défaut : appstore pour un nom d'application ; appstore,pantip si l'utilisateur veut un signal régional/Thaïlande ; playstore lorsque le sujet est un identifiant de paquet (contient des points, ex. com.whatsapp).
  • Les noms d'application sont automatiquement résolus en un identifiant App Store. Les identifiants de paquet vont vers Play Store.
  • Une source morte n'arrête jamais l'exécution ; elle envoie un message sur stderr et continue.

Désambiguïser les marques ambiguës. Lorsque le sujet est un mot qui signifie aussi autre chose (Notion l'application vs le groupe ; Apple l'entreprise vs le fruit) et que vous utilisez une source par mot-clé (reddit, youtube, x, pantip), VOUS savez quel sens est visé – transmettez-le :

--context-exclude "chanson,paroles,album,clip vidéo,groupe,film,bande-annonce"
--context-include "application,logiciel,espace de travail,mise à jour,fonctionnalité"

Ces filtres s'appliquent UNIQUEMENT aux sources par mot-clé (les sources d'avis sont récupérées par identifiant d'application et sont déjà non ambiguës). Fournissez une liste d'exclusion serrée pour les sujets dont le nom entre en collision avec un sens courant non lié. Les deux indicateurs sont inopérants s'ils sont omis.

Lire la sortie

Le moteur imprime un briefing markdown : un en-tête, des avertissements de corpus ⚠️ facultatifs, puis les éléments classés. Chaque élément comporte :

  • une balise source (appstore / playstore / pantip)
  • une note N★ (sources d'avis)
  • confiance 0.00–1.00 avec un label : ✅ fiable · ⚠️ mitigé · 🚩 suspect
  • drapeaux: les signaux d'authenticité déclenchés (ex. review-burst, quasi-duplicata)

Un avertissement de corpus comme "Faible confiance corpus (48%)" signifie que l'engagement est fortement manipulé — dites-le clairement dans votre briefing.

Synthétiser le briefing

Émettez, dans cet ordre :

  1. Titre en une ligne de ce que les vrais utilisateurs disent réellement ce mois-ci.
  2. Ce qui fonctionne / ce qui ne fonctionne pas — 2 à 4 puces, chacune étayée par un avis cité. Liez chaque citation comme [source](url).
  3. Note de confiance — si des éléments haut classés sont signalés ou si la confiance du corpus est faible, mentionnez-le : "N des principaux éléments montrent des signaux de poussée coordonnée."
  4. Les preuves — transmettez la liste classée du moteur (ou les 5 à 8 premiers).

Règles, volontairement courtes :

  • Ne jamais inventer un avis, une note ou un chiffre. Si le moteur n'a rien renvoyé, dites-le.
  • Chaque citation provient de la sortie du moteur. Chaque lien est un vrai [texte](url).
  • Commencez par l'histoire d'authenticité — c'est le but même de cet outil.
  • Pas de tirets cadratins dans votre propre prose ; utilisez -.

Voilà. Le moteur est le contrat ; ce fichier est volontairement léger.

Skills associés