[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6G1S2SPK1VE0R2JDVRJ4A":3,"skill-same:01M6C6G1S2SPK1VE0R2JDVRJ4A":143},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6C6G1S2SPK1VE0R2JDVRJ4A","ai-multimodal",null,"Process and generate multimedia content using Google Gemini API. Capabilities include analyze audio files (transcription with timestamps, summarization, speech understanding, music\u002Fsound analysis up to 9.5 hours), understand images (captioning, object detection, OCR, visual Q&A, segmentation), process videos (scene detection, Q&A, temporal analysis, YouTube URLs, up to 6 hours), extract from documents (PDF tables, forms, charts, diagrams, multi-page), generate images (text-to-image, editing, composition, refinement). Use when working with audio\u002Fvideo files, analyzing images or screenshots, processing PDF documents, extracting structured data from media, creating images from text prompts, or implementing multimodal AI features. Supports multiple models (Gemini 2.5\u002F2.0) with context windows up to 2M tokens.","Puh1001\u002FDocumentManager","Puh1001","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F128564816?v=4","01M6C6BTDAB2A0NDDTKSXZM6TY","Puh","01M6C6BTHE27TGEX8P3DKZNGNF",0,"MIT","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"ai multimodal","multimodal","Composition","diagrams","images","up","analyze","Bash","Charts","Audio","Media","PDF","Video","api","analysis","segmentation","ocr","capabilities","documents","image","2026-11-10 10:12:30",false,"---\nname: ai-multimodal\ndescription: Process and generate multimedia content using Google Gemini API. Capabilities include analyze audio files (transcription with timestamps, summarization, speech understanding, music\u002Fsound analysis up to 9.5 hours), understand images (captioning, object detection, OCR, visual Q&A, segmentation), process videos (scene detection, Q&A, temporal analysis, YouTube URLs, up to 6 hours), extract from documents (PDF tables, forms, charts, diagrams, multi-page), generate images (text-to-image, editing, composition, refinement). Use when working with audio\u002Fvideo files, analyzing images or screenshots, processing PDF documents, extracting structured data from media, creating images from text prompts, or implementing multimodal AI features. Supports multiple models (Gemini 2.5\u002F2.0) with context windows up to 2M tokens.\nlicense: MIT\nallowed-tools:\n  - Bash\n  - Read\n  - Write\n  - Edit\n---\n\n# AI Multimodal Processing Skill\n\nProcess audio, images, videos, documents, and generate images using Google Gemini's multimodal API. Unified interface for all multimedia content understanding and generation.\n\n## Core Capabilities\n\n### Audio Processing\n- Transcription with timestamps (up to 9.5 hours)\n- Audio summarization and analysis\n- Speech understanding and speaker identification\n- Music and environmental sound analysis\n- Text-to-speech generation with controllable voice\n\n### Image Understanding\n- Image captioning and description\n- Object detection with bounding boxes (2.0+)\n- Pixel-level segmentation (2.5+)\n- Visual question answering\n- Multi-image comparison (up to 3,600 images)\n- OCR and text extraction\n\n### Video Analysis\n- Scene detection and summarization\n- Video Q&A with temporal understanding\n- Transcription with visual descriptions\n- YouTube URL support\n- Long video processing (up to 6 hours)\n- Frame-level analysis\n\n### Document Extraction\n- Native PDF vision processing (up to 1,000 pages)\n- Table and form extraction\n- Chart and diagram analysis\n- Multi-page document understanding\n- Structured data output (JSON schema)\n- Format conversion (PDF to HTML\u002FJSON)\n\n### Image Generation\n- Text-to-image generation\n- Image editing and modification\n- Multi-image composition (up to 3 images)\n- Iterative refinement\n- Multiple aspect ratios (1:1, 16:9, 9:16, 4:3, 3:4)\n- Controllable style and quality\n\n## Capability Matrix\n\n| Task | Audio | Image | Video | Document | Generation |\n|------|:-----:|:-----:|:-----:|:--------:|:----------:|\n| Transcription | ✓ | - | ✓ | - | - |\n| Summarization | ✓ | ✓ | ✓ | ✓ | - |\n| Q&A | ✓ | ✓ | ✓ | ✓ | - |\n| Object Detection | - | ✓ | ✓ | - | - |\n| Text Extraction | - | ✓ | - | ✓ | - |\n| Structured Output | ✓ | ✓ | ✓ | ✓ | - |\n| Creation | TTS | - | - | - | ✓ |\n| Timestamps | ✓ | - | ✓ | - | - |\n| Segmentation | - | ✓ | - | - | - |\n\n## Model Selection Guide\n\n### Gemini 2.5 Series (Recommended)\n- **gemini-2.5-pro**: Highest quality, all features, 1M-2M context\n- **gemini-2.5-flash**: Best balance, all features, 1M-2M context\n- **gemini-2.5-flash-lite**: Lightweight, segmentation support\n- **gemini-2.5-flash-image**: Image generation only\n\n### Gemini 2.0 Series\n- **gemini-2.0-flash**: Fast processing, object detection\n- **gemini-2.0-flash-lite**: Lightweight option\n\n### Feature Requirements\n- **Segmentation**: Requires 2.5+ models\n- **Object Detection**: Requires 2.0+ models\n- **Multi-video**: Requires 2.5+ models\n- **Image Generation**: Requires flash-image model\n\n### Context Windows\n- **2M tokens**: ~6 hours video (low-res) or ~2 hours (default)\n- **1M tokens**: ~3 hours video (low-res) or ~1 hour (default)\n- **Audio**: 32 tokens\u002Fsecond (1 min = 1,920 tokens)\n- **PDF**: 258 tokens\u002Fpage (fixed)\n- **Image**: 258-1,548 tokens based on size\n\n## Quick Start\n\n### Prerequisites\n\n**API Key Setup**: Supports both Google AI Studio and Vertex AI.\n\nThe skill checks for `GEMINI_API_KEY` in this order:\n1. Process environment: `export GEMINI_API_KEY=\"your-key\"`\n2. Project root: `.env`\n3. `.cursor\u002F.env`\n4. `.cursor\u002Fskills\u002F.env`\n5. `.cursor\u002Fskills\u002Fai-multimodal\u002F.env`\n\n**Get API key**: https:\u002F\u002Faistudio.google.com\u002Fapikey\n\n**For Vertex AI**:\n```bash\nexport GEMINI_USE_VERTEX=true\nexport VERTEX_PROJECT_ID=your-gcp-project-id\nexport VERTEX_LOCATION=us-central1  # Optional\n```\n\n**Install SDK**:\n```bash\npip install google-genai python-dotenv pillow\n```\n\n### Common Patterns\n\n**Transcribe Audio**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files audio.mp3 \\\n  --task transcribe \\\n  --model gemini-2.5-flash\n```\n\n**Analyze Image**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files image.jpg \\\n  --task analyze \\\n  --prompt \"Describe this image\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --model gemini-2.5-flash\n```\n\n**Process Video**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files video.mp4 \\\n  --task analyze \\\n  --prompt \"Summarize key points with timestamps\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --model gemini-2.5-flash\n```\n\n**Extract from PDF**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files document.pdf \\\n  --task extract \\\n  --prompt \"Extract table data as JSON\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --format json\n```\n\n**Generate Image**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --task generate \\\n  --prompt \"A futuristic city at sunset\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-file-name> \\\n  --model gemini-2.5-flash-image \\\n  --aspect-ratio 16:9\n```\n\n**Optimize Media**:\n```bash\n# Prepare large video for processing\npython scripts\u002Fmedia_optimizer.py \\\n  --input large-video.mp4 \\\n  --output docs\u002Fassets\u002F\u003Coutput-file-name> \\\n  --target-size 100MB\n\n# Batch optimize multiple files\npython scripts\u002Fmedia_optimizer.py \\\n  --input-dir .\u002Fvideos \\\n  --output-dir docs\u002Fassets\u002Foptimized \\\n  --quality 85\n```\n\n**Convert Documents to Markdown**:\n```bash\n# Convert to PDF\npython scripts\u002Fdocument_converter.py \\\n  --input document.docx \\\n  --output docs\u002Fassets\u002Fdocument.md\n\n# Extract pages\npython scripts\u002Fdocument_converter.py \\\n  --input large.pdf \\\n  --output docs\u002Fassets\u002Fchapter1.md \\\n  --pages 1-20\n```\n\n## Supported Formats\n\n### Audio\n- WAV, MP3, AAC, FLAC, OGG Vorbis, AIFF\n- Max 9.5 hours per request\n- Auto-downsampled to 16 Kbps mono\n\n### Images\n- PNG, JPEG, WEBP, HEIC, HEIF\n- Max 3,600 images per request\n- Resolution: ≤384px = 258 tokens, larger = tiled\n\n### Video\n- MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, 3GPP\n- Max 6 hours (low-res) or 2 hours (default)\n- YouTube URLs supported (public only)\n\n### Documents\n- PDF only for vision processing\n- Max 1,000 pages\n- TXT, HTML, Markdown supported (text-only)\n\n### Size Limits\n- **Inline**: \u003C20MB total request\n- **File API**: 2GB per file, 20GB project quota\n- **Retention**: 48 hours auto-delete\n\n## Reference Navigation\n\nFor detailed implementation guidance, see:\n\n### Audio Processing\n- `references\u002Faudio-processing.md` - Transcription, analysis, TTS\n  - Timestamp handling and segment analysis\n  - Multi-speaker identification\n  - Non-speech audio analysis\n  - Text-to-speech generation\n\n### Image Understanding\n- `references\u002Fvision-understanding.md` - Captioning, detection, OCR\n  - Object detection and localization\n  - Pixel-level segmentation\n  - Visual question answering\n  - Multi-image comparison\n\n### Video Analysis\n- `references\u002Fvideo-analysis.md` - Scene detection, temporal understanding\n  - YouTube URL processing\n  - Timestamp-based queries\n  - Video clipping and FPS control\n  - Long video optimization\n\n### Document Extraction\n- `references\u002Fdocument-extraction.md` - PDF processing, structured output\n  - Table and form extraction\n  - Chart and diagram analysis\n  - JSON schema validation\n  - Multi-page handling\n\n### Image Generation\n- `references\u002Fimage-generation.md` - Text-to-image, editing\n  - Prompt engineering strategies\n  - Image editing and composition\n  - Aspect ratio selection\n  - Safety settings\n\n## Cost Optimization\n\n### Token Costs\n**Input Pricing**:\n- Gemini 2.5 Flash: $1.00\u002F1M input, $0.10\u002F1M output\n- Gemini 2.5 Pro: $3.00\u002F1M input, $12.00\u002F1M output\n- Gemini 1.5 Flash: $0.70\u002F1M input, $0.175\u002F1M output\n\n**Token Rates**:\n- Audio: 32 tokens\u002Fsecond (1 min = 1,920 tokens)\n- Video: ~300 tokens\u002Fsecond (default) or ~100 (low-res)\n- PDF: 258 tokens\u002Fpage (fixed)\n- Image: 258-1,548 tokens based on size\n\n**TTS Pricing**:\n- Flash TTS: $10\u002F1M tokens\n- Pro TTS: $20\u002F1M tokens\n\n### Best Practices\n1. Use `gemini-2.5-flash` for most tasks (best price\u002Fperformance)\n2. Use File API for files >20MB or repeated queries\n3. Optimize media before upload (see `media_optimizer.py`)\n4. Process specific segments instead of full videos\n5. Use lower FPS for static content\n6. Implement context caching for repeated queries\n7. Batch process multiple files in parallel\n\n## Rate Limits\n\n**Free Tier**:\n- 10-15 RPM (requests per minute)\n- 1M-4M TPM (tokens per minute)\n- 1,500 RPD (requests per day)\n\n**YouTube Limits**:\n- Free tier: 8 hours\u002Fday\n- Paid tier: No length limits\n- Public videos only\n\n**Storage Limits**:\n- 20GB per project\n- 2GB per file\n- 48-hour retention\n\n## Error Handling\n\nCommon errors and solutions:\n- **400**: Invalid format\u002Fsize - validate before upload\n- **401**: Invalid API key - check configuration\n- **403**: Permission denied - verify API key restrictions\n- **404**: File not found - ensure file uploaded and active\n- **429**: Rate limit exceeded - implement exponential backoff\n- **500**: Server error - retry with backoff\n\n## Scripts Overview\n\nAll scripts support unified API key detection and error handling:\n\n**gemini_batch_process.py**: Batch process multiple media files\n- Supports all modalities (audio, image, video, PDF)\n- Progress tracking and error recovery\n- Output formats: JSON, Markdown, CSV\n- Rate limiting and retry logic\n- Dry-run mode\n\n**media_optimizer.py**: Prepare media for Gemini API\n- Compress videos\u002Faudio for size limits\n- Resize images appropriately\n- Split long videos into chunks\n- Format conversion\n- Quality vs size optimization\n\n**document_converter.py**: Convert documents to PDF\n- Convert DOCX, XLSX, PPTX to PDF\n- Extract page ranges\n- Optimize PDFs for Gemini\n- Extract images from PDFs\n- Batch conversion support\n\nRun any script with `--help` for detailed usage.\n\n## Resources\n\n- [Audio API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Faudio)\n- [Image API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fimage-understanding)\n- [Video API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fvideo-understanding)\n- [Document API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fdocument-processing)\n- [Image Gen Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fimage-generation)\n- [Get API Key](https:\u002F\u002Faistudio.google.com\u002Fapikey)\n- [Pricing](https:\u002F\u002Fai.google.dev\u002Fpricing)\n","# AI Multimodal Processing Skill\n\nProcess audio, images, videos, documents, and generate images using Google Gemini's multimodal API. Unified interface for all multimedia content understanding and generation.\n\n## Core Capabilities\n\n### Audio Processing\n- Transcription with timestamps (up to 9.5 hours)\n- Audio summarization and analysis\n- Speech understanding and speaker identification\n- Music and environmental sound analysis\n- Text-to-speech generation with controllable voice\n\n### Image Understanding\n- Image captioning and description\n- Object detection with bounding boxes (2.0+)\n- Pixel-level segmentation (2.5+)\n- Visual question answering\n- Multi-image comparison (up to 3,600 images)\n- OCR and text extraction\n\n### Video Analysis\n- Scene detection and summarization\n- Video Q&A with temporal understanding\n- Transcription with visual descriptions\n- YouTube URL support\n- Long video processing (up to 6 hours)\n- Frame-level analysis\n\n### Document Extraction\n- Native PDF vision processing (up to 1,000 pages)\n- Table and form extraction\n- Chart and diagram analysis\n- Multi-page document understanding\n- Structured data output (JSON schema)\n- Format conversion (PDF to HTML\u002FJSON)\n\n### Image Generation\n- Text-to-image generation\n- Image editing and modification\n- Multi-image composition (up to 3 images)\n- Iterative refinement\n- Multiple aspect ratios (1:1, 16:9, 9:16, 4:3, 3:4)\n- Controllable style and quality\n\n## Capability Matrix\n\n| Task | Audio | Image | Video | Document | Generation |\n|------|:-----:|:-----:|:-----:|:--------:|:----------:|\n| Transcription | ✓ | - | ✓ | - | - |\n| Summarization | ✓ | ✓ | ✓ | ✓ | - |\n| Q&A | ✓ | ✓ | ✓ | ✓ | - |\n| Object Detection | - | ✓ | ✓ | - | - |\n| Text Extraction | - | ✓ | - | ✓ | - |\n| Structured Output | ✓ | ✓ | ✓ | ✓ | - |\n| Creation | TTS | - | - | - | ✓ |\n| Timestamps | ✓ | - | ✓ | - | - |\n| Segmentation | - | ✓ | - | - | - |\n\n## Model Selection Guide\n\n### Gemini 2.5 Series (Recommended)\n- **gemini-2.5-pro**: Highest quality, all features, 1M-2M context\n- **gemini-2.5-flash**: Best balance, all features, 1M-2M context\n- **gemini-2.5-flash-lite**: Lightweight, segmentation support\n- **gemini-2.5-flash-image**: Image generation only\n\n### Gemini 2.0 Series\n- **gemini-2.0-flash**: Fast processing, object detection\n- **gemini-2.0-flash-lite**: Lightweight option\n\n### Feature Requirements\n- **Segmentation**: Requires 2.5+ models\n- **Object Detection**: Requires 2.0+ models\n- **Multi-video**: Requires 2.5+ models\n- **Image Generation**: Requires flash-image model\n\n### Context Windows\n- **2M tokens**: ~6 hours video (low-res) or ~2 hours (default)\n- **1M tokens**: ~3 hours video (low-res) or ~1 hour (default)\n- **Audio**: 32 tokens\u002Fsecond (1 min = 1,920 tokens)\n- **PDF**: 258 tokens\u002Fpage (fixed)\n- **Image**: 258-1,548 tokens based on size\n\n## Quick Start\n\n### Prerequisites\n\n**API Key Setup**: Supports both Google AI Studio and Vertex AI.\n\nThe skill checks for `GEMINI_API_KEY` in this order:\n1. Process environment: `export GEMINI_API_KEY=\"your-key\"`\n2. Project root: `.env`\n3. `.cursor\u002F.env`\n4. `.cursor\u002Fskills\u002F.env`\n5. `.cursor\u002Fskills\u002Fai-multimodal\u002F.env`\n\n**Get API key**: https:\u002F\u002Faistudio.google.com\u002Fapikey\n\n**For Vertex AI**:\n```bash\nexport GEMINI_USE_VERTEX=true\nexport VERTEX_PROJECT_ID=your-gcp-project-id\nexport VERTEX_LOCATION=us-central1  # Optional\n```\n\n**Install SDK**:\n```bash\npip install google-genai python-dotenv pillow\n```\n\n### Common Patterns\n\n**Transcribe Audio**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files audio.mp3 \\\n  --task transcribe \\\n  --model gemini-2.5-flash\n```\n\n**Analyze Image**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files image.jpg \\\n  --task analyze \\\n  --prompt \"Describe this image\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --model gemini-2.5-flash\n```\n\n**Process Video**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files video.mp4 \\\n  --task analyze \\\n  --prompt \"Summarize key points with timestamps\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --model gemini-2.5-flash\n```\n\n**Extract from PDF**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --files document.pdf \\\n  --task extract \\\n  --prompt \"Extract table data as JSON\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-name>.md \\\n  --format json\n```\n\n**Generate Image**:\n```bash\npython scripts\u002Fgemini_batch_process.py \\\n  --task generate \\\n  --prompt \"A futuristic city at sunset\" \\\n  --output docs\u002Fassets\u002F\u003Coutput-file-name> \\\n  --model gemini-2.5-flash-image \\\n  --aspect-ratio 16:9\n```\n\n**Optimize Media**:\n```bash\n# Prepare large video for processing\npython scripts\u002Fmedia_optimizer.py \\\n  --input large-video.mp4 \\\n  --output docs\u002Fassets\u002F\u003Coutput-file-name> \\\n  --target-size 100MB\n\n# Batch optimize multiple files\npython scripts\u002Fmedia_optimizer.py \\\n  --input-dir .\u002Fvideos \\\n  --output-dir docs\u002Fassets\u002Foptimized \\\n  --quality 85\n```\n\n**Convert Documents to Markdown**:\n```bash\n# Convert to PDF\npython scripts\u002Fdocument_converter.py \\\n  --input document.docx \\\n  --output docs\u002Fassets\u002Fdocument.md\n\n# Extract pages\npython scripts\u002Fdocument_converter.py \\\n  --input large.pdf \\\n  --output docs\u002Fassets\u002Fchapter1.md \\\n  --pages 1-20\n```\n\n## Supported Formats\n\n### Audio\n- WAV, MP3, AAC, FLAC, OGG Vorbis, AIFF\n- Max 9.5 hours per request\n- Auto-downsampled to 16 Kbps mono\n\n### Images\n- PNG, JPEG, WEBP, HEIC, HEIF\n- Max 3,600 images per request\n- Resolution: ≤384px = 258 tokens, larger = tiled\n\n### Video\n- MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, 3GPP\n- Max 6 hours (low-res) or 2 hours (default)\n- YouTube URLs supported (public only)\n\n### Documents\n- PDF only for vision processing\n- Max 1,000 pages\n- TXT, HTML, Markdown supported (text-only)\n\n### Size Limits\n- **Inline**: \u003C20MB total request\n- **File API**: 2GB per file, 20GB project quota\n- **Retention**: 48 hours auto-delete\n\n## Reference Navigation\n\nFor detailed implementation guidance, see:\n\n### Audio Processing\n- `references\u002Faudio-processing.md` - Transcription, analysis, TTS\n  - Timestamp handling and segment analysis\n  - Multi-speaker identification\n  - Non-speech audio analysis\n  - Text-to-speech generation\n\n### Image Understanding\n- `references\u002Fvision-understanding.md` - Captioning, detection, OCR\n  - Object detection and localization\n  - Pixel-level segmentation\n  - Visual question answering\n  - Multi-image comparison\n\n### Video Analysis\n- `references\u002Fvideo-analysis.md` - Scene detection, temporal understanding\n  - YouTube URL processing\n  - Timestamp-based queries\n  - Video clipping and FPS control\n  - Long video optimization\n\n### Document Extraction\n- `references\u002Fdocument-extraction.md` - PDF processing, structured output\n  - Table and form extraction\n  - Chart and diagram analysis\n  - JSON schema validation\n  - Multi-page handling\n\n### Image Generation\n- `references\u002Fimage-generation.md` - Text-to-image, editing\n  - Prompt engineering strategies\n  - Image editing and composition\n  - Aspect ratio selection\n  - Safety settings\n\n## Cost Optimization\n\n### Token Costs\n**Input Pricing**:\n- Gemini 2.5 Flash: $1.00\u002F1M input, $0.10\u002F1M output\n- Gemini 2.5 Pro: $3.00\u002F1M input, $12.00\u002F1M output\n- Gemini 1.5 Flash: $0.70\u002F1M input, $0.175\u002F1M output\n\n**Token Rates**:\n- Audio: 32 tokens\u002Fsecond (1 min = 1,920 tokens)\n- Video: ~300 tokens\u002Fsecond (default) or ~100 (low-res)\n- PDF: 258 tokens\u002Fpage (fixed)\n- Image: 258-1,548 tokens based on size\n\n**TTS Pricing**:\n- Flash TTS: $10\u002F1M tokens\n- Pro TTS: $20\u002F1M tokens\n\n### Best Practices\n1. Use `gemini-2.5-flash` for most tasks (best price\u002Fperformance)\n2. Use File API for files >20MB or repeated queries\n3. Optimize media before upload (see `media_optimizer.py`)\n4. Process specific segments instead of full videos\n5. Use lower FPS for static content\n6. Implement context caching for repeated queries\n7. Batch process multiple files in parallel\n\n## Rate Limits\n\n**Free Tier**:\n- 10-15 RPM (requests per minute)\n- 1M-4M TPM (tokens per minute)\n- 1,500 RPD (requests per day)\n\n**YouTube Limits**:\n- Free tier: 8 hours\u002Fday\n- Paid tier: No length limits\n- Public videos only\n\n**Storage Limits**:\n- 20GB per project\n- 2GB per file\n- 48-hour retention\n\n## Error Handling\n\nCommon errors and solutions:\n- **400**: Invalid format\u002Fsize - validate before upload\n- **401**: Invalid API key - check configuration\n- **403**: Permission denied - verify API key restrictions\n- **404**: File not found - ensure file uploaded and active\n- **429**: Rate limit exceeded - implement exponential backoff\n- **500**: Server error - retry with backoff\n\n## Scripts Overview\n\nAll scripts support unified API key detection and error handling:\n\n**gemini_batch_process.py**: Batch process multiple media files\n- Supports all modalities (audio, image, video, PDF)\n- Progress tracking and error recovery\n- Output formats: JSON, Markdown, CSV\n- Rate limiting and retry logic\n- Dry-run mode\n\n**media_optimizer.py**: Prepare media for Gemini API\n- Compress videos\u002Faudio for size limits\n- Resize images appropriately\n- Split long videos into chunks\n- Format conversion\n- Quality vs size optimization\n\n**document_converter.py**: Convert documents to PDF\n- Convert DOCX, XLSX, PPTX to PDF\n- Extract page ranges\n- Optimize PDFs for Gemini\n- Extract images from PDFs\n- Batch conversion support\n\nRun any script with `--help` for detailed usage.\n\n## Resources\n\n- [Audio API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Faudio)\n- [Image API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fimage-understanding)\n- [Video API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fvideo-understanding)\n- [Document API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fdocument-processing)\n- [Image Gen Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fimage-generation)\n- [Get API Key](https:\u002F\u002Faistudio.google.com\u002Fapikey)\n- [Pricing](https:\u002F\u002Fai.google.dev\u002Fpricing)\n",{"name":5,"license":15,"description":7,"allowed-tools":52},[34,53,54,55],"Read","Write","Edit","main","358b3445db2e9648a2a1eb5aa6ccf8d04b40aed5",".cursor\u002Fskills\u002Fai-multimodal","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager","https:\u002F\u002Fgithub.com\u002FPuh1001","2026-08-27 15:22:57",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Puh1001\u002FDocumentManager --skill ai-multimodal",{"tool":68,"command":69},"bunx","bunx skills add Puh1001\u002FDocumentManager --skill ai-multimodal",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Puh1001\u002FDocumentManager --skill ai-multimodal","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002FSKILL.md",true,[76,82,86,90,94,98,104,108,112,116,120,123,127,131,135,139],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Faudio-processing.md","REFERENCE","参考文档",9382,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Freferences\u002Faudio-processing.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fimage-generation.md",13159,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fimage-generation.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fvideo-analysis.md",11400,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fvideo-analysis.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fvision-understanding.md",10809,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fvision-understanding.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"requires.yaml",33,"https:\u002F\u002Fgithub.com\u002Fjthorare\u002Fagentic-workflow\u002Fblob\u002Fmain\u002Fskills\u002Fcso\u002Frequires.yaml",{"path":99,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002F.coverage","SCRIPT","脚本",53248,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002F.coverage",{"path":105,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Fdocument_converter.py",12487,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fdocument_converter.py",{"path":109,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Fgemini_batch_process.py",17143,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fgemini_batch_process.py",{"path":113,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":114,"sourceHtmlUrl":115},"scripts\u002Fmedia_optimizer.py",16467,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fmedia_optimizer.py",{"path":117,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":118,"sourceHtmlUrl":119},"scripts\u002Frequirements.txt",442,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Frequirements.txt",{"path":121,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":102,"sourceHtmlUrl":122},"scripts\u002Ftests\u002F.coverage","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002F.coverage",{"path":124,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":125,"sourceHtmlUrl":126},"scripts\u002Ftests\u002Frequirements.txt",352,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Frequirements.txt",{"path":128,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":129,"sourceHtmlUrl":130},"scripts\u002Ftests\u002Ftest_document_converter.py",9806,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_document_converter.py",{"path":132,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":133,"sourceHtmlUrl":134},"scripts\u002Ftests\u002Ftest_failures.log",17996,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_failures.log",{"path":136,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":137,"sourceHtmlUrl":138},"scripts\u002Ftests\u002Ftest_gemini_batch_process.py",12677,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_gemini_batch_process.py",{"path":140,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":141,"sourceHtmlUrl":142},"scripts\u002Ftests\u002Ftest_media_optimizer.py",11824,"https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_media_optimizer.py",[144,170,198,214,226,239],{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":47},"01M6C6KM8ATYVBF1N5APKVNBB7","web-frameworks","Build modern full-stack web applications with Next.js (App Router, Server Components, RSC, PPR, SSR, SSG, ISR), Turborepo (monorepo management, task pipelines, remote caching, parallel execution), and RemixIcon (3100+ SVG icons in outlined\u002Ffilled styles). Use when creating React applications, implementing server-side rendering, setting up monorepos with multiple packages, optimizing build performance and caching strategies, adding icon libraries, managing shared dependencies, or working with TypeScript full-stack projects.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,32,169],"web frameworks","web","packages","performance","components","react","libraries","icons","server","execution","applications","Next.js","projects","stack","parallel","monorepo","use","router","parallel execution",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":184,"publishedAt":47},"01M6C6KB8QQMY48245ME59F53S","ui-styling","Create beautiful, accessible user interfaces with shadcn\u002Fui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs. Use when building user interfaces, implementing design systems, creating responsive layouts, adding accessible components (dialogs, dropdowns, forms, tables), customizing themes and colors, implementing dark mode, generating visual designs and posters, or establishing consistent styling patterns across applications.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fui-styling\u002FSKILL.md",[176,179],{"categoryNo":177,"categoryName":178,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":180,"categoryName":181,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[185,186,187,161,188,189,190,191,167,192,193,194,195,196,155,197],"styling","ui","ui styling","first","Tailwind","user","radix ui","design systems","shadcn","design","css","canvas","create",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":204,"publishedAt":47},"01M6C6K7PSNBKAYJ87DPY53TDH","threejs","Build 3D web apps with Three.js (WebGL\u002FWebGPU). Use for 3D scenes, animations, custom shaders, PBR materials, VR\u002FXR experiences, games, data visualizations, product configurators.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fthreejs\u002FSKILL.md",[],[200,205,206,207,152,208,209,210,211,212,213,167],"shaders","pbr","webgl","webgpu","product","data","3D","visualizations","js",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":220,"publishedAt":47},"01M6C6JWR09E0AK5RW0NZ2JCFH","sequential-thinking","Use when complex problems require systematic step-by-step reasoning with ability to revise thoughts, branch into alternative approaches, or dynamically adjust scope. Ideal for multi-stage analysis, design planning, problem decomposition, or tasks with initially unclear scope.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[221,194,222,223,224,41,225,167],"sequential thinking","tasks","planning","reasoning","branch",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":235,"publishedAt":47},"01M6C6JTHFE94X3BM9KDM58Q3R","research","Use when you need to research, analyze, and plan technical solutions that are scalable, secure, and maintainable.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fresearch\u002FSKILL.md",[232],{"categoryNo":233,"categoryName":234,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[228,236,167,237,238,33],"technical","plan","secure",{"skillNo":240,"name":223,"nameZh":6,"description":241,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":242,"categories":243,"keywords":244,"publishedAt":47},"01M6C6JHPABQ6JRE0DFQQSQ2YA","Use when you need to plan technical solutions that are scalable, secure, and maintainable.","https:\u002F\u002Fgithub.com\u002FPuh1001\u002FDocumentManager\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fplanning\u002FSKILL.md",[],[223,167,236,237,238]]