[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XDH5PD6B7CVJFEJ158M2NM":3,"skill-same:01M6XDH5PD6B7CVJFEJ158M2NM":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":13,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6XDH5PD6B7CVJFEJ158M2NM","gemini-video-understanding",null,"Analyze videos with Google Gemini API (summaries, Q&A, transcription with timestamps + visual context, scene\u002Ftimeline detection, video clipping, FPS control, multi-video comparison, and YouTube URL analysis).","Waaaalnut\u002Fskillsbench","Waaaalnut","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103995656?v=4","01M6XCS9K1V51EY3JMB7DGMX24","01M6XCS9Q4WPW88W62C55G1H44",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fpedestrian-traffic-counting\u002Fenvironment\u002Fskills\u002Fgemini-video-understanding\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"gemini","gemini video understanding","video understanding","gemini video","Video","api","analyze","analysis","context","youtube","visual","url analysis","comparison","with","URL","timestamps","google gemini api","q&a","gemini api","google","2026-11-10 10:12:30",false,"---\nname: gemini-video-understanding\ndescription: Analyze videos with Google Gemini API (summaries, Q&A, transcription with timestamps + visual context, scene\u002Ftimeline detection, video clipping, FPS control, multi-video comparison, and YouTube URL analysis).\n---\n\n# Gemini Video Understanding Skill\n\n## Purpose\nThis skill enables video understanding workflows using the Google Gemini API, including **video summarization**, **question answering**, **transcription with optional visual descriptions**, **timestamp-based queries (MM:SS)**, **scene\u002Ftimeline detection**, **video clipping**, **custom FPS sampling**, **multi-video comparison**, and **YouTube URL analysis**.\n\n## When to Use\n- Summarizing a video into key points or chapters\n- Answering questions about what happens at specific timestamps (MM:SS)\n- Producing a transcript (optionally with visual context) and speaker labels\n- Detecting scene changes or building a timeline of events\n- Analyzing long videos by clipping to relevant segments or reducing FPS\n- Comparing multiple videos (up to 10 videos on Gemini 2.5+)\n- Analyzing public YouTube videos directly via URL\n\n## Required Libraries\n\nThe following Python libraries are required:\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\nimport time\n```\n\n## Input Requirements\n- **File formats**: MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, 3GPP\n- **Size constraints**:\n  - Use inline bytes for small files (rule of thumb: \u003C20MB).\n  - Use the File API upload flow for larger videos (most real videos).\n- **YouTube**:\n  - Video must be **public** (not private\u002Funlisted) and not age-restricted.\n  - Provide a valid YouTube URL.\n- **Duration \u002F context window** (model-dependent):\n  - 2M-token models: ~2 hours (default resolution) or ~6 hours (low-res).\n  - 1M-token models: ~1 hour (default) or ~3 hours (low-res).\n- **Timestamps**: Use **MM:SS** (e.g., `01:15`) when requesting time-based answers.\n\n## Output Schema\nAll extracted\u002Fderived content should be returned as valid JSON conforming to this schema:\n\n```json\n{\n  \"success\": true,\n  \"source\": {\n    \"type\": \"file|youtube\",\n    \"id\": \"video.mp4|VIDEO_ID_OR_URL\",\n    \"model\": \"gemini-2.5-flash\"\n  },\n  \"summary\": \"Concise summary of the video...\",\n  \"transcript\": {\n    \"available\": true,\n    \"text\": \"Full transcript text (may include speaker labels)...\",\n    \"includes_visual_descriptions\": true\n  },\n  \"events\": [\n    {\n      \"timestamp\": \"MM:SS\",\n      \"description\": \"What happens at this time\",\n      \"category\": \"scene_change|key_point|action|other\"\n    }\n  ],\n  \"warnings\": [\n    \"Optional warnings about limitations, missing timestamps, or low confidence areas\"\n  ]\n}\n```\n\n### Field Descriptions\n- `success`: Whether the analysis completed successfully\n- `source.type`: `file` for uploaded\u002Flocal content, `youtube` for YouTube analysis\n- `source.id`: Filename for local uploads, or URL\u002FID for YouTube\n- `source.model`: Gemini model used for the request\n- `summary`: High-level video summary\n- `transcript.*`: Transcript payload (may be omitted or `available=false` if not requested)\n- `events`: Timeline items with **MM:SS** timestamps (chapters, scene changes, key actions)\n- `warnings`: Any issues that could affect correctness (e.g., “timestamp not found”, “long video clipped”)\n\n## Code Examples\n\n### Basic Video Analysis (Local Video + File API)\n\n```python\nfrom google import genai\nimport os\nimport time\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\n# Upload video (File API for >20MB)\nmyfile = client.files.upload(file=\"video.mp4\")\n\n# Wait for processing\nwhile myfile.state.name == \"PROCESSING\":\n    time.sleep(1)\n    myfile = client.files.get(name=myfile.name)\n\nif myfile.state.name == \"FAILED\":\n    raise ValueError(\"Video processing failed\")\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\"Summarize this video in 3 key points\", myfile],\n)\n\nprint(response.text)\n```\n\n### YouTube Video Analysis (Public Videos Only)\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Summarize the main topics discussed\",\n        types.Part.from_uri(\n            uri=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VIDEO_ID\",\n            mime_type=\"video\u002Fmp4\",\n        ),\n    ],\n)\n\nprint(response.text)\n```\n\n### Inline Video (\u003C20MB)\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\nwith open(\"short-clip.mp4\", \"rb\") as f:\n    video_bytes = f.read()\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"What happens in this video?\",\n        types.Part.from_bytes(data=video_bytes, mime_type=\"video\u002Fmp4\"),\n    ],\n)\n\nprint(response.text)\n```\n\n### Video Clipping (Analyze a Segment Only)\n\n```python\nfrom google.genai import types\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Summarize this segment\",\n        types.Part.from_video_metadata(\n            file_uri=myfile.uri,\n            start_offset=\"40s\",\n            end_offset=\"80s\",\n        ),\n    ],\n)\n```\n\n### Custom Frame Rate (Token\u002FCost Control)\n\n```python\nfrom google.genai import types\n\n# Lower FPS for static content (saves tokens)\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Analyze this presentation\",\n        types.Part.from_video_metadata(file_uri=myfile.uri, fps=0.5),\n    ],\n)\n\n# Higher FPS for fast-moving content\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Analyze rapid movements in this sports video\",\n        types.Part.from_video_metadata(file_uri=myfile.uri, fps=5),\n    ],\n)\n```\n\n### Timeline \u002F Scene Detection (MM:SS)\n\n```python\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"\"\"Create a timeline with timestamps:\n        - Key events\n        - Scene changes\n        - Important moments\n        Format: MM:SS - Description\n        \"\"\",\n        myfile,\n    ],\n)\n```\n\n### Transcription (Optional Visual Descriptions)\n\n```python\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"\"\"Transcribe with visual context:\n        - Audio transcription\n        - Visual descriptions of important moments\n        - Timestamps for salient events\n        \"\"\",\n        myfile,\n    ],\n)\n```\n\n### Structured JSON Output (Schema-Guided)\n\n```python\nfrom pydantic import BaseModel\nfrom typing import List\nfrom google.genai import types as genai_types\n\nclass VideoEvent(BaseModel):\n    timestamp: str  # MM:SS\n    description: str\n    category: str\n\nclass VideoAnalysis(BaseModel):\n    summary: str\n    events: List[VideoEvent]\n    duration: str\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\"Analyze this video\", myfile],\n    config=genai_types.GenerateContentConfig(\n        response_mime_type=\"application\u002Fjson\",\n        response_schema=VideoAnalysis,\n    ),\n)\n```\n\n## Best Practices\n- **Use the File API** for most videos (>20MB) and wait for processing to complete before analysis.\n- **Reduce token usage** by clipping to the relevant segment and\u002For lowering FPS for static content.\n- **Improve accuracy** by being explicit about the desired output (timestamps format, number of events, whether you want scene changes vs actions vs chapters).\n- **Use `gemini-2.5-pro`** when you need highest-quality reasoning over complex, long, or visually dense videos.\n\n## Error Handling\n\n```python\nimport time\n\ndef upload_and_wait(client, file_path: str, max_wait_s: int = 300):\n    myfile = client.files.upload(file=file_path)\n    waited = 0\n\n    while myfile.state.name == \"PROCESSING\" and waited \u003C max_wait_s:\n        time.sleep(5)\n        waited += 5\n        myfile = client.files.get(name=myfile.name)\n\n    if myfile.state.name == \"FAILED\":\n        raise ValueError(f\"Video processing failed: {myfile.state.name}\")\n    if myfile.state.name == \"PROCESSING\":\n        raise TimeoutError(f\"Processing timeout after {max_wait_s}s\")\n\n    return myfile\n```\n\nCommon issues:\n- **Upload processing stuck**: wait and poll; fail after a max timeout.\n- **YouTube errors**: verify the video is public and not age-restricted.\n- **Rate limits**: retry with exponential backoff.\n- **Incorrect timestamps**: re-prompt with strict “MM:SS” formatting and request fewer events.\n\n## Limitations\n- Long-video support is limited by model context and token budget (default vs low-res modes).\n- YouTube analysis requires public videos; live streaming analysis is not supported.\n- Very long videos may require chunking (clip by time range and process in segments).\n- Multi-video comparison is limited (up to 10 videos per request on Gemini 2.5+).\n\n## Version History\n- **1.0.0** (2026-01-15): Initial release focused on Gemini video understanding (summaries, Q&A, timestamps, clipping, FPS control, YouTube, and structured outputs).\n\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","# Gemini Video Understanding Skill\n\n## Purpose\nThis skill enables video understanding workflows using the Google Gemini API, including **video summarization**, **question answering**, **transcription with optional visual descriptions**, **timestamp-based queries (MM:SS)**, **scene\u002Ftimeline detection**, **video clipping**, **custom FPS sampling**, **multi-video comparison**, and **YouTube URL analysis**.\n\n## When to Use\n- Summarizing a video into key points or chapters\n- Answering questions about what happens at specific timestamps (MM:SS)\n- Producing a transcript (optionally with visual context) and speaker labels\n- Detecting scene changes or building a timeline of events\n- Analyzing long videos by clipping to relevant segments or reducing FPS\n- Comparing multiple videos (up to 10 videos on Gemini 2.5+)\n- Analyzing public YouTube videos directly via URL\n\n## Required Libraries\n\nThe following Python libraries are required:\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\nimport time\n```\n\n## Input Requirements\n- **File formats**: MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, 3GPP\n- **Size constraints**:\n  - Use inline bytes for small files (rule of thumb: \u003C20MB).\n  - Use the File API upload flow for larger videos (most real videos).\n- **YouTube**:\n  - Video must be **public** (not private\u002Funlisted) and not age-restricted.\n  - Provide a valid YouTube URL.\n- **Duration \u002F context window** (model-dependent):\n  - 2M-token models: ~2 hours (default resolution) or ~6 hours (low-res).\n  - 1M-token models: ~1 hour (default) or ~3 hours (low-res).\n- **Timestamps**: Use **MM:SS** (e.g., `01:15`) when requesting time-based answers.\n\n## Output Schema\nAll extracted\u002Fderived content should be returned as valid JSON conforming to this schema:\n\n```json\n{\n  \"success\": true,\n  \"source\": {\n    \"type\": \"file|youtube\",\n    \"id\": \"video.mp4|VIDEO_ID_OR_URL\",\n    \"model\": \"gemini-2.5-flash\"\n  },\n  \"summary\": \"Concise summary of the video...\",\n  \"transcript\": {\n    \"available\": true,\n    \"text\": \"Full transcript text (may include speaker labels)...\",\n    \"includes_visual_descriptions\": true\n  },\n  \"events\": [\n    {\n      \"timestamp\": \"MM:SS\",\n      \"description\": \"What happens at this time\",\n      \"category\": \"scene_change|key_point|action|other\"\n    }\n  ],\n  \"warnings\": [\n    \"Optional warnings about limitations, missing timestamps, or low confidence areas\"\n  ]\n}\n```\n\n### Field Descriptions\n- `success`: Whether the analysis completed successfully\n- `source.type`: `file` for uploaded\u002Flocal content, `youtube` for YouTube analysis\n- `source.id`: Filename for local uploads, or URL\u002FID for YouTube\n- `source.model`: Gemini model used for the request\n- `summary`: High-level video summary\n- `transcript.*`: Transcript payload (may be omitted or `available=false` if not requested)\n- `events`: Timeline items with **MM:SS** timestamps (chapters, scene changes, key actions)\n- `warnings`: Any issues that could affect correctness (e.g., “timestamp not found”, “long video clipped”)\n\n## Code Examples\n\n### Basic Video Analysis (Local Video + File API)\n\n```python\nfrom google import genai\nimport os\nimport time\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\n# Upload video (File API for >20MB)\nmyfile = client.files.upload(file=\"video.mp4\")\n\n# Wait for processing\nwhile myfile.state.name == \"PROCESSING\":\n    time.sleep(1)\n    myfile = client.files.get(name=myfile.name)\n\nif myfile.state.name == \"FAILED\":\n    raise ValueError(\"Video processing failed\")\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\"Summarize this video in 3 key points\", myfile],\n)\n\nprint(response.text)\n```\n\n### YouTube Video Analysis (Public Videos Only)\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Summarize the main topics discussed\",\n        types.Part.from_uri(\n            uri=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VIDEO_ID\",\n            mime_type=\"video\u002Fmp4\",\n        ),\n    ],\n)\n\nprint(response.text)\n```\n\n### Inline Video (\u003C20MB)\n\n```python\nfrom google import genai\nfrom google.genai import types\nimport os\n\nclient = genai.Client(api_key=os.getenv(\"GEMINI_API_KEY\"))\n\nwith open(\"short-clip.mp4\", \"rb\") as f:\n    video_bytes = f.read()\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"What happens in this video?\",\n        types.Part.from_bytes(data=video_bytes, mime_type=\"video\u002Fmp4\"),\n    ],\n)\n\nprint(response.text)\n```\n\n### Video Clipping (Analyze a Segment Only)\n\n```python\nfrom google.genai import types\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Summarize this segment\",\n        types.Part.from_video_metadata(\n            file_uri=myfile.uri,\n            start_offset=\"40s\",\n            end_offset=\"80s\",\n        ),\n    ],\n)\n```\n\n### Custom Frame Rate (Token\u002FCost Control)\n\n```python\nfrom google.genai import types\n\n# Lower FPS for static content (saves tokens)\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Analyze this presentation\",\n        types.Part.from_video_metadata(file_uri=myfile.uri, fps=0.5),\n    ],\n)\n\n# Higher FPS for fast-moving content\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"Analyze rapid movements in this sports video\",\n        types.Part.from_video_metadata(file_uri=myfile.uri, fps=5),\n    ],\n)\n```\n\n### Timeline \u002F Scene Detection (MM:SS)\n\n```python\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"\"\"Create a timeline with timestamps:\n        - Key events\n        - Scene changes\n        - Important moments\n        Format: MM:SS - Description\n        \"\"\",\n        myfile,\n    ],\n)\n```\n\n### Transcription (Optional Visual Descriptions)\n\n```python\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\n        \"\"\"Transcribe with visual context:\n        - Audio transcription\n        - Visual descriptions of important moments\n        - Timestamps for salient events\n        \"\"\",\n        myfile,\n    ],\n)\n```\n\n### Structured JSON Output (Schema-Guided)\n\n```python\nfrom pydantic import BaseModel\nfrom typing import List\nfrom google.genai import types as genai_types\n\nclass VideoEvent(BaseModel):\n    timestamp: str  # MM:SS\n    description: str\n    category: str\n\nclass VideoAnalysis(BaseModel):\n    summary: str\n    events: List[VideoEvent]\n    duration: str\n\nresponse = client.models.generate_content(\n    model=\"gemini-2.5-flash\",\n    contents=[\"Analyze this video\", myfile],\n    config=genai_types.GenerateContentConfig(\n        response_mime_type=\"application\u002Fjson\",\n        response_schema=VideoAnalysis,\n    ),\n)\n```\n\n## Best Practices\n- **Use the File API** for most videos (>20MB) and wait for processing to complete before analysis.\n- **Reduce token usage** by clipping to the relevant segment and\u002For lowering FPS for static content.\n- **Improve accuracy** by being explicit about the desired output (timestamps format, number of events, whether you want scene changes vs actions vs chapters).\n- **Use `gemini-2.5-pro`** when you need highest-quality reasoning over complex, long, or visually dense videos.\n\n## Error Handling\n\n```python\nimport time\n\ndef upload_and_wait(client, file_path: str, max_wait_s: int = 300):\n    myfile = client.files.upload(file=file_path)\n    waited = 0\n\n    while myfile.state.name == \"PROCESSING\" and waited \u003C max_wait_s:\n        time.sleep(5)\n        waited += 5\n        myfile = client.files.get(name=myfile.name)\n\n    if myfile.state.name == \"FAILED\":\n        raise ValueError(f\"Video processing failed: {myfile.state.name}\")\n    if myfile.state.name == \"PROCESSING\":\n        raise TimeoutError(f\"Processing timeout after {max_wait_s}s\")\n\n    return myfile\n```\n\nCommon issues:\n- **Upload processing stuck**: wait and poll; fail after a max timeout.\n- **YouTube errors**: verify the video is public and not age-restricted.\n- **Rate limits**: retry with exponential backoff.\n- **Incorrect timestamps**: re-prompt with strict “MM:SS” formatting and request fewer events.\n\n## Limitations\n- Long-video support is limited by model context and token budget (default vs low-res modes).\n- YouTube analysis requires public videos; live streaming analysis is not supported.\n- Very long videos may require chunking (clip by time range and process in segments).\n- Multi-video comparison is limited (up to 10 videos per request on Gemini 2.5+).\n\n## Version History\n- **1.0.0** (2026-01-15): Initial release focused on Gemini video understanding (summaries, Q&A, timestamps, clipping, FPS control, YouTube, and structured outputs).\n\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,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks-no-skills\u002Fpedestrian-traffic-counting\u002Fenvironment\u002Fskills\u002Fgemini-video-understanding","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench","https:\u002F\u002Fgithub.com\u002FWaaaalnut","student of Zhejiang University","2026-04-21 23:16:23",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill gemini-video-understanding",{"tool":66,"command":67},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill gemini-video-understanding",{"tool":69,"command":70},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill gemini-video-understanding","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fpedestrian-traffic-counting\u002Fenvironment\u002Fskills\u002Fgemini-video-understanding\u002FSKILL.md",true,[],[75,87,101,125,146,165],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":83,"publishedAt":48},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师",[84,85,86],"data reconciliation","reconciliation","data",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":48},"01M6XEW8MNPMF1KRXV6ATGFRQF","speech-to-text","Transcribe video to timestamped text using Whisper tiny model (pre-installed).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-tutorial-indexer\u002Fenvironment\u002Fskills\u002Fspeech-to-text\u002FSKILL.md",[],[94,95,96,97,98,99,32,100],"speech","text","speech to text","transcribe video","whisper","model","transcribe",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":48},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor","Process videos by removing segments and concatenating remaining parts. Use when you need to remove detected pauses\u002Fopenings from videos, create highlight reels, or batch process segment removals using ffmpeg filter_complex.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[107],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[32,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124],"processor","video processor","batch","create","reels","when","parts","segments","process","videos","you","segment","filter","ffmpeg","use","remove",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":48},"01M6XEVXJ5KZ0NTY3XZKRY4AS1","silence-detector","Detect initial silence segments in audio\u002Fvideo using energy-based analysis. Use when you need to find low-energy periods at the start of recordings (title slides, setup time, pre-roll silence).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsilence-detector\u002FSKILL.md",[131],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[133,134,135,136,114,119,137,138,139,140,141,116,142,143,32,35,144,145,123],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","start","setup",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":48},"01M6XEVT3NGRN1FT7JPMAPXS6M","segment-combiner","Combine multiple segment detection results into a unified list. Use when you need to merge segments from different detectors, prepare removal lists for video processing, or consolidate detection outputs.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[120,153,32,154,155,156,157,158,114,159,160,116,119,161,162,123,163,164],"segment combiner","detection","prepare","merge","video processing","for","outputs","combine","processing","consolidate","results","list",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":48},"01M6XEVMPVASGS2KX86QK4FMT7","report-generator","Generate compression reports for video processing. Use when you need to create structured JSON reports with duration statistics, compression ratios, and segment details after video processing.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Freport-generator\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000034","行政与办公人员",[175,176,177,120,114,158,119,41,161,178,179,180,123,157,181,32,182,183,112],"generator","report generator","report","statistics","structured","reports","json","compression","generate"]