File size: 6,571 Bytes
06ba7ea | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | # ============= 开发者选项 / 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 |