Communitygithub.com

akrindev/google-studio-skills

Téléchargez et gérez des fichiers via l'API Google Gemini File à l'aide de scripts. Permet l'upload d'images, d'audio, de vidéos, de PDF et d'autres fichiers destinés aux modèles Gemini.

Qu'est-ce que google-studio-skills ?

Cette compétence permet de télécharger et de gérer des fichiers pour les modèles Gemini via l'API Google Gemini File. Elle prend en charge les images, l'audio, les vidéos, les PDF et d'autres types de fichiers. Les scripts disponibles couvrent l'upload, la vérification du statut (notamment l'attente du traitement avec le flag `--wait`), et la gestion des fichiers (listage, suppression). Les workflows incluent l'upload simple, l'upload avec nom personnalisé, l'upload et attente, ainsi que l'intégration avec d'autres compétences Gemini (gemini-text, gemini-image, gemini-batch) pour l'analyse multimodale, la transcription audio, l'extraction de contenu de documents, ou l'analyse vidéo. La compétence est particulièrement utile pour les développeurs utilisant Claude Code, Cursor ou Codex souhaitant préparer des fichiers pour des opérations de génération multimodale par lots ou individuelles.

Compatible avec~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/akrindev/google-studio-skills/tree/HEAD/skills/gemini-files

Demander à votre IA préférée

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

Documentation

API Gemini File

Téléchargez et gérez des fichiers destinés aux modèles Gemini via des scripts exécutables, prenant en charge les images, l'audio, les vidéos, les PDF et d'autres types de fichiers.

Quand utiliser cette compétence

Utilisez cette compétence lorsque vous avez besoin de :

  • Télécharger des images pour une analyse multimodale
  • Télécharger des vidéos pour le traitement de contenu
  • Télécharger des PDF pour l'analyse de documents
  • Télécharger de l'audio pour la transcription ou le traitement
  • Pré-télécharger des fichiers pour des opérations par lots
  • Vérifier l'état de traitement des fichiers
  • Lister et gérer les fichiers téléchargés
  • Utiliser des fichiers avec d'autres compétences Gemini (texte, image, etc.)

Scripts disponibles

scripts/upload.js

Objectif : Télécharger des fichiers vers l'API Gemini File

Quand l'utiliser :

  • Pour télécharger tout fichier destiné au traitement Gemini
  • Pour préparer des fichiers pour la génération multimodale
  • Pour télécharger des documents à analyser
  • Pour la préparation par lots de fichiers

Paramètres clés :

ParamètreDescriptionExemple
pathChemin du fichier (obligatoire)image.jpg
--name, -nNom d'affichage"mon-document"
--wait, -wAttendre le traitementDrapeau

Sortie : Nom du fichier, URI et informations de statut

Workflows

Workflow 1 : Upload de fichier basique

node scripts/upload.js image.jpg
  • Idéal pour : Uploads rapides, fichiers simples
  • Sortie : Nom du fichier et URI pour l'utilisation API
  • État : PROCESSING ou ACTIVE

Workflow 2 : Upload avec nom personnalisé

node scripts/upload.js document.pdf --name "Rapport trimestriel Q4 2026"
  • Idéal pour : Organiser les fichiers, suivre les uploads
  • Utiliser quand : Le nom de fichier d'origine n'est pas assez descriptif
  • Le nom d'affichage apparaît dans les listes de fichiers

Workflow 3 : Upload et attente du traitement

node scripts/upload.js video.mp4 --wait
  • Idéal pour : Fichiers volumineux, vidéos, audio
  • Attend que le fichier soit à l'état ACTIVE
  • Utiliser quand : Vous devez utiliser le fichier immédiatement après l'upload

Workflow 4 : Upload d'image pour analyse

# 1. Télécharger l'image
node scripts/upload.js photo.png --name "photo-produit"

# 2. Utiliser avec gemini-text pour l'analyse
node skills/gemini-text/scripts/generate.js "Décris cette image" --image photo.png
  • Idéal pour : Analyse d'image, légendage, questions-réponses visuelles
  • Combine avec : gemini-text pour le traitement multimodal

Workflow 5 : Upload de PDF pour extraction de contenu

# 1. Télécharger le PDF
node scripts/upload.js article-recherche.pdf --name "Article-IA" --wait

# 2. Extraire le contenu avec gemini-text
node skills/gemini-text/scripts/generate.js "Extrais les résultats clés de ce document" --image article-recherche.pdf
  • Idéal pour : Traitement de documents, extraction de contenu
  • Combine avec : gemini-text pour l'analyse

Workflow 6 : Upload de plusieurs fichiers pour traitement par lots

# 1. Télécharger plusieurs fichiers
for file in *.jpg; do
    node scripts/upload.js "$file"
done

# 2. Créer une tâche par lots en utilisant les fichiers téléchargés (compétence gemini-batch)
  • Idéal pour : Préparer des fichiers pour un traitement par lots
  • Combine avec : gemini-batch pour les opérations en masse

Workflow 7 : Upload d'audio pour transcription

# 1. Télécharger l'audio
node scripts/upload.js entretien.mp3 --name "entretien-001" --wait

# 2. Traiter avec gemini-text (si la transcription est disponible)
node skills/gemini-text/scripts/generate.js "Transcris et résume cet audio" --image entretien.mp3
  • Idéal pour : Traitement audio, transcription, analyse de podcast
  • Combine avec : gemini-text pour l'analyse audio

Workflow 8 : Upload de vidéo pour analyse de contenu

# 1. Télécharger la vidéo (peut prendre du temps)
node scripts/upload.js demo-produit.mp4 --name "video-demo" --wait

# 2. Analyser avec gemini-text
node skills/gemini-text/scripts/generate.js "Analyse cette vidéo de démonstration produit" --image demo-produit.mp4
  • Idéal pour : Analyse vidéo, résumé de contenu
  • Remarque : Les vidéos peuvent nécessiter un temps de traitement important

Référence des paramètres

Types de fichiers pris en charge

TypeExtensionsTaille maxTemps de traitement
Imagesjpg, jpeg, png, gif, webp20 MoSecondes
Audiomp3, wav, aac, flac25 MoSecondes à minutes
Vidéomp4, mov, avi, webm2 GoMinutes à heures
Documentspdf, txt50 MoSecondes à minutes

Types MIME

Le script détecte automatiquement en fonction de l'extension :

  • Images : image/jpeg, image/png, image/gif, image/webp
  • Audio : audio/mpeg, audio/wav
  • Vidéo : video/mp4, video/quicktime, video/webm
  • Documents : application/pdf, text/plain

États des fichiers

ÉtatDescriptionPrêt à l'emploi
PROCESSINGLe fichier est en cours d'analyseNon
ACTIVELe fichier est prêtOui
FAILEDLe traitement a échouéNon

Interprétation de la sortie

Réponse d'upload

Upload de photo.png...
Téléchargé : files/abc123...
URI : gs://generation-tmp/abc123...
État : PROCESSING
  • Nom du fichier : Utilisé dans les appels API
  • URI : Référence interne Google Cloud Storage
  • État : PROCESSING = attendre, ACTIVE = prêt

Avec le flag --wait

Upload de video.mp4...
Téléchargé : files/xyz789...
URI : gs://generation-tmp/xyz789...
État : PROCESSING
Attente du traitement...
Toujours en cours de traitement...
Fichier prêt !
  • Le script interroge jusqu'à ce que l'état soit ACTIVE
  • Utilisez pour les fichiers volumineux nécessitant un traitement
  • Peut prendre plusieurs minutes pour les vidéos

Utilisation des fichiers téléchargés

Une fois téléchargé, référencez le fichier par son nom :

# Avec gemini-text
node skills/gemini-text/scripts/generate.js "Analyse" --image <chemin-du-fichier-uploadé>

Problèmes courants

"google-genai not installed"

npm install @google/genai@latest dotenv@latest

"File not found"

  • Vérifiez que le chemin du fichier est correct
  • Utilisez des chemins absolus si les chemins relatifs échouent
  • Vérifiez que l'extension correspond aux types pris en charge

"File too large"

  • Vérifiez les limites de taille pour le type de fichier
  • Compressez les images/vidéos si possible
  • Divisez les fichiers volumineux en parties plus petites

"Unsupported file type"

  • Vérifiez les extensions prises en charge
  • Convertissez au format pris en charge si possible
  • Images : jpg, png, gif, webp
  • Vidéos : mp4, mov, avi, webm

"Processing failed"

  • Vérifiez que le fichier n'est pas corrompu
  • Essayez de ré-uploader le fichier
  • Vérifiez que le format du fichier est valide
  • Vérifiez les limites de quota API

"File still processing" (sans --wait)

  • L'état du fichier est PROCESSING, pas ACTIVE
  • Utilisez le flag --wait ou vérifiez le statut plus tard
  • Les fichiers volumineux (surtout les vidéos) prennent du temps
  • Le traitement peut prendre de quelques minutes à plusieurs heures

Bonnes pratiques

Stratégie d'upload

  • Utilisez --wait pour les fichiers que vous utiliserez immédiatement
  • Ignorez --wait pour les uploads par lots afin de gagner du temps
  • Utilisez des noms --name descriptifs pour l'organisation
  • Gardez une trace des noms de fichiers pour une utilisation ultérieure

Organisation des fichiers

  • Utilisez des conventions de nommage cohérentes
  • Incluez des dates ou des versions dans les noms
  • Regroupez les fichiers connexes ensemble
  • Documentez les noms de fichiers dans votre code

Conseils de performance

  • Uploadez plusieurs fichiers en parallèle (processus séparés)
  • Pré-uploader les fichiers pour les opérations par lots
  • Vérifiez l'état du fichier avant de l'utiliser dans les appels API
  • Supprimez les anciens fichiers pour gérer le stockage

Gestion des erreurs

  • Vérifiez l'état de retour après l'upload
  • Réessayez les uploads échoués
  • Vérifiez l'intégrité du fichier avant l'upload
  • Enregistrez les noms de fichiers pour les pistes d'audit

Intégration avec d'autres compétences

  • gemini-text : Analyse multimodale, traitement de documents
  • gemini-image : Générer des images basées sur une référence téléchargée
  • gemini-batch : Utiliser les fichiers téléchargés dans des tâches par lots
  • gemini-embeddings : Créer des embeddings à partir du contenu du fichier

Cycle de vie des fichiers

  • Upload → PROCESSING → ACTIVE → Utilisation dans l'API
  • Supprimez les anciens fichiers pour libérer du stockage
  • Les fichiers peuvent expirer après une certaine période
  • Téléchargez les fichiers importants pour sauvegarde

Compétences associées

  • gemini-text : Analyser les fichiers téléchargés avec génération de texte
  • gemini-image : Créer des images basées sur des références téléchargées
  • gemini-batch : Utiliser les fichiers téléchargés dans le traitement par lots
  • gemini-embeddings : Générer des embeddings à partir du contenu du fichier

Référence rapide

# Upload basique
node scripts/upload.js image.jpg

# Avec nom personnalisé
node scripts/upload.js document.pdf --name "Mon Document"

# Attendre le traitement
node scripts/upload.js video.mp4 --wait

# Plusieurs fichiers
for file in *.jpg; do node scripts/upload.js "$file"; done

API de gestion des fichiers

Bien que non présent dans les scripts, vous pouvez également gérer les fichiers via JavaScript :

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

// Lister tous les fichiers
for await (const file of client.files.list()) {
  console.log(`${file.name} : ${file.displayName} (${file.state})`);
}

// Obtenir les informations d'un fichier
const file = await client.files.get({ name: "files/abc123..." });
console.log(`État : ${file.state}`);

// Supprimer un fichier
await client.files.delete({ name: "files/abc123..." });

Référence

Skills associés