Créer une skill Claude Code pour fact-checker les news
- Publié le
- ·15 min de lecture
Cette skill repose sur un LLM (Claude) pour orchestrer les recherches et synthétiser les résultats. Malgré le croisement de sources (web, APIs fact-checking, publications scientifiques) et les étapes de vérification intégrées, un LLM reste susceptible de produire des erreurs factuelles, des raccourcis ou des omissions. Les rapports générés sont un point de départ pour votre propre jugement, pas une vérité absolue.
Encore un titre trop beau pour être vrai
Mardi matin. Un post LinkedIn tombe dans mon feed : "La plus grosse réserve d'hydrogène naturel au monde découverte en Moselle ! La Moselle, nouveau centre du monde !" Avec un beau visuel Sciences et Avenir et des emojis fusées.
Vrai ? Exagéré ? Inventé de toutes pièces ?
Pour le savoir, faut retrouver l'article original, identifier qui a fait la découverte et dans quel labo, vérifier les chiffres, chercher si des fact-checkers s'y sont déjà collés, comparer avec d'autres gisements dans le monde, et détecter les biais de présentation - genre le conditionnel qui se transforme magiquement en affirmatif d'une reprise à l'autre.
Ça fait 1 à 2 heures de boulot. Par news. Non merci.
J'avais déjà construit une skill pour vérifier les affirmations scientifiques (/science-check). Mais le fact-checking de news, c'est pas le même métier. On vérifie pas une étude PubMed, on vérifie un titre de journal. Les biais sont différents : sensationnalisme, omission de contexte, confusion ressource/réserve, conditionnel qui disparaît dans les reprises...
D'où /fact-check.
Ce que ça donne concrètement
La commande :
/fact-check "la plus grosse réserve d'hydrogène naturel au monde" en Moselle
Ou directement avec un screenshot (oui, ça marche) :
/fact-check /chemin/vers/screenshot.png
Et 2 minutes plus tard :
- [x] Affirmation extraite et decomposee en sous-affirmations
- [x] Source d'origine classifiee (fiabilite)
- [x] Phase PRE-CHECK : APIs fact-checking interrogees
- [x] Phase RECHERCHE : 4 recherches paralleles lancees
- [x] Phase APPROFONDISSEMENT : sources primaires consultees
- [x] Phase CROISEMENT : verification croisee des faits cles
- [x] Phase BIAIS : detection des biais et manipulation
- [x] Phase SYNTHESE : rapport genere avec verdict
# Fact Check
**Affirmation :** "La plus grosse réserve d'hydrogène naturel au monde"
en Moselle, découverte "unique au monde"
**Source :** Sciences et Avenir — Fiabilité : Tier 2
**Verdict global :** EXAGERE
**Confiance :** ELEVE
---
## Résumé
La découverte d'hydrogène naturel en Moselle est réelle et
scientifiquement documentée par le CNRS. Les concentrations mesurées
(15% à 1 100m) sont effectivement inédites. En revanche, "plus grosse
réserve au monde" repose sur des estimations théoriques (34-46 Mt) que
les chercheurs eux-mêmes présentent au conditionnel. "Unique au monde"
est trompeur : d'autres gisements existent (Mali, Australie, Oman).
## Décomposition des affirmations
Sous-affirmation │ Verdict │ Confiance
─────────────────────────────┼──────────────┼────────────────────────
Gisement d'H₂ en Moselle │ VRAI │ ELEVE (CNRS, FDE, AFP)
"Plus grosse réserve" │ PLUTOT VRAI │ MOYEN (conditionnel)
"Unique au monde" │ TROMPEUR │ ELEVE (Mali, Australie)
"Nouveau centre du monde" │ EXAGERE │ ELEVE (ajout LinkedIn)
## Biais détectés
- Conditionnel supprimé : le CNRS titre "Un gisement géant ?"
avec point d'interrogation, les reprises suppriment le "?"
- Confusion ressource/réserve : 34-46 Mt = ressource théorique,
pas réserve prouvée exploitable
- "Unique au monde" : unique par la concentration, pas par
l'existence du phénomène (Mali depuis 1987)
## Sources consultées (12)
[1] CNRS Le journal — "Un gisement géant d'hydrogène ?"
[2] CNRS News — "A gigantic hydrogen deposit?"
[3] Ministère de l'Économie — Permis PER Trois-Évêchés
[4] The Conversation — Pironon & de Donato (2023)
[5] France Bleu — Forages Moselle (jan. 2026)
[6] Connaissance des Énergies / AFP (jan. 2026)
[7] Techniques de l'Ingénieur — Analyse prudente
[8] Reporterre — Critiques environnementales
[9] Royal Society — "Scientific rigor needed"
[10] Nature — Étude gisement Mali
[11] Science Advances — Modèle global H₂
[12] World Economic Forum — 5 questions critiques
Le verdict c'est pas "FAUX". C'est "EXAGERE". La nuance compte. La découverte est réelle, les chiffres sont plausibles, mais la présentation médiatique gomme les incertitudes et le conditionnel des chercheurs. Le CNRS écrit "pourrait être" avec un point d'interrogation, et trois reprises plus tard ça devient une affirmation en gras avec des emojis.
Pourquoi pas juste étendre /science-check ?
J'y ai pensé. Et j'ai essayé, pendant une bonne heure, avant de comprendre que ça tenait pas la route.
| Aspect | /science-check | /fact-check |
|---|---|---|
| Cible | Affirmation scientifique/santé | News, titre d'article, post social |
| Sources | PubMed, Cochrane, Semantic Scholar | Web, APIs fact-check, sources primaires |
| Verdicts | CONFIRME / REFUTE / PREMATURE | VRAI / EXAGERE / TROMPEUR / FAUX |
| Biais cherchés | Financement industrie, petit échantillon | Sensationnalisme, omission, clickbait |
| Agents parallèles | 3 (méta-analyses, risques, critique) | 4 (faits, officiel, debunk, contexte) |
| Phase spécifique | Auto-vérification (checklist qualité) | Détection de biais (patterns) |
Deux métiers, deux skills. Un chirurgien et un journaliste d'investigation utilisent pas les mêmes outils.
La Google Fact Check API
C'est la grosse nouveauté par rapport à /science-check. Avant de lancer les recherches web, on interroge la base de données mondiale des fact-checks pro. AFP Factuel, Snopes, PolitiFact, Les Décodeurs... Si quelqu'un a déjà vérifié l'affirmation, autant le savoir avant de mobiliser 4 agents.
Obtenir la clé API
Gratuit. Vraiment.
- Aller sur Google Cloud Console
- Créer un projet (ou en sélectionner un existant)
- Activer "Fact Check Tools API"
- Créer une clé API
Ajouter dans votre ~/.config/fish/config.fish (ou .bashrc / .zshrc) :
# Fish
set -gx GOOGLE_FACTCHECK_API_KEY "votre_cle_ici"
# Bash/Zsh
export GOOGLE_FACTCHECK_API_KEY="votre_cle_ici"
Ce que ça renvoie
curl -s "https://factchecktools.googleapis.com/v1alpha1/claims:search\
?query=hydrog%C3%A8ne+naturel+Moselle\
&languageCode=fr\
&key=${GOOGLE_FACTCHECK_API_KEY}" | python3 -m json.tool
Si un fact-check pro existe, vous obtenez le verdict, le nom du fact-checker (genre AFP Factuel), et le lien vers l'article complet. Si rien n'existe - comme pour notre hydrogène en Moselle - la réponse c'est {}. Un JSON vide. Dans les deux cas c'est utile : soit on a un raccourci, soit on sait qu'on est en terrain vierge et que personne s'y est encore collé.
La skill gère les deux. Et si la clé API est pas configurée du tout, elle passe direct à la recherche web. Pas d'erreur, pas de blocage.
Les serveurs MCP
La skill réutilise les mêmes MCP que /science-check :
- PubMed MCP (
mcp-simple-pubmed) - accès direct à l'API Entrez de PubMed - Paper Search MCP (
paper-search-mcp) - recherche multi-sources : PubMed, arXiv, bioRxiv, Google Scholar
C'est l'Agent D (contexte et nuance) qui s'en sert quand le sujet s'y prête. Pour l'hydrogène en Moselle, il a fouillé Google Scholar pour trouver les publications sur les réserves mondiales d'H2 naturel. Pour un fact-check politique ou économique, il se rabat sur WebSearch - logique, y'a pas de méta-analyse sur les promesses électorales.
Si vous avez déjà le ~/.claude/mcp.json de la skill /science-check, rien à ajouter. C'est les mêmes.
6 fichiers, pas un seul gros
La skill vit dans ~/.claude/skills/fact-check/ (voir sur GitHub) :
fact-check/
├── SKILL.md # Instructions principales (148 lignes)
├── VERDICT_SCALE.md # Échelle de verdicts à 8 niveaux
├── SOURCE_RELIABILITY.md # Grille de fiabilité des sources (5 tiers)
├── BIAS_PATTERNS.md # Patterns de biais et manipulation
├── REPORT_TEMPLATE.md # Template du rapport final
└── API_INTEGRATION.md # Intégration Google Fact Check API
Même logique que /science-check : le SKILL.md reste court, les références sont dans des fichiers séparés que Claude charge à la demande. Progressive disclosure - Claude lit le fichier que quand il en a besoin, pas avant.
5 fichiers de référence au lieu de 3. Le fact-checking de news demande plus de grilles de lecture : biais médiatiques, fiabilité des sources par type de média, échelle de verdicts plus fine. J'ai essayé de tout mettre dans 3 fichiers comme science-check, le résultat était un bordel illisible.
Le SKILL.md
Le frontmatter YAML dit à Claude quand déclencher la skill, le corps markdown lui dit comment bosser. Voici le début :
name: fact-check
description: "Verifie la veracite d'une information, article ou affirmation
en croisant sources web, papers scientifiques, APIs de fact-checking et
positions officielles..."
user-invocable: true
argument-hint: "[URL, texte ou description de l'affirmation a verifier]"
allowed-tools:
- Agent
- Bash
- Read
- WebSearch
- WebFetch
- mcp__pubmed__search_pubmed
- ...
Le workflow en 8 phases (extraction → classification → pré-check API → 4 recherches parallèles → approfondissement → croisement → biais → synthèse) et les règles complètes sont dans le SKILL.md sur GitHub.
Ce qu'il faut retenir du frontmatter
La description est longue. C'est voulu. Claude a une fâcheuse tendance à sous-déclencher les skills - j'en ai parlé dans l'article sur /science-check et c'est toujours vrai. En listant les domaines (science, technologie, énergie, économie, géopolitique) et les formulations possibles de l'utilisateur ("si une info est vraie, fiable, exagérée ou fake"), on pousse Claude à déclencher la skill au bon moment. En pratique j'utilise surtout l'invocation directe /fact-check, mais c'est rassurant de savoir que ça se déclenche aussi tout seul quand je pose la question naturellement.
$ARGUMENTS plutôt que AskUserQuestion. Ma première version demandait systématiquement à l'utilisateur de confirmer l'affirmation. Redondant et pénible. Quand vous tapez /fact-check "hydrogène Moselle", Claude a déjà l'argument. Le fallback AskUserQuestion sert que si vous tapez /fact-check tout court sans rien derrière.
Read dans les allowed-tools. C'est grâce à ça que les screenshots marchent. Claude Code est multimodal : un Read sur un .png retourne le contenu visuel. Du coup la skill peut fact-checker directement une capture d'écran de tweet ou de post LinkedIn. J'ai découvert ça un peu par hasard en essayant de lui passer un screenshot et... ça a marché du premier coup. Rare.
Le workflow en 8 phases
Phase 1-2 : extraction et classification
Claude identifie le type d'input (URL, texte, screenshot), extrait les affirmations clés, et classe la source selon une grille à 5 niveaux. Un article du CNRS c'est Tier 1. Un post LinkedIn, Tier 4. La même info n'a pas le même poids selon d'où elle vient.
Phase 3 : PRE-CHECK
La phase que /science-check n'a pas. Avant de lancer 4 agents de recherche, on interroge la Google Fact Check API pour voir si l'affirmation a déjà été vérifiée par des pros (AFP Factuel, Snopes, PolitiFact...). Si oui, on intègre leur verdict directement comme source Tier 2, et ça fait gagner un temps fou.
Pour l'hydrogène en Moselle, l'API a renvoyé {}. Personne s'y était encore collé. C'est une info en soi - ça veut dire qu'on est sur un sujet pas encore couvert par les fact-checkers pros.
Phase 4 : 4 agents en parallèle
Le coeur du truc. Quatre sous-agents lancés en même temps, chacun avec son angle :
- Agent A cherche les faits bruts en français et en anglais
- Agent B cherche les sources officielles (CNRS, BRGM, ministères)
- Agent C cherche les contre-arguments et critiques
- Agent D apporte le contexte scientifique (via les MCP si c'est pertinent)
Pourquoi 4 et pas 3 comme science-check ? Les news ont besoin d'un agent dédié aux sources institutionnelles. En science, PubMed est LA source. En news, la source primaire peut être n'importe où : un communiqué du CNRS, un permis du ministère de l'Economie, un arrêt du Conseil d'Etat... J'ai mis une bonne heure à comprendre pourquoi mes premiers fact-checks rataient des infos : il manquait cet agent B qui sait fouiller les sites .gouv.fr et .cnrs.fr.
Phase 5-6 : approfondissement et croisement
Claude remonte systématiquement à la source primaire. Pour l'hydrogène en Moselle, ça veut dire aller lire l'article du CNRS Le journal - pas la reprise France Bleu, pas Sciences et Avenir. Et c'est là qu'on tombe sur le point d'interrogation dans le titre ("Un gisement géant d'hydrogène en Lorraine ?") et le conditionnel systématique ("pourrait être", "pourrait contenir"). Ce point d'interrogation, il a disparu dans toutes les reprises. Toutes.
Phase 7 : détection de biais
Ma phase préférée, honnêtement. Claude passe l'article original au crible d'une grille de patterns :
- Biais de présentation : clickbait, superlatifs non justifiés, chiffres sans contexte
- Biais de raisonnement : corrélation/causalité, cherry-picking, généralisation abusive
- Biais d'omission : contexte manquant, incertitudes gommées, risques non mentionnés
- Biais de source : conflit d'intérêt, echo chamber, communiqué de presse déguisé
Pour l'hydrogène en Moselle, la skill a repéré trois trucs : le conditionnel supprimé, la confusion ressource/réserve (c'est pas la même chose du tout en géologie), et le "unique au monde" qui laisse croire qu'aucun autre gisement existe alors que le Mali en a un depuis 1987. Trois biais dans un seul post LinkedIn.
Phase 8 : synthèse avec ultrathink
Comme pour /science-check, le mot ultrathink dans le SKILL.md active la réflexion étendue de Claude. C'est ça qui permet d'arriver à "VRAI sur le fond mais EXAGERE dans la présentation" au lieu de trancher binaire vrai/faux. La nuance, c'est tout le game du fact-checking.
Les fichiers de référence
VERDICT_SCALE.md
Echelle à 8 niveaux. Beaucoup plus fine que le vrai/faux binaire qu'on voit partout :
Voir l'échelle complète sur GitHub.
Le truc que j'ai mis du temps à caler : un article peut être VRAI sur le fond et EXAGERE dans sa présentation. Et les deux doivent être signalés. C'est pile ce qui s'est passé avec l'hydrogène en Moselle - la découverte est réelle, mais la manière dont c'est présenté gomme toutes les incertitudes.
SOURCE_RELIABILITY.md
Grille de fiabilité à 5 tiers. J'ai passé pas mal de temps à la calibrer pour les médias francophones :
Voir la grille complète sur GitHub.
BIAS_PATTERNS.md
4 catégories de biais (présentation, raisonnement, omission, source) avec une checklist rapide que Claude passe sur chaque article :
Voir la checklist complète sur GitHub.
REPORT_TEMPLATE.md
Le template impose la structure complète : résumé, tableau des sous-affirmations avec verdict individuel, contexte manquant, biais détectés, comparaison sources primaires vs reprises médias, positions officielles, et sources consultées avec tier de fiabilité. Sans ce template, Claude avait tendance à zapper des sections entières - genre il oubliait les biais 1 fois sur 3.
API_INTEGRATION.md
Doc de la Google Fact Check API. Endpoint, paramètres, format de réponse, variable d'environnement. Rien de sorcier.
Tester
Relancez Claude Code (les skills se chargent au démarrage), puis :
/fact-check le café augmente le risque de cancer
Ou avec une URL :
/fact-check https://www.example.com/article-douteux
Ou avec un screenshot :
/fact-check /chemin/vers/screenshot.png
Comptez 1 à 3 minutes. Les sujets bien couverts par les médias vont plus vite (plus de sources à croiser rapidement), les sujets de niche prennent un peu plus de temps parce que les agents doivent creuser davantage.
Ce que j'ai appris en construisant ça
Le conditionnel, c'est toute la différence. Le CNRS dit "pourrait être la plus grosse réserve". Sciences et Avenir met des guillemets autour de "unique au monde". Le post LinkedIn transforme ça en "La Moselle, nouveau centre du monde !" avec des emojis fusées. Chaque reprise supprime un conditionnel. C'est insidieux, et c'est exactement ce que la skill détecte. J'ai construit la grille de biais en partie à cause de ce cas précis.
4 agents au lieu de 3 pour les news. Au début j'avais 3 agents, calqués sur science-check. Les premiers fact-checks rataient systématiquement les sources officielles - un communiqué du CNRS par-ci, un permis ministériel par-là. En science, PubMed concentre tout. En news, la source primaire peut se planquer dans un PDF sur economie.gouv.fr ou dans un arrêt du Conseil d'Etat. L'Agent B dédié aux institutions a résolu ça.
La Google Fact Check API, personne en parle. Gratuite, simple, et parfois elle vous épargne 90% du travail. Sur des sujets politiques ou viraux, AFP Factuel ou Snopes ont souvent déjà fait le boulot. Sur des sujets techniques comme l'hydrogène en Moselle, elle renvoie {} - mais au moins vous savez que vous êtes le premier à vérifier. C'est une information en soi.
Les biais d'omission, c'est le vrai danger. L'article a pas besoin de mentir pour être trompeur. Oublier de dire que les 46 millions de tonnes c'est une estimation théorique, que "réserve" et "ressource" c'est pas pareil en géologie, que le Conseil d'Etat a annulé le projet méthane du même opérateur quelques semaines avant... Ces omissions, elles changent complètement la perception. Et c'est les plus dures à détecter sans aller lire la source primaire.
Les limites
C'est un outil. Pas un oracle. Pas un journaliste non plus.
La skill est aussi bonne que les sources disponibles en ligne et que la capacité de Claude à les interpréter. Sur des sujets très récents ou très locaux, les sources manquent parfois. Sur des sujets techniques - géologie, physique nucléaire - Claude peut mal interpréter une étude. Ca m'est arrivé une fois sur un sujet lié aux terres rares, il avait confondu deux unités de mesure.
Mais pour le cas d'usage du quotidien - un post LinkedIn, un titre d'article, un tweet qui sonne trop beau - c'est devenu mon réflexe. Deux minutes pour savoir si c'est VRAI, EXAGERE, ou FAUX. Et surtout, pour comprendre pourquoi.