这是一个基于Python的短视频脚本智能设计助手,通过输入主题、时长和目标平台,生成包含脚本框架、镜头设计、台词建议的完整方案。代码遵循实用性(可直接运行)、可读性(详细注释)和可扩展性(模块化设计)原则,适配普通人快速创作需求。
import random
import sys
# ------------------------------
# 核心设计元素库(模拟创新设计前沿课程方法论)
# 包含脚本结构、镜头语言、台词风格、平台适配规则
# ------------------------------
SCRIPT_STRUCTURE = {
"开场": ["痛点提问", "场景代入", "悬念钩子"],
"发展": ["案例拆解", "知识干货", "过程记录"],
"高潮": ["观点升华", "反转惊喜", "价值总结"],
"结尾": ["行动号召", "情感共鸣", "下期预告"]
}
CAMERA_SHOTS = {
"特写": ["产品细节", "人物表情", "关键道具"],
"中景": ["人物动作", "场景互动", "流程演示"],
"全景": ["环境氛围", "群体场景", "空间关系"],
"运镜": ["推近聚焦", "拉远展全", "平移跟拍", "旋转环绕"]
}
DIALOGUE_STYLES = {
"口语化": ["就像我们平时聊天那样", "用'你有没有发现'开头", "加入'真的''绝了'等感叹词"],
"文艺感": ["用比喻讲感受", "引用诗句或歌词", "营造画面感描述"],
"幽默风": ["自嘲式吐槽", "夸张对比", "网络热梗自然融入"]
}
PLATFORM_RULES = {
"抖音": {"时长偏好": "15-60秒", "风格": "强节奏+高频反转", "互动点": "评论区提问"},
"B站": {"时长偏好": "3-10分钟", "风格": "深度干货+弹幕友好", "互动点": "进度条知识点标记"},
"视频号": {"时长偏好": "30-90秒", "风格": "生活化叙事+情感共鸣", "互动点": "转发家族群话术"}
}
# ------------------------------
# 工具函数:随机选取元素(带权重可选)
# ------------------------------
def get_random_element(elements_list):
"""从列表中随机选择一个元素"""
return random.choice(elements_list)
def validate_input(theme, duration, platform="抖音"):
"""验证输入合法性"""
if not theme.strip():
return False, "主题不能为空,请输入具体内容(如'职场新人时间管理')"
try:
dur = int(duration)
if dur <= 0 or dur > 600: # 限制0-10分钟
return False, "时长需在1-600秒之间(建议15-180秒)"
except ValueError:
return False, "时长需输入数字(单位:秒)"
if platform not in PLATFORM_RULES:
return False, f"暂不支持该平台,可选:{list(PLATFORM_RULES.keys())}"
return True, ""
# ------------------------------
# 核心生成函数:按模块构建脚本
# ------------------------------
def generate_script_framework(duration_sec):
"""生成脚本框架(按时间分配四部分比例)"""
total_parts = 4 # 开场/发展/高潮/结尾
# 根据时长动态调整比例(短时长压缩发展,长时长丰富高潮)
if duration_sec <= 30:
ratios = [0.2, 0.3, 0.4, 0.1] # 短内容侧重高潮
elif duration_sec <= 90:
ratios = [0.25, 0.35, 0.25, 0.15] # 中等时长均衡分配
else:
ratios = [0.2, 0.4, 0.3, 0.1] # 长内容强化发展
framework = {}
for part, ratio in zip(SCRIPT_STRUCTURE.keys(), ratios):
sec = int(duration_sec * ratio)
framework[part] = {
"时长(秒)": sec,
"核心手法": get_random_element(SCRIPT_STRUCTURE[part])
}
return framework
def design_camera_shots(script_framework, theme):
"""为脚本各部分设计镜头组合"""
shots_design = {}
for part, info in script_framework.items():
shot_count = max(1, info["时长(秒)"] // 5) # 每5秒1个镜头(最短1个)
part_shots = []
for _ in range(shot_count):
shot_type = get_random_element(list(CAMERA_SHOTS.keys()))
shot_content = get_random_element(CAMERA_SHOTS[shot_type]).replace("产品", theme.split()[0])
part_shots.append(f"{shot_type}:{shot_content}")
shots_design[part] = part_shots
return shots_design
def suggest_dialogue(platform, theme, script_framework):
"""生成适配平台风格的台词建议"""
style = get_random_element(list(DIALOGUE_STYLES.keys()))
dialogue_tips = DIALOGUE_STYLES[style]
# 结合平台规则生成开场台词
opening_line = f"【{platform}风格·{style}】\n" \
f"用'{get_random_element(dialogue_tips)}'方式开场,例如:\n" \
f"'{theme}这件事,我踩过的坑比走过的路还多...'"
# 结合脚本框架生成各部分台词重点
part_tips = []
for part in script_framework:
tip = f"{part}部分({script_framework[part]['时长(秒)']}秒):" \
f"用'{get_random_element(dialogue_tips)}',突出'{script_framework[part]['核心手法']}'"
part_tips.append(tip)
return f"{opening_line}\n\n" + "\n".join(part_tips) + \
f"\n\n【互动设计】按{PLATFORM_RULES[platform]['互动点']}添加引导"
# ------------------------------
# 主流程:串联生成与输出
# ------------------------------
def create_short_video_script(theme, duration, platform="抖音"):
"""生成完整短视频脚本"""
# 1. 输入验证
is_valid, msg = validate_input(theme, duration, platform)
if not is_valid:
return f"❌ 输入错误:{msg}"
# 2. 生成各模块内容
framework = generate_script_framework(int(duration))
camera_shots = design_camera_shots(framework, theme)
dialogue = suggest_dialogue(platform, theme, framework)
# 3. 整合输出
output = [
f"📽️ 短视频脚本:《{theme}》({duration}秒·{platform}风格)",
"\n=== 脚本框架 ===",
*[f"【{k}】{v['时长(秒)']}秒 | 手法:{v['核心手法']}" for k, v in framework.items()],
"\n=== 镜头设计 ===",
*[f"【{part}】\n- " + "\n- ".join(camera_shots[part]) for part in camera_shots],
"\n=== 台词建议 ===",
dialogue
]
return "\n".join(output)
# ------------------------------
# 用户交互入口(命令行版,适配普通人使用)
# ------------------------------
def main():
print("🎬 短视频脚本智能设计助手(输入q退出)")
while True:
try:
theme = input("\n请输入视频主题(如'租房改造避坑'):").strip()
if theme.lower() == "q":
print("再见!期待你的爆款视频~")
break
duration = input("请输入时长(秒,建议15-180):").strip()
if duration.lower() == "q":
break
platform = input(f"请输入平台(默认抖音,可选{B站/视频号}):").strip() or "抖音"
result = create_short_video_script(theme, duration, platform)
print("\n" + "="*50 + "\n")
print(result)
print("\n" + "="*50)
except KeyboardInterrupt:
print("\n\n操作已取消,欢迎下次使用!")
break
except Exception as e:
print(f"⚠️ 生成出错:{str(e)},请重试")
if __name__ == "__main__":
main()
使用说明
1. 运行方式:复制代码保存为
"video_script_helper.py",用Python 3.8+运行(
"python video_script_helper.py")
2. 操作流程:
- 输入视频主题(如“新手养猫必备清单”)
- 输入时长(秒,建议15-180秒)
- 选择平台(默认抖音,可选B站/视频号)
3. 输出内容:包含三部分核心方案
- 脚本框架:按开场/发展/高潮/结尾分配时长与核心手法
- 镜头设计:每部分推荐具体镜头类型+内容(如“特写:猫咪吃饭的表情”)
- 台词建议:适配平台风格的口语化/文艺感/幽默风示例,含互动引导
扩展建议(可维护性优化)
1. 新增平台:在
"PLATFORM_RULES" 中添加平台规则(如小红书“图文转视频”风格)
2. 丰富元素库:在
"SCRIPT_STRUCTURE" 等字典中补充更多手法(如“数据可视化演示”)
3. 接入AI API:替换
"get_random_element" 为调用大模型API(如腾讯混元),提升内容精准度
4. GUI界面:用
"tkinter" 或
"streamlit" 改造为图形界面,降低使用门槛
代码无外部依赖,新手可直接修改元素库适配个人创作习惯,通过“输入-生成-微调”三步快速产出脚本。
关注我,有更多编程干货等着你!