[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MVH26117SYD556J2KJS09Z":3,"skill-same:01M6MVH26117SYD556J2KJS09Z":99},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6MVH26117SYD556J2KJS09Z","video-ad-analyzer",null,"Extract and analyze content from video ads using Gemini Vision AI. Supports frame extraction, OCR text detection, audio transcription, and AI-powered scene analysis. Use when analyzing video creative content, extracting text overlays, or generating scene-by-scene descriptions.","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"video ad analyzer","Video","analyzer","ad","use","frame","overlays","gemini vision","extracting","transcription","creative","gemini","text","analyze","ads","Audio","analysis","ocr","detection","analyzing","2026-11-10 10:12:30",false,"---\nname: video-ad-analyzer\nversion: 1.0.0\ndescription: Extract and analyze content from video ads using Gemini Vision AI. Supports frame extraction, OCR text detection, audio transcription, and AI-powered scene analysis. Use when analyzing video creative content, extracting text overlays, or generating scene-by-scene descriptions.\n---\n\n# Video Ad Analyzer\n\nAI-powered video content extraction using Google Gemini Vision.\n\n## What This Skill Does\n\n- **Frame Extraction**: Smart sampling with scene change detection\n- **OCR Text Detection**: Extract text overlays using EasyOCR\n- **Audio Transcription**: Convert speech to text with Google Cloud Speech\n- **AI Scene Analysis**: Describe each scene using Gemini Vision\n- **Native Video Analysis**: Direct video understanding for longer content\n- **Thumbnail Generation**: Auto-generate thumbnails from first frame\n\n## Setup\n\n### 1. Environment Variables\n\n```bash\n# Required for Gemini Vision\nGOOGLE_APPLICATION_CREDENTIALS=\u002Fpath\u002Fto\u002Fservice-account.json\n\n# Required for audio transcription\n# (same service account needs Speech-to-Text API enabled)\n```\n\n### 2. Dependencies\n\n```bash\npip install opencv-python pillow easyocr ffmpeg-python google-cloud-speech vertexai google-api-python-client\n```\n\nAlso requires `ffmpeg` and `ffprobe` installed on system.\n\n## Usage\n\n### Basic Video Analysis\n\n```python\nfrom scripts.video_extractor import VideoExtractor\nfrom scripts.models import ExtractedVideoContent\nimport vertexai\nfrom vertexai.generative_models import GenerativeModel\n\n# Initialize Vertex AI\nvertexai.init(project=\"your-project-id\", location=\"us-central1\")\ngemini_model = GenerativeModel(\"gemini-1.5-flash\")\n\n# Create extractor\nextractor = VideoExtractor(gemini_model=gemini_model)\n\n# Analyze video\nresult = extractor.extract_content(\"\u002Fpath\u002Fto\u002Fvideo.mp4\")\n\nprint(f\"Duration: {result.duration}s\")\nprint(f\"Scenes: {len(result.scene_timeline)}\")\nprint(f\"Text overlays: {len(result.text_timeline)}\")\nprint(f\"Transcript: {result.transcript[:200]}...\")\n```\n\n### Extract Only Frames\n\n```python\nframes, timestamps, text_timeline, scene_timeline, thumbnail = extractor.extract_smart_frames(\n    \"\u002Fpath\u002Fto\u002Fvideo.mp4\",\n    scene_interval=2,    # Check for scene changes every 2s\n    text_interval=0.5    # Check for text every 0.5s\n)\n```\n\n### Analyze Images\n\n```python\n# Works with images too\nresult = extractor.extract_content(\"\u002Fpath\u002Fto\u002Fimage.jpg\")\nprint(result.scene_timeline[0]['description'])\n```\n\n## Output Structure\n\n```python\nExtractedVideoContent(\n    video_path=\"\u002Fpath\u002Fto\u002Fvideo.mp4\",\n    duration=30.5,\n    transcript=\"Here's what we found...\",\n    text_timeline=[\n        {\"at\": 0.0, \"text\": [\"Download Now\"]},\n        {\"at\": 5.5, \"text\": [\"50% Off Today\"]}\n    ],\n    scene_timeline=[\n        {\"timestamp\": 0.0, \"description\": \"Woman using phone app...\"},\n        {\"timestamp\": 2.0, \"description\": \"Product showcase with features...\"}\n    ],\n    thumbnail_url=\"\u002Fstatic\u002Fthumbnails\u002Fvideo_thumb.jpg\",\n    extraction_complete=True\n)\n```\n\n## Key Features\n\n| Feature | Description |\n|---------|-------------|\n| Scene Detection | Histogram-based change detection (threshold=65) |\n| OCR Confidence | Tiered thresholds (0.5 high, 0.3 low) |\n| AI Proofreading | Gemini cleans up OCR errors |\n| Source Reconciliation | Merges OCR + Vision text intelligently |\n| Native Video | Direct Gemini analysis for \u003C20MB files |\n\n## Prompts\n\nCustomize AI behavior by editing prompts in the `prompts\u002F` folder:\n\n- `scene_analysis.md` - Frame analysis prompts\n- `scene_reconciliation.md` - Scene enrichment prompts\n\n## Common Questions This Answers\n\n- \"What text appears in this video ad?\"\n- \"Describe each scene in this creative\"\n- \"What does the narrator say?\"\n- \"Extract the call-to-action from this ad\"\n","# Video Ad Analyzer\n\nAI-powered video content extraction using Google Gemini Vision.\n\n## What This Skill Does\n\n- **Frame Extraction**: Smart sampling with scene change detection\n- **OCR Text Detection**: Extract text overlays using EasyOCR\n- **Audio Transcription**: Convert speech to text with Google Cloud Speech\n- **AI Scene Analysis**: Describe each scene using Gemini Vision\n- **Native Video Analysis**: Direct video understanding for longer content\n- **Thumbnail Generation**: Auto-generate thumbnails from first frame\n\n## Setup\n\n### 1. Environment Variables\n\n```bash\n# Required for Gemini Vision\nGOOGLE_APPLICATION_CREDENTIALS=\u002Fpath\u002Fto\u002Fservice-account.json\n\n# Required for audio transcription\n# (same service account needs Speech-to-Text API enabled)\n```\n\n### 2. Dependencies\n\n```bash\npip install opencv-python pillow easyocr ffmpeg-python google-cloud-speech vertexai google-api-python-client\n```\n\nAlso requires `ffmpeg` and `ffprobe` installed on system.\n\n## Usage\n\n### Basic Video Analysis\n\n```python\nfrom scripts.video_extractor import VideoExtractor\nfrom scripts.models import ExtractedVideoContent\nimport vertexai\nfrom vertexai.generative_models import GenerativeModel\n\n# Initialize Vertex AI\nvertexai.init(project=\"your-project-id\", location=\"us-central1\")\ngemini_model = GenerativeModel(\"gemini-1.5-flash\")\n\n# Create extractor\nextractor = VideoExtractor(gemini_model=gemini_model)\n\n# Analyze video\nresult = extractor.extract_content(\"\u002Fpath\u002Fto\u002Fvideo.mp4\")\n\nprint(f\"Duration: {result.duration}s\")\nprint(f\"Scenes: {len(result.scene_timeline)}\")\nprint(f\"Text overlays: {len(result.text_timeline)}\")\nprint(f\"Transcript: {result.transcript[:200]}...\")\n```\n\n### Extract Only Frames\n\n```python\nframes, timestamps, text_timeline, scene_timeline, thumbnail = extractor.extract_smart_frames(\n    \"\u002Fpath\u002Fto\u002Fvideo.mp4\",\n    scene_interval=2,    # Check for scene changes every 2s\n    text_interval=0.5    # Check for text every 0.5s\n)\n```\n\n### Analyze Images\n\n```python\n# Works with images too\nresult = extractor.extract_content(\"\u002Fpath\u002Fto\u002Fimage.jpg\")\nprint(result.scene_timeline[0]['description'])\n```\n\n## Output Structure\n\n```python\nExtractedVideoContent(\n    video_path=\"\u002Fpath\u002Fto\u002Fvideo.mp4\",\n    duration=30.5,\n    transcript=\"Here's what we found...\",\n    text_timeline=[\n        {\"at\": 0.0, \"text\": [\"Download Now\"]},\n        {\"at\": 5.5, \"text\": [\"50% Off Today\"]}\n    ],\n    scene_timeline=[\n        {\"timestamp\": 0.0, \"description\": \"Woman using phone app...\"},\n        {\"timestamp\": 2.0, \"description\": \"Product showcase with features...\"}\n    ],\n    thumbnail_url=\"\u002Fstatic\u002Fthumbnails\u002Fvideo_thumb.jpg\",\n    extraction_complete=True\n)\n```\n\n## Key Features\n\n| Feature | Description |\n|---------|-------------|\n| Scene Detection | Histogram-based change detection (threshold=65) |\n| OCR Confidence | Tiered thresholds (0.5 high, 0.3 low) |\n| AI Proofreading | Gemini cleans up OCR errors |\n| Source Reconciliation | Merges OCR + Vision text intelligently |\n| Native Video | Direct Gemini analysis for \u003C20MB files |\n\n## Prompts\n\nCustomize AI behavior by editing prompts in the `prompts\u002F` folder:\n\n- `scene_analysis.md` - Frame analysis prompts\n- `scene_reconciliation.md` - Scene enrichment prompts\n\n## Common Questions This Answers\n\n- \"What text appears in this video ad?\"\n- \"Describe each scene in this creative\"\n- \"What does the narrator say?\"\n- \"Extract the call-to-action from this ad\"\n",{"name":5,"version":48,"description":7},"1.0.0","main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","PDF及文件\u002Fmeta-video-ad-analyzer",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill video-ad-analyzer",{"tool":63,"command":64},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill video-ad-analyzer",{"tool":66,"command":67},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill video-ad-analyzer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002FSKILL.md",true,[71,77,81,85,91,95],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"_meta.json","REFERENCE","参考文档",300,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002F_meta.json",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"prompts\u002Fscene_analysis.md",3391,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002Fprompts\u002Fscene_analysis.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"prompts\u002Fscene_reconciliation.md",3671,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002Fprompts\u002Fscene_reconciliation.md",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fmodels.py","SCRIPT","脚本",548,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002Fscripts\u002Fmodels.py",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fprompt_manager.py",4986,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002Fscripts\u002Fprompt_manager.py",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fvideo_extractor.py",28663,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002FPDF及文件\u002Fmeta-video-ad-analyzer\u002Fscripts\u002Fvideo_extractor.py",[100,123,157,168,178,208],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":43},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[102,107,108,109,110,111,27,112,113,114,115,116,117,118,119,120,121,122],"safe","ethereum","defi","Optimization","user","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":124,"name":125,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":139,"publishedAt":43},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[128,131,134],{"categoryNo":129,"categoryName":130,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":132,"categoryName":133,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[140,141,142,143,144,145,146,109,147,112,148,149,150,151,152,153,154,155,156],"api","zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":158,"name":159,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":165,"publishedAt":43},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[162,163,164],{"categoryNo":129,"categoryName":130,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":132,"categoryName":133,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},[140,166,167,141,142,143,144,145,146,109,147,112,149,150,151,152,153,154,155,156],"api skill","zerion api skill",{"skillNo":169,"name":170,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":176,"publishedAt":43},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[173,174,175],{"categoryNo":129,"categoryName":130,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":132,"categoryName":133,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},[143,140,177,141,142,144,145,109,147,112,148,149,150,151,152,153,154,155,156],"zerion api mcp",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":187,"publishedAt":43},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[184],{"categoryNo":185,"categoryName":186,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000040","财务",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","https","sentiment","real-time","python3","install","Market","usd","news","time","currency","gbp","pip","market data","for",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":215,"publishedAt":43},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[214],{"categoryNo":185,"categoryName":186,"taxonomyType":137,"taxonomyTypeDesc":138},[188,189,191,216,217,218,219,220,221,199,222,223,224,225,226,227,228,229,156,206],"cli","homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]