Install any skill in seconds. Free to start, no credit card required.
Get Started Free →剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json) 架构、工程自修复、智能配音字幕及录屏变焦。
.claude/skills/ethanyoq-jianying-editor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 66% | 0% |
Use this skill when the user wants to automate video editing, generate drafts, or manipulate media assets in JianYing Pro.
Agent execution playbook: docs/agent-playbook.md Minimal command SOP: docs/minimal-command-sop.md Natural language usage guide: usage.md Draft inspector CLI: python <SKILL_ROOT>/scripts/draft_inspector.py list --limit 20 python <SKILL_ROOT>/scripts/draft_inspector.py summary --name "DraftName" python <SKILL_ROOT>/scripts/draft_inspector.py show --name "DraftName" --kind content --json For generic editing requests, always follow the "Quick Edit Runtime Template" and "Acceptance Checklist" in that playbook.
.py 脚本)必须存放在用户当前项目的根目录(或子目录,如 scripts/),以保持 Skill 库的纯净和可移植性。draft_info.json)。若草稿损坏或版本冲突,使用 overwrite=True 初始化 JyProject 可触发自动修复。data/cloud_music_library.csv 中的相关曲目,或根据视频主题(如“科技”、“温暖”)进行关键词过滤。Illuminate - 科技感)”。Read the individual rule files for specific tasks and constraints:
rules/media.md + rules/audio-voice.md -> examples/cloud_video_music_tts_demo.pyrules/text.md + rules/audio-voice.md -> 核心 API add_narrated_subtitlesrules/text.md + rules/audio-voice.md -> examples/cloud_video_music_tts_demo.pyrules/recording.md -> tools/recording/recorder.pyrules/core.md + rules/cli.md -> examples/robust_auto_export.pyrules/generative.md -> scripts/movie_commentary_builder.pyRefer to these for complete workflows:
Use these templates and scripts for complex tasks:
bash python <SKILL_ROOT>/scripts/asset_search.py "复古" -c filters
bash python <SKILL_ROOT>/scripts/movie_commentary_builder.py --video "video.mp4" --json "storyboard.json"
bash python <SKILL_ROOT>/scripts/sync_jy_assets.py # Index cloud materials from your existing drafts python <SKILL_ROOT>/scripts/build_cloud_music_library.py python <SKILL_ROOT>/scripts/build_cloud_text_styles_library.py
prompts/readme_to_tutorial.md{{README_CONTENT}} variablebash python <SKILL_ROOT>/tools/recording/recorder.py # Web preview capture (high performance) python <SKILL_ROOT>/scripts/web_recorder.py --url "http://localhost:3000" --duration 5 # Or apply zoom to existing video: python <SKILL_ROOT>/scripts/jy_wrapper.py apply-zoom --name "Project" --video "v.mp4" --json "e.json"
bash python <SKILL_ROOT>/scripts/draft_inspector.py list --limit 20 python <SKILL_ROOT>/scripts/draft_inspector.py summary --name "DraftName"
bash python <SKILL_ROOT>/scripts/auto_exporter.py "DraftName" "output.mp4" --res 1080 --fps 60 # For SRT only: python <SKILL_ROOT>/scripts/jy_wrapper.py export-srt --name "DraftName"
bash # 克隆模板生成新项目 python <SKILL_ROOT>/scripts/jy_wrapper.py clone --template "酒店模板" --name "客户A_副本"
bash python <SKILL_ROOT>/scripts/api_validator.py
pythonimport os import sys # 1. 环境初始化 (必须同步到脚本开头,支持 Win/Mac) current_dir = os.path.dirname(os.path.abspath(__file__)) env_root = os.getenv("JY_SKILL_ROOT", "").strip() # 探测 Skill 路径 (支持 Antigravity, Trae, Claude 等) skill_root = next((p for p in [ env_root, os.path.join(current_dir, ".agent", "skills", "jianying-editor"), os.path.join(current_dir, ".trae", "skills", "jianying-editor"), os.path.join(current_dir, ".claude", "skills", "jianying-editor"), os.path.join(current_dir, "skills", "jianying-editor"), os.path.abspath(".agent/skills/jianying-editor"), os.path.abspath(".trae/skills/jianying-editor"), os.path.abspath(".claude/skills/jianying-editor"), os.path.abspath("skills/jianying-editor"), os.path.dirname(current_dir) ] if p and os.path.exists(os.path.join(p, "scripts", "jy_wrapper.py"))), None) if not skill_root: raise ImportError("Could not find jianying-editor skill root.") sys.path.insert(0, os.path.join(skill_root, "scripts")) from jy_wrapper import JyProject if __name__ == "__main__": # 2. 初始化工程 (支持 v5.9+ 及自修复) project = JyProject("New AI Video", overwrite=True) assets_dir = os.path.join(skill_root, "assets") # 3. 智能配音与字幕 (One-click Script-to-Video) project.add_narrated_subtitles( text="欢迎使用剪映自动化 Skill。这是一个全面适配 MacOS 的进阶版本。", speaker="zh_female_xiaopengyou" ) # 4. 导入额外素材 project.add_media_safe(os.path.join(assets_dir, "video.mp4"), "0s") project.add_media_safe(os.path.join(assets_dir, "audio.mp3"), "0s", track_name="Audio") # 5. 添加带动画的标题 project.add_text_simple("剪映自动化开启", start_time="1s", duration="3s", anim_in="复古打字机") project.save()
在初始化 JyProject 时,请务必根据主视频素材的比例设置分辨率。默认值为横屏 (1920x1080)。
禁止在 Skill 安装目录下创建你的业务剪辑脚本。
git pull 升级。业务代码混入会导致版本管理混乱。| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 22,163 | 10,454 | -53% | 1 | 1 | 0% | 4,307 | 4,806 | +12% | 0 | 0 | — |
case-02 | fail→fail | 9,141 | 6,819 | -25% | 1 | 1 | 0% | 1,471 | 3,241 | +120% | 0 | 0 | — |
case-03 | fail→pass | 21,383 | 6,068 | -72% | 1 | 1 | 0% | 3,535 | 3,624 | +3% | 0 | 0 | — |
case-04 | pass→pass | 5,925 | 4,093 | -31% | 1 | 1 | 0% | 983 | 3,506 | +257% | 0 | 0 | — |
case-05 | pass→pass | 11,188 | 12,432 | +11% | 1 | 1 | 0% | 2,090 | 5,185 | +148% | 0 | 0 | — |
case-06 | pass→pass | 12,024 | 8,548 | -29% | 1 | 1 | 0% | 2,307 | 4,566 | +98% | 0 | 0 | — |
case-07 | fail→pass | 12,527 | 8,459 | -32% | 1 | 1 | 0% | 2,265 | 4,388 | +94% | 0 | 0 | — |
case-08 | fail→pass | 19,360 | 6,075 | -69% | 1 | 1 | 0% | 3,489 | 3,963 | +14% | 0 | 0 | — |
case-09 | fail→pass | 11,810 | 2,239 | -81% | 1 | 1 | 0% | 1,893 | 3,142 | +66% | 0 | 0 | — |
case-10 | fail→pass | 8,884 | 2,960 | -67% | 1 | 1 | 0% | 1,563 | 3,316 | +112% | 0 | 0 | — |
case-11 | fail→pass | 13,828 | 3,186 | -77% | 1 | 1 | 0% | 2,558 | 3,376 | +32% | 0 | 0 | — |
case-12 | fail→fail | 15,925 | 4,116 | -74% | 1 | 1 | 0% | 2,645 | 3,550 | +34% | 0 | 0 | — |
case-13 | fail→pass | 9,240 | 3,722 | -60% | 1 | 1 | 0% | 1,587 | 3,489 | +120% | 0 | 0 | — |
case-14 | fail→pass | 10,101 | 2,546 | -75% | 1 | 1 | 0% | 1,655 | 3,298 | +99% | 0 | 0 | — |
case-15 | fail→pass | 15,639 | 2,538 | -84% | 1 | 1 | 0% | 2,757 | 3,279 | +19% | 0 | 0 | — |
case-16 | fail→pass | 10,440 | 6,783 | -35% | 1 | 1 | 0% | 1,983 | 4,248 | +114% | 0 | 0 | — |
case-17 | fail→pass | 10,330 | 6,752 | -35% | 1 | 1 | 0% | 1,691 | 4,267 | +152% | 0 | 0 | — |
case-18 | fail→pass | 13,713 | 6,308 | -54% | 1 | 1 | 0% | 2,468 | 4,044 | +64% | 0 | 0 | — |
case-19 | fail→pass | 11,004 | 3,394 | -69% | 1 | 1 | 0% | 1,667 | 3,418 | +105% | 0 | 0 | — |
case-20 | fail→pass | 13,466 | 2,913 | -78% | 1 | 1 | 0% | 1,888 | 3,343 | +77% | 0 | 0 | — |
case-21 | fail→fail | 11,322 | 2,782 | -75% | 1 | 1 | 0% | 1,966 | 3,269 | +66% | 0 | 0 | — |
case-22 | fail→pass | 7,955 | 2,753 | -65% | 1 | 1 | 0% | 1,349 | 3,273 | +143% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +73 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.