Amélioration des profils d'auteurs
Cette compétence remplit les champs manquants des profils d'auteurs (bio, avatar, site web, réseaux sociaux) via des recherches web.
Aperçu du flux de travail
Phase 1 : Identification de l'auteur
└─ Trouver et valider le fichier auteur
Phase 2 : Recherche parallèle (uniquement pour les champs manquants)
├─ Agent WebSearch 1 : bio/parcours
├─ Agent WebSearch 2 : URL de l'avatar
└─ Agent WebSearch 3 : site web + réseaux sociaux
Phase 3 : Révision par l'utilisateur (PORTE DE BLOCAGE)
└─ Présenter les résultats, attendre l'approbation
Phase 4 : Enregistrement de l'auteur enrichi
└─ Mettre à jour les champs du frontmatter
Phase 5 : Contrôle qualité
└─ Exécuter pnpm lint:fix && pnpm typecheck
Phase 1 : Identification de l'auteur
1.1 Trouver le fichier auteur
Accepte un slug, un nom ou un nom partiel comme argument :
- Essayer d'abord une correspondance exacte du slug : Vérifiez si
content/authors/{slug}.mdexiste (convertir les espaces en traits d'union, mettre en minuscules) - Si aucune correspondance exacte : Utiliser Grep pour rechercher le nom dans les fichiers auteurs :
Modèle Grep : "name:.*{terme de recherche}" avec glob : "content/authors/*.md"
Résultats :
- Une seule correspondance → continuer avec ce fichier
- Plusieurs correspondances → lister les options pour que l'utilisateur choisisse
- Aucune correspondance → lister les auteurs disponibles
1.2 Identifier les champs manquants
Lire le fichier auteur et vérifier quels champs sont manquants ou vides :
Champs obligatoires (toujours présents) :
nameslug
Champs optionnels à enrichir :
bio- Parcours professionnel et expertiseavatar- URL de la photo de profilwebsite- URL du site web personnelsocials.twitter- Identifiant Twitter/Xsocials.github- Nom d'utilisateur GitHubsocials.linkedin- Nom d'utilisateur LinkedInsocials.youtube- Chaîne YouTube
Un champ est "manquant" si :
- Il n'existe pas dans le frontmatter
- Il existe mais est vide (
""ounull)
Si tous les champs sont déjà renseignés, informer l'utilisateur et proposer de mettre à jour des champs spécifiques.
Phase 2 : Recherche parallèle
Lancer jusqu'à 3 agents WebSearch en parallèle en fonction des champs manquants :
**Agent 1 - Bio/Parcours :**
Outil Task avec subagent_type : "general-purpose"
invite : "Utilise WebSearch pour trouver des informations sur le parcours professionnel de [Nom de l'auteur].
Requête : '[Nom de l'auteur]' bio parcours expertise
Extrait : Titre du poste, entreprise, domaines d'expertise, projets notables.
Retourne : Une bio professionnelle de 1 à 2 phrases."
**Agent 2 - URL de l'avatar :**
Outil Task avec subagent_type : "general-purpose"
invite : "Utilise WebSearch pour trouver l'URL d'une photo de profil pour [Nom de l'auteur].
Requête : '[Nom de l'auteur]' site:github.com OU site:twitter.com
Extrait : Nom d'utilisateur GitHub ou identifiant Twitter pour construire l'URL de l'avatar.
Retourne : URL de l'avatar (préférer le format GitHub : https://github.com/{nom_utilisateur}.png)"
**Agent 3 - Site web & Réseaux sociaux :**
Outil Task avec subagent_type : "general-purpose"
invite : "Utilise WebSearch pour trouver les profils sur les réseaux sociaux de [Nom de l'auteur].
Requête : '[Nom de l'auteur]' twitter github linkedin youtube
Extrait : Site web personnel, identifiant Twitter, nom d'utilisateur GitHub, profil LinkedIn, chaîne YouTube.
Retourne : Liste des profils trouvés avec URLs/identifiants."
Ne lancer que les agents pour les champs manquants. Si la bio existe déjà, ignorer l'Agent 1.
Collecter tous les résultats via TaskOutput (bloquant).
Phase 3 : Révision par l'utilisateur (PORTE DE BLOCAGE)
Il s'agit d'une étape d'approbation obligatoire. Présenter les modifications proposées avant d'enregistrer.
3.1 Présenter les modifications
Afficher les mises à jour proposées sous forme de tableau comparatif :
## Mises à jour proposées pour [Nom de l'auteur]
| Champ | Actuel | Proposé |
|-------|--------|---------|
| bio | (vide) | "Fondateur de X, créateur de Y..." |
| avatar | (vide) | "https://github.com/nom_utilisateur.png" |
| website | (vide) | "https://example.com" |
| socials.twitter | (vide) | "nom_utilisateur" |
| socials.github | (vide) | "nom_utilisateur" |
| socials.linkedin | (vide) | "nom_utilisateur" |
| socials.youtube | (vide) | (non trouvé) |
3.2 Demander l'approbation
Utiliser l'outil AskUserQuestion :
question : "Enregistrer ces modifications dans le profil de l'auteur ?"
header : "Révision"
multiSelect : false
options :
- label : "Enregistrer"
description : "Mettre à jour le fichier auteur avec ces valeurs"
- label : "Modifier"
description : "Indiquez ce que je dois changer"
- label : "Annuler"
description : "Ne pas modifier le fichier"
3.3 Gérer la réponse
- Enregistrer : Passer à la Phase 4
- Modifier : Appliquer les retours de l'utilisateur, afficher un aperçu mis à jour
- Annuler : Quitter sans modifications
Ne PAS passer à la Phase 4 sans approbation explicite de l'utilisateur.
Phase 4 : Enregistrement de l'auteur enrichi
4.1 Mettre à jour le frontmatter
Utiliser l'outil Edit pour mettre à jour uniquement les champs approuvés :
Avant :
---
name : "John Doe"
slug : "john-doe"
bio : ""
avatar : ""
website : ""
socials :
twitter : ""
github : ""
linkedin : ""
youtube : ""
---
Après :
---
name : "John Doe"
slug : "john-doe"
bio : "Ingénieur logiciel spécialisé dans les systèmes distribués..."
avatar : "https://github.com/johndoe.png"
website : "https://johndoe.dev"
socials :
twitter : "johndoe"
github : "johndoe"
linkedin : "johndoe"
youtube : ""
---
4.2 Préserver les valeurs existantes
Critique : Ne jamais écraser des valeurs non vides existantes sauf demande explicite :
- Conserver
nameetsluginchangés - Mettre à jour uniquement les champs vides/manquants
- Préserver tous les champs personnalisés supplémentaires
4.3 Confirmation
Rapporter à l'utilisateur :
Mis à jour : content/authors/{slug}.md
- bio : ajouté
- avatar : ajouté
- website : ajouté
- socials.twitter : ajouté
- socials.github : ajouté
Phase 5 : Contrôle qualité
Exécuter le linter et la vérification de type pour détecter d'éventuels problèmes :
pnpm lint:fix && pnpm typecheck
Si des erreurs sont trouvées, les corriger avant de terminer la tâche.
Récupération d'erreurs
| Erreur | Récupération |
|---|---|
| Auteur non trouvé | Lister les auteurs disponibles dans content/authors/ |
| Aucun champ manquant | Informer l'utilisateur, proposer de mettre à jour des champs spécifiques |
| Échec de WebSearch | Essayer des modèles de requête alternatifs |
| L'utilisateur rejette les modifications | Permettre la modification ou l'annulation |
| Impossible de trouver l'information | Marquer le champ comme "(non trouvé)", continuer avec les autres |
Liste de contrôle qualité
Avant d'enregistrer, vérifier :
- Le fichier auteur existe dans
content/authors/ - Seuls les champs vides/manquants sont mis à jour
- La bio fait 1 à 2 phrases, ton professionnel
- L'URL de l'avatar est valide (préférer le format GitHub)
- Les identifiants sociaux sont uniquement des noms d'utilisateur (pas d'URLs)
- Les valeurs non vides existantes sont préservées
- L'utilisateur a explicitement approuvé les modifications