[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C0HC63C3MM5TP6GW6ESSKP":3,"skill-same:01M7C0HC63C3MM5TP6GW6ESSKP":51},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7C0HC63C3MM5TP6GW6ESSKP","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.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillHone\u002Ftasks\u002Fvideo-silence-remover\u002Frepair_iterations\u002Fpre_unified_selected\u002Finputs\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[],[],"2026-11-15 14:19:17",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 skills\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 skills\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 skills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Fpath\u002Fto\u002Flecture.mp4 \\\n    --output \u002Fpath\u002Fto\u002Fcompressed.mp4 \\\n    --remove-segments \u002Fpath\u002Fto\u002Fopening.json \u002Fpath\u002Fto\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 skills\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 skills\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 skills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py \\\n    --input \u002Fpath\u002Fto\u002Flecture.mp4 \\\n    --output \u002Fpath\u002Fto\u002Fcompressed.mp4 \\\n    --remove-segments \u002Fpath\u002Fto\u002Fopening.json \u002Fpath\u002Fto\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","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FSkillHone\u002Ftasks\u002Fvideo-silence-remover\u002Frepair_iterations\u002Fpre_unified_selected\u002Finputs\u002Fskills\u002Fvideo-processor",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill video-processor",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill video-processor",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill video-processor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillHone\u002Ftasks\u002Fvideo-silence-remover\u002Frepair_iterations\u002Fpre_unified_selected\u002Finputs\u002Fskills\u002Fvideo-processor\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"scripts\u002Fprocess_video.py","SCRIPT","脚本",5437,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillHone\u002Ftasks\u002Fvideo-silence-remover\u002Frepair_iterations\u002Fpre_unified_selected\u002Finputs\u002Fskills\u002Fvideo-processor\u002Fscripts\u002Fprocess_video.py",[52,59,66,73,78,83],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":74,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":79,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":84,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]