[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XBZ2MSSYM15AS6WGGTC4JT":3,"skill-same:01M6XBZ2MSSYM15AS6WGGTC4JT":65},{"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":25,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":13,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6XBZ2MSSYM15AS6WGGTC4JT","safe-video-concat-workflow",null,"Two-pass video concatenation workflow that avoids encoder compatibility issues by separating concat and audio mixing","UF-gzj\u002Fopenspace-claude-evolution","UF-gzj","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F272393507?v=4","01M6XBCZB755P01VVYGQWPYZY3","01M6XBCZFJA5AREA17WGETA3FW",0,"MIT","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fsafe-video-concat-workflow\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27,28,29,30,31,32,33],"safe","workflow","Video","safe video concat workflow","issues","Audio","compatibility","mixing","2026-11-10 10:12:30",false,"---\nname: safe-video-concat-workflow\ndescription: Two-pass video concatenation workflow that avoids encoder compatibility issues by separating concat and audio mixing\n---\n\n# Safe Video Concatenation Workflow\n\nThis workflow prevents encoder compatibility failures when creating video showreels or compilations by using a two-pass approach: concatenate video clips first, then add music\u002FSFX in a separate pass.\n\n## When to Use\n\n- Creating video showreels from multiple source clips\n- Adding background music or sound effects to concatenated videos\n- Avoiding encoder errors when combining clips with audio mixing\n\n## Step 1: Probe Source Videos\n\nBefore processing, verify resolution and duration of all source clips using ffprobe:\n\n```bash\n# Get video resolution\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 clip.mp4\n\n# Get video duration\nffprobe -v error -show_entries format=duration -of csv=p=0 clip.mp4\n```\n\nRecord the resolution (e.g., 1920x1080) to determine if stream copy is safe.\n\n## Step 2: Use Stream Copy When Resolution Matches\n\nIf source clips already match your target resolution, use `-c:v copy` to avoid re-encoding:\n\n```bash\n# Good: avoids encoder issues when resolution matches\n-c:v copy\n\n# Only re-encode if resolution conversion is needed\n-c:v libx264 -s 1920x1080\n```\n\nThis prevents encoder compatibility failures that can occur with complex filter chains.\n\n## Step 3: Build Concat List with Bare Filenames\n\nCreate the concat list file with **bare filenames only** (no directory prefixes):\n\n```\nfile 'clip1.mp4'\nfile 'clip2.mp4'\nfile 'clip3.mp4'\n```\n\n**Important:** Run ffmpeg from the same directory as the video clips, or the concat demuxer may fail to find files.\n\n```bash\ncd \u002Fpath\u002Fto\u002Fclips\nffmpeg -f concat -safe 0 -i file_list.txt ...\n```\n\n## Step 4: Two-Pass Processing\n\n### Pass 1: Concatenate Video Clips\n\nConcatenate all clips first into an intermediate file:\n\n```bash\nffmpeg -f concat -safe 0 -i file_list.txt -c:v copy -c:a aac -y interim.mp4\n```\n\n### Pass 2: Add Music\u002FSFX with Complex Filter\n\nApply audio mixing or other complex filters in a separate pass:\n\n```bash\nffmpeg -i interim.mp4 -i background_music.mp3 \\\n  -filter_complex \"[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3\" \\\n  -c:v copy -c:a aac -y final_output.mp4\n```\n\n## Why Two Passes?\n\nCombining concatenation and audio mixing in a single command can cause:\n- Encoder compatibility failures\n- Resource exhaustion\n- Complex filter chain errors\n\nThe two-pass approach isolates concerns and ensures each operation completes successfully.\n\n## Quick Reference Commands\n\n```bash\n# Probe resolution\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 VIDEO.mp4\n\n# Create concat list (bare filenames, run from clip directory)\necho \"file 'clip1.mp4'\" > concat_list.txt\necho \"file 'clip2.mp4'\" >> concat_list.txt\n\n# Pass 1: Concatenate\nffmpeg -f concat -safe 0 -i concat_list.txt -c:v copy -c:a aac -y interim.mp4\n\n# Pass 2: Add audio\nffmpeg -i interim.mp4 -i music.mp3 -filter_complex \"[0:a][1:a]amix=inputs=2\" -c:v copy -y output.mp4\n```","# Safe Video Concatenation Workflow\n\nThis workflow prevents encoder compatibility failures when creating video showreels or compilations by using a two-pass approach: concatenate video clips first, then add music\u002FSFX in a separate pass.\n\n## When to Use\n\n- Creating video showreels from multiple source clips\n- Adding background music or sound effects to concatenated videos\n- Avoiding encoder errors when combining clips with audio mixing\n\n## Step 1: Probe Source Videos\n\nBefore processing, verify resolution and duration of all source clips using ffprobe:\n\n```bash\n# Get video resolution\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 clip.mp4\n\n# Get video duration\nffprobe -v error -show_entries format=duration -of csv=p=0 clip.mp4\n```\n\nRecord the resolution (e.g., 1920x1080) to determine if stream copy is safe.\n\n## Step 2: Use Stream Copy When Resolution Matches\n\nIf source clips already match your target resolution, use `-c:v copy` to avoid re-encoding:\n\n```bash\n# Good: avoids encoder issues when resolution matches\n-c:v copy\n\n# Only re-encode if resolution conversion is needed\n-c:v libx264 -s 1920x1080\n```\n\nThis prevents encoder compatibility failures that can occur with complex filter chains.\n\n## Step 3: Build Concat List with Bare Filenames\n\nCreate the concat list file with **bare filenames only** (no directory prefixes):\n\n```\nfile 'clip1.mp4'\nfile 'clip2.mp4'\nfile 'clip3.mp4'\n```\n\n**Important:** Run ffmpeg from the same directory as the video clips, or the concat demuxer may fail to find files.\n\n```bash\ncd \u002Fpath\u002Fto\u002Fclips\nffmpeg -f concat -safe 0 -i file_list.txt ...\n```\n\n## Step 4: Two-Pass Processing\n\n### Pass 1: Concatenate Video Clips\n\nConcatenate all clips first into an intermediate file:\n\n```bash\nffmpeg -f concat -safe 0 -i file_list.txt -c:v copy -c:a aac -y interim.mp4\n```\n\n### Pass 2: Add Music\u002FSFX with Complex Filter\n\nApply audio mixing or other complex filters in a separate pass:\n\n```bash\nffmpeg -i interim.mp4 -i background_music.mp3 \\\n  -filter_complex \"[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3\" \\\n  -c:v copy -c:a aac -y final_output.mp4\n```\n\n## Why Two Passes?\n\nCombining concatenation and audio mixing in a single command can cause:\n- Encoder compatibility failures\n- Resource exhaustion\n- Complex filter chain errors\n\nThe two-pass approach isolates concerns and ensures each operation completes successfully.\n\n## Quick Reference Commands\n\n```bash\n# Probe resolution\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 VIDEO.mp4\n\n# Create concat list (bare filenames, run from clip directory)\necho \"file 'clip1.mp4'\" > concat_list.txt\necho \"file 'clip2.mp4'\" >> concat_list.txt\n\n# Pass 1: Concatenate\nffmpeg -f concat -safe 0 -i concat_list.txt -c:v copy -c:a aac -y interim.mp4\n\n# Pass 2: Add audio\nffmpeg -i interim.mp4 -i music.mp3 -filter_complex \"[0:a][1:a]amix=inputs=2\" -c:v copy -y output.mp4\n```",{"name":5,"description":7},"main","0650921d63895de3997bc81f1ff1d0ac67032072","gdpval_bench\u002Fskills\u002Fsafe-video-concat-workflow","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution","https:\u002F\u002Fgithub.com\u002FUF-gzj","2026-04-16 09:31:03",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add UF-gzj\u002Fopenspace-claude-evolution --skill safe-video-concat-workflow",{"tool":51,"command":52},"bunx","bunx skills add UF-gzj\u002Fopenspace-claude-evolution --skill safe-video-concat-workflow",{"tool":54,"command":55},"pnpm","pnpm dlx skills add UF-gzj\u002Fopenspace-claude-evolution --skill safe-video-concat-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fsafe-video-concat-workflow\u002FSKILL.md",true,[59],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},".skill_id","OTHER","其他",40,"https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fsafe-video-concat-workflow\u002F.skill_id",[66,91,108,117,147,163],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":34},"01M6XCCXD3NCM2YKR3WNGBASPC","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"check","write","write special chars ts check","typescript","filters","characters","Existing","type-checking","for","errors","script","output","type","files","only","template","file","python",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":34},"01M6XCCT7E3J922Q345PBGSHPN","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[98,99,74,89,100,90,101,102,103,104,105,88,106,107,78,81,83],"readback","write special chars readback","helper","post","via","scripts","cleanup","read","verification","with",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":34},"01M6XCCMQX1R8B6FECWB3P63T7","write-special-chars-heredoc","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) by using a Python heredoc script executed via shell.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-heredoc\u002FSKILL.md",[],[115,74,78,116,83,102,88,89,90,81],"write special chars heredoc","shell",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":128,"publishedAt":34},"01M6XCCG41M994JJEX6VN52PEP","worldmonitor-reference","Curated architecture index of the WorldMonitor open-source dashboard. Reference for extracting patterns — vanilla TypeScript, Panel class hierarchy, service layer, CSS grid, API edge functions, refresh scheduler, and 60+ data source integrations.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fworldmonitor-reference\u002FSKILL.md",[123],{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[129,130,131,132,133,76,134,135,136,137,138,81,139,140,141,142,143,144,145,146],"reference","worldmonitor","worldmonitor reference","architecture","dashboard","css","scheduler","layer","hierarchy","source","extracting","panel","patterns","edge functions","integrations","open","api","data",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":34},"01M6XCCCHWNKG2W4VH9E6A10HF","virtual-list","Implement efficient virtual scrolling for rendering large lists with DOM recycling, chunk-based rendering, and performance optimizations","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fvirtual-list\u002FSKILL.md",[],[154,155,156,157,81,158,107,159,160,161,162],"virtual list","list","virtual","chunk","dom","rendering","recycling","implement","performance",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":34},"01M6XCC7X8PKMR2DEW91XGHYSV","verify-directory-structure","Diagnose and resolve file access issues by first verifying the directory structure.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fverify-directory-structure\u002FSKILL.md",[],[170,171,172,173,174,175,89,30,176,177],"directory","verify directory structure","structure","verify","access","first","diagnose","file access"]