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 :
appstorepour un nom d'application ;appstore,pantipsi l'utilisateur veut un signal régional/Thaïlande ;playstorelorsque 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.00avec un label : ✅ fiable · ⚠️ mitigé · 🚩 suspectdrapeaux: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 :
- Titre en une ligne de ce que les vrais utilisateurs disent réellement ce mois-ci.
- Ce qui fonctionne / ce qui ne fonctionne pas — 2 à 4 puces, chacune étayée par un
avis cité. Liez chaque citation comme
[source](url). - 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."
- 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.