Communitygithub.com

Diffuseur de Journal Quotidien

Récupère les dernières actualités via la compétence news-aggregator-skill, les formate en script de podcast Markdown, puis utilise la compétence tts pour générer un fichier audio. À utiliser lorsque l'utilisateur demande les dernières nouvelles et souhaite les écouter sous forme de podcast.

Qu'est-ce que Diffuseur de Journal Quotidien ?

Cette compétence (skill) permet à un agent IA (comme Claude Code, Cursor ou Codex) de récupérer les actualités en temps réel via `news-aggregator-skill`, de les transformer en un script de podcast dynamique au format Markdown (idéalement sous forme de dialogue entre deux animateurs), puis de générer un fichier audio ligne par ligne grâce à la compétence `tts` et de concaténer le tout avec `ffmpeg`. Elle est particulièrement utile pour les utilisateurs qui souhaitent une expérience de veille informationnelle audible et engageante, sans avoir à lire de longs articles. La compétence respecte un flux de travail strict : elle vérifie d'abord la présence des dépendances, exécute le script de récupération d'actualités, rédige un script conversationnel concis (question/réponse entre deux hôtes), puis génère l'audio phrase par phrase pour éviter les limites API, avant de produire le fichier final. Aucune clé API directe n'est requise par cette compétence, mais la compétence `tts` peut nécessiter `NOIZ_API_KEY` pour le clonage vocal avancé. Les voix en mode invité fonctionnent sans clé. La compétence écrit plusieurs fichiers temporaires (script, audio lignes, liste de concaténation) dans le répertoire de travail courant, sans état persistant.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/daily-news-caster

Demander à votre IA préférée

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

Documentation

Compétence Diffuseur de Journal Quotidien

Cette compétence permet à l'agent de récupérer des actualités en temps réel, de les organiser en un script de podcast conversationnel, puis de générer un fichier audio lisant le script à voix haute.

Instructions de flux de travail

Lorsque l'utilisateur demande les dernières nouvelles et souhaite en faire un podcast, suivez strictement ces étapes :

Étape 1 : Vérifier la présence des compétences requises

Vérifiez que news-aggregator-skill et tts existent dans l'espace de travail (dans skills/ ou .cursor/skills/). Si l'une d'entre elles manque, informez l'utilisateur de la ou des compétences manquantes et demandez-lui de les installer manuellement avant de continuer. N'essayez PAS d'installer automatiquement les compétences.

Étape 2 : Récupérer les dernières actualités

Localisez fetch_news.py dans le répertoire de la compétence news-aggregator-skill (par exemple, skills/news-aggregator-skill/scripts/fetch_news.py). Lisez son SKILL.md pour comprendre son utilisation si nécessaire.

Exécutez le script pour récupérer les actualités en temps réel. Vous pouvez spécifier une source (par exemple, hackernews, github, all) ou des mots-clés en fonction de la demande de l'utilisateur.

Exemple de commande :

python3 skills/news-aggregator-skill/scripts/fetch_news.py --source all --limit 10 --deep

Étape 3 : Rédiger le script du podcast (étape interne)

Lisez les données d'actualités récupérées et réécrivez les informations en un script de podcast au format Markdown. Crucialement, privilégiez un format conversationnel à deux animateurs (dialogue entre deux personnes) (par exemple, Animateur A et Animateur B) dans un style questions-réponses dynamique.

Le script doit être :

  • Conversationnel à deux animateurs mais concis : Rédigez un échange engageant entre deux animateurs. L'animateur A doit poser des questions pertinentes et à forte valeur ajoutée pour guider la conversation, et l'animateur B doit fournir des réponses informatives et concises. Cela doit ressembler à un dialogue Q&A intelligent et rythmé.
  • Éviter les remplissages : N'incluez pas de remplissages inutiles ou de transitions trop longues. Restez concis (言简意赅) tout en conservant toutes les informations et faits essentiels.
  • Intervenants clairement identifiés : Commencez chaque ligne ou paragraphe par le nom de l'intervenant (par exemple, Animateur A : ou Animateur B :).
  • Texte clair pour la parole : Évitez les URL complexes, les liens Markdown bruts ou les caractères imprononçables dans le texte parlé.

Enregistrez ce script dans un fichier local nommé podcast_script.md.

Exemple de contenu podcast_script.md :

**Animateur A :** Bienvenue dans notre tour d'horizon des actualités du jour. Nous avons des mises à jour technologiques passionnantes aujourd'hui. Pour commencer, il y a une grande annonce de [Nom de l'entreprise]. Quelles sont les implications concrètes de cette nouvelle version pour les utilisateurs quotidiens ?

**Animateur B :** Le principal enseignement est que... [Insérer une réponse concise et un résumé de l'actualité 1]. Cela change complètement notre approche du [Sujet].

**Animateur A :** Fascinant. Mais cette nouvelle approche soulève-t-elle des préoccupations de sécurité, surtout compte tenu des récentes fuites de données ?

**Animateur B :** Exactement. Les experts soulignent que... [Insérer une analyse ou un contexte].

**Animateur A :** Passons au monde open-source. Qu'est-ce qui est tendance sur GitHub aujourd'hui et que les développeurs devraient suivre ?

**Animateur B :** Un projet remarquable est... [Insérer un résumé concis de l'actualité 2].

**Animateur A :** Excellentes perspectives. C'est tout pour notre bref résumé d'aujourd'hui. Merci de nous avoir écoutés !

Étape 4 : Générer l'audio du podcast phrase par phrase

Pour éviter d'envoyer l'intégralité du script à l'API en une seule fois, vous devez générer l'audio phrase par phrase (一人一句地生成) puis les concaténer.

Utilisez tts.py de la compétence tts locale (skills/tts/scripts/tts.py). Lisez le SKILL.md de la compétence tts pour une utilisation complète et les options de backend.

1. Générer l'audio pour chaque ligne : Pour chaque ligne de dialogue du script, exécutez la commande speak. Utilisez la voix appropriée ou l'audio de référence pour l'animateur concerné. Si l'utilisateur a fourni des fichiers audio de référence pour les deux rôles, utilisez-les via l'option --ref-audio (nécessite le backend noiz et NOIZ_API_KEY). Sans clé API, les voix en mode invité sont disponibles (voir le SKILL.md de tts pour la liste des voix).

python3 skills/tts/scripts/tts.py -t "Bienvenue dans notre tour d'horizon des actualités du jour..." --ref-audio animateur_A.wav -o ligne_01.wav

python3 skills/tts/scripts/tts.py -t "Le principal enseignement est que..." --ref-audio animateur_B.wav -o ligne_02.wav

2. Concaténer les fichiers audio : Créez un fichier texte (par exemple, liste.txt) listant tous les fichiers audio générés dans l'ordre :

file 'ligne_01.wav'
file 'ligne_02.wav'

Utilisez ensuite ffmpeg pour les fusionner en un seul fichier audio de podcast :

ffmpeg -f concat -safe 0 -i liste.txt -c copy podcast_final.wav

Étape 5 : Présenter le résultat final

Une fois l'audio complet généré et fusionné, présentez les résultats à l'utilisateur. Vous DEVEZ fournir les deux éléments suivants :

  • Affichez le script du podcast complet au format Markdown dans le chat pour que l'utilisateur puisse le lire.
  • Fournissez le chemin vers le fichier podcast_final.wav final pour qu'il puisse écouter l'audio.
  • Résumez brièvement les titres inclus dans le podcast.

Sécurité et divulgation de données

Cette compétence est uniquement basée sur des instructions – elle ne contient aucun code exécutable par elle-même. Lors de son exécution, elle orchestre des scripts provenant de deux compétences dépendantes :

  • Scripts exécutés : news-aggregator-skill/scripts/fetch_news.py (récupère les actualités de sources publiques) et tts/scripts/tts.py (génère l'audio vocal). Les deux doivent être présents localement avant que cette compétence ne s'exécute ; examinez leur code et leur SKILL.md pour plus de détails sur leur comportement réseau et leurs exigences en matière d'identifiants.
  • Identifiants : Cette compétence ne nécessite directement aucune clé API ni variable d'environnement. La dépendance tts peut nécessiter NOIZ_API_KEY pour les fonctionnalités de clonage vocal (backend noiz) ; sans cela, les voix en mode invité fonctionnent directement. Consultez le SKILL.md de la compétence tts pour plus de détails.
  • Accès réseau : Tous les appels réseau sont effectués par les compétences dépendantes, pas par les instructions de cette compétence. La compétence news-aggregator récupère les données de sources d'actualités publiques ; la compétence tts contacte noiz.ai uniquement lorsque le backend noiz est utilisé.
  • Fichiers écrits : podcast_script.md, ligne_*.wav (audio temporaire par phrase), liste.txt (liste de concaténation ffmpeg), podcast_final.wav (fichier final). Tous sont écrits dans le répertoire de travail courant.
  • Aucun état persistant : Cette compétence n'écrit pas de fichiers de configuration, ne stocke pas d'identifiants et ne modifie pas d'autres compétences.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

Skills associés