# ============= 开发者选项 / Developer Options =============== [developer] developer_mode = false default_llm = "deepseek-chat" default_vlm = "qwen3-vl-8b-instruct" print_context = false # 在拦截器打印模型拿到的全部上下文,会很长 / Print full context in interceptor (output will be very long) # ============= 模型配置 for 体验网页 =============== [developer.chat_models_config."deepseek-chat"] base_url = "" api_key = "" temperature = 0.1 [developer.chat_models_config."qwen3-vl-8b-instruct"] base_url = "" api_key = "" timeout = 20.0 temperature = 0.1 max_retries = 2 # ============= 项目路径 / Project Paths ====================== [project] media_dir = "./outputs/media" bgm_dir = "./resource/bgms" outputs_dir = "./outputs" # ============= 模型配置 for user / Model Config for User ============= [llm] model = "deepseek-chat" base_url = "" api_key = "" timeout = 30.0 # 单位:秒 temperature = 0.1 max_retries = 2 [vlm] model = "qwen3-vl-8b-instruct" base_url = "" api_key = "" timeout = 20.0 # 单位:秒 temperature = 0.1 max_retries = 2 # ============= MCP Server 相关 / MCP Server Related ============= [local_mcp_server] server_name = "storyline" server_cache_dir = ".storyline/.server_cache" server_transport = "streamable-http" # server 和 host之间的传输方式 / Transport method between server and host url_scheme = "http" connect_host = "127.0.0.1" # 不要改动 / Do not change port = 8001 # 如果端口冲突,可以随便用一个有空的端口 / Use any available port if conflict occurs path = "/mcp" # 默认值,一般不用改 / Default value, usually unchanged json_response = true # 建议用 True / Recommended: True stateless_http = false # 强烈建议用 False / Strongly recommended: False timeout = 600 available_node_pkgs = [ "open_storyline.nodes.core_nodes" ] available_nodes = [ "LoadMediaNode", "SearchMediaNode", "SplitShotsNode", "UnderstandClipsNode", "FilterClipsNode", "GroupClipsNode", "GenerateScriptNode", "ScriptTemplateRecomendation", "GenerateVoiceoverNode", "SelectBGMNode", "RecommendTransitionNode", "RecommendTextNode", "PlanTimelineProNode", "RenderVideoNode" ] # =========== skills ========== [skills] skill_dir = "./.storyline/skills" # =========== pexels ========== [search_media] pexels_api_key = "" # ============= 镜头分割 / Shot Segmentation ============= [split_shots] transnet_weights = ".storyline/models/transnetv2-pytorch-weights.pth" transnet_device = "cpu" # ============= 视频视觉理解 / Video Visual Understanding ============= [understand_clips] sample_fps = 2.0 # 每秒抽几帧 / Frames sampled per second max_frames = 64 # 单clip抽帧上限兜底,避免长视频爆 token / Max frames per clip limit to prevent token overflow # ============= 文案模板 / Script Templates ============= [script_template] script_template_dir = "./resource/script_templates" script_template_info_path = "./resource/script_templates/meta.json" # ============= 配音生成 / Voiceover Generation =================== [generate_voiceover] tts_provider_params_path = "./resource/tts/tts_providers.json" [generate_voiceover.providers.302] base_url = "" api_key = "" [generate_voiceover.providers.bytedance] uid = "" appid = "" access_token = "" [generate_voiceover.providers.minimax] base_url = "" api_key = "" # ============= BGM选择 / BGM Selection ==================== # 主要是用于计算音乐特征的一些参数 / Mainly parameters for calculating music features [select_bgm] sample_rate = 22050 hop_length = 2048 # 每次分析窗口向前跳多少个采样点,越小越精细(但更慢) / Hop length samples; smaller = more precise but slower frame_length = 2048 # 计算信号的均方根RMS的窗口大小。越大越稳定,但对瞬态不敏感 / Window size for RMS; larger = stable but less sensitive to transients # ============= 字体推荐 / Font Recommendation ==================== [recommend_text] font_info_path = "resource/fonts/font_info.json" # ============= 时间线组织 / Timeline Organization ==================== [plan_timeline] beat_type_max = 1 # 使用多强的鼓点,例如4/4中,鼓点类似1,2,1,3,其中1是最强的,3最弱 / Beat strength (e.g., in 4/4: 1=strongest, 3=weakest) title_duration = 0 # 片头时长 (ms) / Intro duration (ms) bgm_loop = true # 是否允许 bgm 循环 / Allow BGM loop min_clip_duration = 1000 estimate_text_min = 1500 # 在没有TTS的情况下,估计每段字幕至少上屏多久 / Min on-screen duration for subtitles without TTS estimate_text_char_per_sec = 6.0 # 在没有TTS的情况下,估计每秒展示几个字 / Estimated characters per second without TTS image_default_duration = 3000 # 默认的图片播放时长 / Default image duration group_margin_over_voiceover = 1000 # 在一个group中,画面比配音多出现多久 / Extra visual duration over voiceover in a group [plan_timeline_pro] min_single_text_duration = 200 # 单段文字最小时长 (ms) / min single text duration (ms) max_text_duration = 5000 # 单句文字最大时长 (ms) / max text sentence duration (ms) img_default_duration = 1500 # 默认图片时长 (ms) / default image duration (ms) min_group_margin = 1500 # 段落/组最小间距 (ms) / min paragraph/group margin (ms) max_group_margin = 2000 # 段落/组最大间距 (ms) / max paragraph/group margin (ms) min_clip_duration = 1000 # 最小片段时长 (ms) / min clip duration (ms) tts_margin_mode = "random" # random | avg | max | min min_tts_margin = 300 # 最小 TTS 间隔 (ms) / min TTS gap (ms) max_tts_margin = 400 # 最大 TTS 间隔 (ms) / max TTS gap (ms) text_tts_offset_mode = "random" # random | avg | max | min min_text_tts_offset = 0 # 最小文字-TTS偏移 (ms) / min text–TTS offset (ms) max_text_tts_offset = 0 # 最大文字-TTS偏移 (ms) / max text–TTS offset (ms) long_short_text_duration = 3000 # 长/短文本阈值 (ms) / long/short text threshold (ms) long_text_margin_rate = 0.0 # 长文本起始边距率 / long text start margin rate short_text_margin_rate = 0.0 # 短文本起始边距率 / short text start margin rate text_duration_mode = "with_tts" # with_tts | with_clip (随配音 | 随片段) is_text_beats = false # 文字对齐音乐节拍 / align text with music beats