[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XEW3FQZP0T1RKQQJFXVY9T":3,"skill-same:01M6XEW3FQZP0T1RKQQJFXVY9T":72},{"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":22,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor",null,"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.","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\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\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],"processor","Video","video processor","filter","when","parts","segments","reels","videos","you","segment","create","ffmpeg","use","remove","process","batch","2026-11-10 10:12:30",false,"---\nname: video-processor\ndescription: 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.\n---\n\n# Video Segment Processor\n\nProcesses videos by removing specified segments and concatenating the remaining parts. Handles multiple removal segments efficiently using ffmpeg's filter_complex.\n\n## Use Cases\n\n- Removing detected pauses and openings from videos\n- Creating highlight reels by keeping only specific segments\n- Batch processing multiple segment removals\n\n## Usage\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Fpath\u002Fto\u002Finput.mp4 \\\n    --output \u002Fpath\u002Fto\u002Foutput.mp4 \\\n    --remove-segments \u002Fpath\u002Fto\u002Fsegments.json\n```\n\n### Parameters\n\n- `--input`: Path to input video file\n- `--output`: Path to output video file\n- `--remove-segments`: JSON file containing segments to remove\n\n### Input Segment Format\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 600, \"duration\": 600},\n    {\"start\": 610, \"end\": 613, \"duration\": 3}\n  ]\n}\n```\n\nOr multiple segment files:\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input video.mp4 \\\n    --output output.mp4 \\\n    --remove-segments opening.json pauses.json\n```\n\n### Output\n\nCreates the processed video and a report JSON:\n\n```json\n{\n  \"original_duration\": 3908.61,\n  \"output_duration\": 3078.61,\n  \"removed_duration\": 830.0,\n  \"compression_percentage\": 21.24,\n  \"segments_removed\": 91,\n  \"segments_kept\": 91\n}\n```\n\n## How It Works\n\n1. **Load removal segments** from JSON file(s)\n2. **Calculate keep segments** (inverse of removal segments)\n3. **Build ffmpeg filter** to trim and concatenate\n4. **Process video** using hardware-accelerated encoding\n5. **Generate report** with statistics\n\n### FFmpeg Filter Example\n\nFor 3 segments to keep:\n```\n[0:v]trim=start=600:end=610,setpts=PTS-STARTPTS[v0];\n[0:a]atrim=start=600:end=610,asetpts=PTS-STARTPTS[a0];\n[0:v]trim=start=613:end=1000,setpts=PTS-STARTPTS[v1];\n[0:a]atrim=start=613:end=1000,asetpts=PTS-STARTPTS[a1];\n[v0][v1]concat=n=2:v=1:a=0[outv];\n[a0][a1]concat=n=2:v=0:a=1[outa]\n```\n\n## Dependencies\n\n- ffmpeg with libx264 and aac support\n- Python 3.11+\n\n## Limitations\n\n- Processing time: ~0.3× video duration (e.g., 20 min for 65 min video)\n- Requires sufficient disk space (output ≈ 70-80% of input size)\n- May have frame-accurate cuts (not sample-accurate)\n\n## Example\n\n```bash\n# Process video with opening and pause removal\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Froot\u002Flecture.mp4 \\\n    --output \u002Froot\u002Fcompressed.mp4 \\\n    --remove-segments \u002Froot\u002Fopening.json \u002Froot\u002Fpauses.json\n\n# Result: 65 min → 51 min (21.2% compression)\n```\n\n## Performance Tips\n\n- Use `-preset medium` for balanced speed\u002Fquality\n- Use `-crf 23` for good quality at reasonable size\n- Process on machines with 2+ CPU cores for faster encoding\n\n## Notes\n\n- Preserves video quality using CRF encoding\n- Maintains audio sync throughout\n- Handles edge cases (segments at start\u002Fend of video)\n- Generates detailed statistics for verification\n","# Video Segment Processor\n\nProcesses videos by removing specified segments and concatenating the remaining parts. Handles multiple removal segments efficiently using ffmpeg's filter_complex.\n\n## Use Cases\n\n- Removing detected pauses and openings from videos\n- Creating highlight reels by keeping only specific segments\n- Batch processing multiple segment removals\n\n## Usage\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Fpath\u002Fto\u002Finput.mp4 \\\n    --output \u002Fpath\u002Fto\u002Foutput.mp4 \\\n    --remove-segments \u002Fpath\u002Fto\u002Fsegments.json\n```\n\n### Parameters\n\n- `--input`: Path to input video file\n- `--output`: Path to output video file\n- `--remove-segments`: JSON file containing segments to remove\n\n### Input Segment Format\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 600, \"duration\": 600},\n    {\"start\": 610, \"end\": 613, \"duration\": 3}\n  ]\n}\n```\n\nOr multiple segment files:\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input video.mp4 \\\n    --output output.mp4 \\\n    --remove-segments opening.json pauses.json\n```\n\n### Output\n\nCreates the processed video and a report JSON:\n\n```json\n{\n  \"original_duration\": 3908.61,\n  \"output_duration\": 3078.61,\n  \"removed_duration\": 830.0,\n  \"compression_percentage\": 21.24,\n  \"segments_removed\": 91,\n  \"segments_kept\": 91\n}\n```\n\n## How It Works\n\n1. **Load removal segments** from JSON file(s)\n2. **Calculate keep segments** (inverse of removal segments)\n3. **Build ffmpeg filter** to trim and concatenate\n4. **Process video** using hardware-accelerated encoding\n5. **Generate report** with statistics\n\n### FFmpeg Filter Example\n\nFor 3 segments to keep:\n```\n[0:v]trim=start=600:end=610,setpts=PTS-STARTPTS[v0];\n[0:a]atrim=start=600:end=610,asetpts=PTS-STARTPTS[a0];\n[0:v]trim=start=613:end=1000,setpts=PTS-STARTPTS[v1];\n[0:a]atrim=start=613:end=1000,asetpts=PTS-STARTPTS[a1];\n[v0][v1]concat=n=2:v=1:a=0[outv];\n[a0][a1]concat=n=2:v=0:a=1[outa]\n```\n\n## Dependencies\n\n- ffmpeg with libx264 and aac support\n- Python 3.11+\n\n## Limitations\n\n- Processing time: ~0.3× video duration (e.g., 20 min for 65 min video)\n- Requires sufficient disk space (output ≈ 70-80% of input size)\n- May have frame-accurate cuts (not sample-accurate)\n\n## Example\n\n```bash\n# Process video with opening and pause removal\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Froot\u002Flecture.mp4 \\\n    --output \u002Froot\u002Fcompressed.mp4 \\\n    --remove-segments \u002Froot\u002Fopening.json \u002Froot\u002Fpauses.json\n\n# Result: 65 min → 51 min (21.2% compression)\n```\n\n## Performance Tips\n\n- Use `-preset medium` for balanced speed\u002Fquality\n- Use `-crf 23` for good quality at reasonable size\n- Process on machines with 2+ CPU cores for faster encoding\n\n## Notes\n\n- Preserves video quality using CRF encoding\n- Maintains audio sync throughout\n- Handles edge cases (segments at start\u002Fend of video)\n- Generates detailed statistics for verification\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor","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":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill video-processor",{"tool":58,"command":59},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill video-processor",{"tool":61,"command":62},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill video-processor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",true,[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"scripts\u002Fprocess_video.py","SCRIPT","脚本",5437,"https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py",[73,87,101,123,142,162],{"skillNo":74,"name":75,"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":76,"categories":77,"keywords":83,"publishedAt":40},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[84,85,86],"data reconciliation","data","reconciliation",{"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":40},"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,24,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":40},"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",[107],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[109,110,111,24,112,113,114,115,116,36,117,118,119,32,29,120,121,122,27],"detector","silence detector","Audio","analysis","start","setup","find","slides","recordings","time","detect","at","energy","title",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":40},"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",[],[33,130,131,27,132,133,29,32,134,135,36,136,137,24,138,139,140,141],"segment combiner","outputs","for","combine","processing","results","list","video processing","detection","prepare","merge","consolidate",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":40},"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",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000034","行政与办公人员",[152,153,154,155,24,156,157,34,137,132,27,32,158,134,33,159,160,161,36],"generator","report generator","report","json","compression","generate","with","statistics","structured","reports",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":40},"01M6XEVENVQRR0KHK0WZZM7ZTW","pause-detector","Detect pauses and silence in audio using local dynamic thresholds. Use when you need to find natural pauses in lectures, board-writing silences, or breaks between sections. Uses local context comparison to avoid false positives from volume variation.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fpause-detector\u002FSKILL.md",[],[169,170,109,171,27,32,172,119,173,174,175,36,176,177,115,111,178],"pause detector","pause","thresholds","comparison","false","local","volume","context","board","writing"]