create_track
Add video, audio, or text tracks to JianYing (CapCut) video drafts for organizing media segments in professional editing workflows.
Instructions
创建轨道 Args: draft_id: 草稿ID track_type: 轨道类型,支持 "video", "audio", "text", 一个轨道可以有多个素材,如video轨道想添加两个视频,使用同一个track_id就可以 track_name: 轨道名称,同类型轨道名不能相同
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ||
| track_type | Yes | ||
| track_name | Yes |
Implementation Reference
- jianyingdraft/tool/track_tool.py:13-31 (handler)MCP tool handler 'create_track' that calls the service layer to create the track and updates the index manager.@mcp.tool() def create_track(draft_id: str, track_type: str, track_name: str)-> ToolResponse: """ 创建轨道 Args: draft_id: 草稿ID track_type: 轨道类型,支持 "video", "audio", "text", 一个轨道可以有多个素材,如video轨道想添加两个视频,使用同一个track_id就可以 track_name: 轨道名称,同类型轨道名不能相同 """ # 调用服务层处理业务逻辑 result = create_track_service(draft_id, track_type, track_name) # 如果轨道创建成功,添加索引记录 if result.success and result.data and "track_id" in result.data: track_id = result.data["track_id"] index_manager.add_track_mapping(track_id, draft_id, track_name, track_type) return result
- jianyingdraft/server.py:27-27 (registration)Registers the track tools module containing the create_track tool.track_tools(mcp)
- Service layer function that creates the Track instance and calls add_track, handling errors and returning ToolResponse.def create_track_service(draft_id: str, track_type: str, track_name: Optional[str] = None) -> ToolResponse: """ 轨道创建服务 - 封装复杂的轨道创建逻辑 Args: draft_id: 草稿ID track_type: 轨道类型 ("video", "audio", "text") track_name: 轨道名称(可选) Returns: ToolResponse: 包含操作结果的响应对象 """ try: # 创建Track实例 track = Track(draft_id) # 调用轨道创建方法 track_id = track.add_track(track_type, track_name) # 构建返回数据 result_data = { "track_id": track_id, "draft_id": draft_id, "track_type": track_type } # 如果有轨道名称,添加到返回数据中 if track_name: result_data["track_name"] = track_name return ToolResponse( success=True, message="轨道创建成功", data=result_data ) except ValueError as e: # 处理轨道类型无效或轨道名称格式错误 return ToolResponse( success=False, message=f"参数错误: {str(e)}" ) except NameError as e: # 处理轨道名称已存在或同类型轨道需要指定名称 return ToolResponse( success=False, message=f"轨道冲突: {str(e)}" ) except Exception as e: # 处理其他未预期的错误 return ToolResponse( success=False, message=f"轨道创建失败: {str(e)}" )
- Core Track class method add_track that validates inputs, generates track_id, builds JSON data, and persists to file.def add_track(self, track_type: str, track_name: Optional[str] = None) -> str: """ 添加轨道 Args: track_type: 轨道类型,如 "video", "audio", "text" track_name: 轨道名称(可选) Returns: str: 轨道ID Raises: ValueError: 轨道类型无效或轨道名称格式错误 NameError: 轨道名称已存在或同类型轨道需要指定名称 """ # 1. 验证轨道类型 self._validate_track_type(track_type) # 2. 验证轨道唯一性 self._validate_track_uniqueness(track_type, track_name) track_id = str(uuid.uuid4()) # 构建轨道数据 add_track_params = { "track_type": track_type } # 只添加用户明确传入的可选参数 if track_name: add_track_params["track_name"] = track_name # 构建完整的轨道数据 track_data = { "track_id": track_id, "operation": "add_track", "add_track": add_track_params, "created_at": datetime.now().isoformat() } # 保存参数 self.add_json_to_file(track_data) self.track_id = track_id return track_id