[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BME48MFNFR5SDFY1DM6CGG":3,"skill-same:01M7BME48MFNFR5SDFY1DM6CGG":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},"01M7BME48MFNFR5SDFY1DM6CGG","segment-combiner",null,"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.","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\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fskillhone-gpt5.2-xhigh\u002Fcandidates\u002Fsingle-video-silence-remover-RI-002\u002Fround-2\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: segment-combiner\ndescription: 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.\n---\n\n# Segment Combiner\n\nCombines multiple segment JSON files into a single unified segments file for video processing.\n\n## Use Cases\n\n- Merging segments from multiple detectors\n- Consolidating detection results\n- Preparing unified input for video-processor\n\n## Usage\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fsegment-combiner\u002Fscripts\u002Fcombine_segments.py \\\n    --segments \u002Fpath\u002Fto\u002Fsegments1.json \u002Fpath\u002Fto\u002Fsegments2.json \\\n    --merge-gap 0.01 \\\n    --output \u002Fpath\u002Fto\u002Fall_segments.json\n```\n\n### Parameters\n\n- `--segments`: One or more segment JSON files to combine\n- `--output`: Path to output combined segments JSON\n- `--merge-gap`: Merge segments whose gap is ≤ this many seconds (default: `0`). Useful to absorb rounding artifacts and ensure non-overlap.\n- `--clamp-end`: Optional maximum timestamp to clamp segment ends (e.g., the video duration)\n\n### Time \u002F interval convention\n\nAll timestamps are in seconds on the original timeline, using half-open intervals: **`[start, end)`** (start is inclusive, end is exclusive).\n\n### Input Format\n\nEach input file may be one of the following:\n\n1. A dict with a `segments` array (recommended)\n2. A bare JSON list of segments\n3. A single segment object with `start` and `end`\n\nExample (dict with `segments`):\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 120, \"duration\": 120},\n    {\"start\": 300, \"end\": 305, \"duration\": 5}\n  ]\n}\n```\n\n### Output Format\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 120, \"duration\": 120},\n    {\"start\": 300, \"end\": 305, \"duration\": 5}\n  ],\n  \"total_segments\": 2,\n  \"total_duration_seconds\": 125\n}\n```\n\n## Dependencies\n\n- Python 3.11+\n\n## Example\n\n```bash\n# Combine segments from multiple detectors\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fsegment-combiner\u002Fscripts\u002Fcombine_segments.py \\\n    --segments initial_silence.json pauses.json \\\n    --output all_segments.json\n```\n\n## Notes\n\n- Output segments are **sorted, clamped (if requested), and merged** to ensure they are **non-overlapping**.\n- Adjacent\u002Ftouching segments are merged when `--merge-gap 0`.\n- Compatible with video-processor `--remove-segments` input.\n","# Segment Combiner\n\nCombines multiple segment JSON files into a single unified segments file for video processing.\n\n## Use Cases\n\n- Merging segments from multiple detectors\n- Consolidating detection results\n- Preparing unified input for video-processor\n\n## Usage\n\n```bash\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fsegment-combiner\u002Fscripts\u002Fcombine_segments.py \\\n    --segments \u002Fpath\u002Fto\u002Fsegments1.json \u002Fpath\u002Fto\u002Fsegments2.json \\\n    --merge-gap 0.01 \\\n    --output \u002Fpath\u002Fto\u002Fall_segments.json\n```\n\n### Parameters\n\n- `--segments`: One or more segment JSON files to combine\n- `--output`: Path to output combined segments JSON\n- `--merge-gap`: Merge segments whose gap is ≤ this many seconds (default: `0`). Useful to absorb rounding artifacts and ensure non-overlap.\n- `--clamp-end`: Optional maximum timestamp to clamp segment ends (e.g., the video duration)\n\n### Time \u002F interval convention\n\nAll timestamps are in seconds on the original timeline, using half-open intervals: **`[start, end)`** (start is inclusive, end is exclusive).\n\n### Input Format\n\nEach input file may be one of the following:\n\n1. A dict with a `segments` array (recommended)\n2. A bare JSON list of segments\n3. A single segment object with `start` and `end`\n\nExample (dict with `segments`):\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 120, \"duration\": 120},\n    {\"start\": 300, \"end\": 305, \"duration\": 5}\n  ]\n}\n```\n\n### Output Format\n\n```json\n{\n  \"segments\": [\n    {\"start\": 0, \"end\": 120, \"duration\": 120},\n    {\"start\": 300, \"end\": 305, \"duration\": 5}\n  ],\n  \"total_segments\": 2,\n  \"total_duration_seconds\": 125\n}\n```\n\n## Dependencies\n\n- Python 3.11+\n\n## Example\n\n```bash\n# Combine segments from multiple detectors\npython3 \u002Froot\u002F.claude\u002Fskills\u002Fsegment-combiner\u002Fscripts\u002Fcombine_segments.py \\\n    --segments initial_silence.json pauses.json \\\n    --output all_segments.json\n```\n\n## Notes\n\n- Output segments are **sorted, clamped (if requested), and merged** to ensure they are **non-overlapping**.\n- Adjacent\u002Ftouching segments are merged when `--merge-gap 0`.\n- Compatible with video-processor `--remove-segments` input.\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","controlled-skill-repair-experiments\u002Fresult\u002Fskillhone-gpt5.2-xhigh\u002Fcandidates\u002Fsingle-video-silence-remover-RI-002\u002Fround-2\u002Fskills\u002Fsegment-combiner",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 segment-combiner",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill segment-combiner",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill segment-combiner","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fskillhone-gpt5.2-xhigh\u002Fcandidates\u002Fsingle-video-silence-remover-RI-002\u002Fround-2\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"scripts\u002Fcombine_segments.py","SCRIPT","脚本",6166,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fskillhone-gpt5.2-xhigh\u002Fcandidates\u002Fsingle-video-silence-remover-RI-002\u002Fround-2\u002Fskills\u002Fsegment-combiner\u002Fscripts\u002Fcombine_segments.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",[],[]]