Files
mcn-short-video/project/编导AI脚本对话记录分析/剧本大纲情绪改善案例.html
T

1820 lines
109 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>剧本大纲情绪改善案例</title>
<style>
:root {
--bg: #f5f7fa;
--surface: #ffffff;
--surface-2: #f1f5f9;
--border: #e2e8f0;
--text: #1e293b;
--text-2: #64748b;
--accent: #6366f1;
--accent-2: #4f46e5;
--danger: #ef4444;
--warn: #f59e0b;
--success: #10b981;
--info: #3b82f6;
--pink: #ec4899;
--teal: #14b8a6;
--orange: #f97316;
}
* { margin:0; padding:0; box-sizing:border-box; }
body {
background: var(--bg);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
line-height: 1.75;
padding: 0 0 60px 0;
}
.container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
/* Hero */
.hero {
background: linear-gradient(135deg, #eef2ff 0%, #f5f7fa 60%, #ffffff 100%);
padding: 56px 0 48px;
border-bottom: 1px solid var(--border);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute; top: -50%; right: -10%;
width: 500px; height: 500px;
background: radial-gradient(circle, rgba(99,102,241,0.08) 0%, transparent 70%);
pointer-events: none;
}
.hero-tag {
display: inline-block;
background: rgba(99,102,241,0.15);
border: 1px solid rgba(99,102,241,0.3);
color: var(--accent-2);
padding: 4px 14px;
border-radius: 20px;
font-size: 13px;
margin-bottom: 16px;
}
.hero h1 {
font-size: 30px; font-weight: 700;
background: linear-gradient(135deg, #1e293b 0%, #4f46e5 100%);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
margin-bottom: 12px;
}
.hero .subtitle { color: var(--text-2); font-size: 15px; max-width: 800px; }
.hero-meta {
display: flex; flex-wrap: wrap; gap: 24px;
margin-top: 28px;
}
.hero-meta-item {
display: flex; align-items: center; gap: 8px;
color: var(--text-2); font-size: 14px;
}
.hero-meta-item strong { color: var(--text); font-size: 18px; }
/* Section */
.section { padding: 48px 0 0; }
.section-header {
display: flex; align-items: center; gap: 12px;
margin-bottom: 28px;
}
.section-num {
flex-shrink: 0;
width: 36px; height: 36px;
background: var(--accent);
border-radius: 10px;
display: flex; align-items: center; justify-content: center;
font-size: 16px; font-weight: 700;
color: #fff;
}
.section-title { font-size: 22px; font-weight: 700; }
.section-desc { color: var(--text-2); font-size: 14px; margin-top: 4px; }
/* Script Card */
.script-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
padding: 28px;
margin-bottom: 24px;
}
.script-card-head {
display: flex; align-items: center; gap: 16px;
margin-bottom: 20px;
padding-bottom: 16px;
border-bottom: 2px solid var(--border);
}
.script-badge {
flex-shrink: 0;
width: 44px; height: 44px;
border-radius: 12px;
display: flex; align-items: center; justify-content: center;
font-size: 18px; font-weight: 700;
color: #fff;
}
.script-badge.s0 { background: var(--teal); }
.script-badge.s1 { background: var(--danger); }
.script-badge.s2 { background: var(--warn); }
.script-badge.s3 { background: var(--info); }
.script-title { font-size: 20px; font-weight: 700; }
.script-meta { color: var(--text-2); font-size: 13px; margin-top: 4px; }
.script-info-bar {
display: flex; flex-wrap: wrap; gap: 8px;
margin-bottom: 16px;
}
.info-chip {
display: inline-flex; align-items: center; gap: 4px;
padding: 4px 12px;
border-radius: 6px;
font-size: 12px;
background: var(--surface-2);
color: var(--text-2);
}
.info-chip strong { color: var(--text); }
/* Scene Table */
.scene-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
margin: 12px 0;
}
.scene-table th {
background: var(--surface-2);
padding: 10px 12px;
text-align: left;
font-weight: 600;
border-bottom: 2px solid var(--border);
font-size: 12px;
color: var(--text);
}
.scene-table td {
padding: 12px;
border-bottom: 1px solid var(--border);
color: var(--text-2);
vertical-align: top;
}
.scene-table tr:hover td { background: rgba(99,102,241,0.02); }
.scene-table .time-col { white-space: nowrap; font-weight: 600; color: var(--accent-2); }
.scene-table .act-col { font-weight: 600; text-align: center; }
.scene-table .scene-num-col { text-align: center; color: var(--text); font-size: 13px; font-weight: 500; white-space: nowrap; }
.scene-table .act1 { color: var(--info); }
.scene-table .act2 { color: var(--accent-2); }
.scene-table .act3 { color: var(--pink); }
/* Emotion Analysis Row */
.ea-row td {
background: #f8fafc !important;
padding: 8px 12px 10px 24px !important;
border-bottom: 1px solid var(--border);
}
.ea-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 16px;
}
.ea-item {
font-size: 12px;
color: var(--text-2);
line-height: 1.6;
}
.ea-label {
display: inline-block;
font-weight: 600;
font-size: 11px;
padding: 1px 8px;
border-radius: 4px;
margin-right: 6px;
white-space: nowrap;
}
.ea-label.pad { background: rgba(59,130,246,0.15); color: #2563eb; }
.ea-label.exp { background: rgba(245,158,11,0.15); color: #d97706; }
.ea-label.fee { background: rgba(236,72,153,0.15); color: #db2777; }
.ea-type {
display: inline-block;
font-size: 10px;
padding: 0 5px;
border-radius: 3px;
margin-right: 4px;
font-weight: 600;
}
.ea-type.skill { background: rgba(16,185,129,0.15); color: #059669; }
.ea-type.carry { background: rgba(99,102,241,0.15); color: #4f46e5; }
.ea-type.turn { background: rgba(245,158,11,0.15); color: #d97706; }
.ea-type.release { background: rgba(236,72,153,0.15); color: #db2777; }
.ea-type.show { background: rgba(20,184,166,0.15); color: #0d9488; }
.ea-type.tell { background: rgba(148,163,184,0.2); color: #475569; }
.ea-type.mix { background: rgba(99,102,241,0.15); color: #4f46e5; }
.ea-feel {
display: inline-block;
font-size: 10px;
padding: 0 5px;
border-radius: 3px;
margin-right: 3px;
background: rgba(236,72,153,0.1);
color: #be185d;
font-weight: 500;
}
/* Tag */
.tag {
display: inline-block;
padding: 2px 10px;
border-radius: 4px;
font-size: 12px;
margin: 2px 4px 2px 0;
}
.tag.red { background: rgba(239,68,68,0.15); color: #dc2626; }
.tag.yellow { background: rgba(245,158,11,0.15); color: #d97706; }
.tag.blue { background: rgba(59,130,246,0.15); color: #2563eb; }
.tag.green { background: rgba(16,185,129,0.15); color: #059669; }
.tag.purple { background: rgba(99,102,241,0.15); color: #4f46e5; }
.tag.pink { background: rgba(236,72,153,0.15); color: #db2777; }
.tag.teal { background: rgba(20,184,166,0.15); color: #0d9488; }
/* KB Reference */
.kb-ref {
display: inline-block;
font-size: 11px;
padding: 1px 8px;
border-radius: 4px;
background: rgba(99,102,241,0.1);
color: var(--accent-2);
margin-left: 6px;
vertical-align: middle;
}
/* Chart Box */
.chart-box {
background: var(--surface-2);
border-radius: 10px;
padding: 20px;
margin: 16px 0;
border: 1px solid var(--border);
}
.chart-box h5 {
font-size: 13px; color: var(--text);
margin-bottom: 4px;
}
.chart-subtitle {
font-size: 11px; color: var(--text-2);
margin-bottom: 12px;
}
/* Touchpoint Row */
.touchpoint-row {
display: flex; align-items: flex-start; gap: 12px;
margin-bottom: 10px;
padding: 10px 14px;
background: var(--surface);
border-radius: 8px;
border-left: 3px solid var(--accent);
}
.touchpoint-row.tp1 { border-left-color: var(--info); }
.touchpoint-row.tp2 { border-left-color: var(--warn); }
.touchpoint-row.tp3 { border-left-color: var(--pink); }
.touchpoint-label {
flex-shrink: 0;
width: 80px;
font-size: 12px; font-weight: 600;
}
.touchpoint-content { font-size: 13px; color: var(--text-2); }
.touchpoint-content strong { color: var(--text); }
/* Buildup Block */
.buildup-block {
background: linear-gradient(135deg, rgba(20,184,166,0.04), rgba(99,102,241,0.04));
border: 1px solid var(--border);
border-radius: 10px;
padding: 16px 20px;
margin: 12px 0;
}
.buildup-block h5 {
font-size: 13px; color: var(--teal);
margin-bottom: 8px;
}
.buildup-item {
font-size: 13px; color: var(--text-2);
padding: 6px 0 6px 16px;
position: relative;
}
.buildup-item::before { content: '\2192'; position: absolute; left: 0; color: var(--teal); }
.buildup-item strong { color: var(--text); }
/* Flashback Block */
.flashback-block {
background: rgba(59,130,246,0.04);
border: 1px solid rgba(59,130,246,0.15);
border-radius: 10px;
padding: 16px 20px;
margin: 12px 0;
}
.flashback-block h5 {
font-size: 13px; color: var(--info);
margin-bottom: 8px;
}
.flashback-chain {
display: flex; align-items: center; flex-wrap: wrap;
gap: 6px;
margin-top: 10px;
}
.flashback-node {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 8px;
padding: 8px 14px;
font-size: 12px;
text-align: center;
}
.flashback-node.hint { border-color: rgba(245,158,11,0.3); background: rgba(245,158,11,0.05); }
.flashback-node.trigger { border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.05); font-weight: 600; }
.flashback-node.flashback { border-color: rgba(59,130,246,0.3); background: rgba(59,130,246,0.08); font-weight: 600; }
.flashback-arrow { color: var(--text-2); font-size: 14px; }
/* Intent Parse */
.intent-box {
background: rgba(99,102,241,0.04);
border: 1px solid rgba(99,102,241,0.15);
border-radius: 10px;
padding: 16px 20px;
margin: 12px 0;
}
.intent-box h5 { font-size: 13px; color: var(--accent-2); margin-bottom: 10px; }
.intent-row {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 12px;
font-size: 12px;
}
.intent-cell {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 8px;
padding: 10px 12px;
}
.intent-cell .label { font-size: 11px; color: var(--text-2); margin-bottom: 4px; }
.intent-cell .value { color: var(--text); font-weight: 500; }
/* Compare Grid */
.compare-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 16px 0;
}
.compare-card {
border-radius: 12px;
padding: 20px;
border: 1px solid var(--border);
}
.compare-card.bad { background: rgba(239,68,68,0.03); border-color: rgba(239,68,68,0.15); }
.compare-card.good { background: rgba(16,185,129,0.03); border-color: rgba(16,185,129,0.15); }
.compare-card h4 { font-size: 14px; margin-bottom: 10px; }
.compare-card.bad h4 { color: #dc2626; }
.compare-card.good h4 { color: #059669; }
.compare-card ul { list-style: none; }
.compare-card li {
font-size: 13px; color: var(--text-2);
padding: 4px 0 4px 18px;
position: relative;
}
.compare-card.bad li::before { content: '\2715'; position: absolute; left: 0; color: #dc2626; }
.compare-card.good li::before { content: '\2713'; position: absolute; left: 0; color: #059669; }
/* Summary Box */
.summary-box {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
padding: 24px;
margin: 20px 0;
}
.summary-box h4 { font-size: 15px; margin-bottom: 12px; color: var(--accent-2); }
.summary-box p { color: var(--text-2); font-size: 14px; margin-bottom: 8px; }
/* Method Bar */
.method-bar {
display: flex; flex-wrap: wrap; gap: 8px;
margin-bottom: 20px;
}
.method-tag {
display: inline-flex; align-items: center; gap: 6px;
padding: 6px 14px;
border-radius: 8px;
font-size: 13px;
font-weight: 500;
}
.method-tag.kb { background: rgba(99,102,241,0.1); color: var(--accent-2); border: 1px solid rgba(99,102,241,0.2); }
.method-tag.framework { background: rgba(20,184,166,0.1); color: var(--teal); border: 1px solid rgba(20,184,166,0.2); }
/* Step Block */
.step-block {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
padding: 24px 28px;
margin-bottom: 16px;
}
.step-block h3 {
font-size: 16px; font-weight: 600;
margin-bottom: 14px;
display: flex; align-items: center; gap: 10px;
}
.step-num {
flex-shrink: 0;
width: 28px; height: 28px;
border-radius: 8px;
display: flex; align-items: center; justify-content: center;
font-size: 13px; font-weight: 700;
color: #fff;
background: var(--accent);
}
/* Divider */
.divider {
height: 1px;
background: var(--border);
margin: 40px 0 0;
}
/* Footer */
.footer {
text-align: center;
color: var(--text-2);
font-size: 13px;
padding: 40px 0 0;
}
/* Problem Card */
.problem-card {
background: rgba(239,68,68,0.03);
border: 1px solid rgba(239,68,68,0.15);
border-radius: 12px;
padding: 20px 24px;
margin-bottom: 16px;
}
.problem-card h4 {
font-size: 14px; color: #dc2626;
margin-bottom: 10px;
}
.problem-card ul { list-style: none; }
.problem-card li {
font-size: 13px; color: var(--text-2);
padding: 4px 0 4px 18px;
position: relative;
}
.problem-card li::before { content: '\2715'; position: absolute; left: 0; color: #dc2626; }
/* TOC */
.toc-box {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
padding: 24px 28px;
margin-bottom: 24px;
}
.toc-box h4 { font-size: 15px; margin-bottom: 12px; color: var(--accent-2); }
.toc-list { list-style: none; }
.toc-list li {
font-size: 14px; color: var(--text-2);
padding: 6px 0 6px 20px;
position: relative;
}
.toc-list li::before { content: '\25B8'; position: absolute; left: 0; color: var(--accent); }
.toc-list li strong { color: var(--text); }
@media (max-width: 768px) {
.compare-grid { grid-template-columns: 1fr; }
.intent-row { grid-template-columns: 1fr; }
.ea-grid { grid-template-columns: 1fr; }
.hero h1 { font-size: 22px; }
.section-title { font-size: 18px; }
}
/* === Emotion Summary Column === */
.scene-table .emo-col {
width: 190px;
font-size: 12px;
padding: 10px 12px !important;
}
.emo-tags {
display: flex; flex-wrap: wrap; gap: 3px;
margin-bottom: 4px;
}
.emo-pad-tag {
display: inline-block;
font-size: 10px;
padding: 1px 6px;
border-radius: 3px;
font-weight: 600;
background: rgba(59,130,246,0.12);
color: #2563eb;
}
.emo-feel-tag {
display: inline-block;
font-size: 10px;
padding: 1px 6px;
border-radius: 3px;
font-weight: 500;
background: rgba(236,72,153,0.1);
color: #be185d;
}
.emo-desc {
color: var(--text-2);
font-size: 11px;
line-height: 1.5;
margin-bottom: 4px;
}
.ea-toggle {
display: inline-flex;
align-items: center;
gap: 3px;
font-size: 10px;
color: var(--accent);
cursor: pointer;
margin-top: 2px;
padding: 2px 8px;
border-radius: 4px;
background: rgba(99,102,241,0.06);
border: 1px solid rgba(99,102,241,0.12);
user-select: none;
transition: all 0.15s;
}
.ea-toggle:hover {
background: rgba(99,102,241,0.12);
border-color: rgba(99,102,241,0.2);
}
/* === Collapsible ea-row === */
.ea-row { display: none; }
.ea-row.show { display: table-row; }
</style>
</head>
<body>
<!-- Hero -->
<div class="hero">
<div class="container">
<span class="hero-tag">框架方法验证 · 四脚本对比</span>
<h1>剧本大纲情绪改善案例</h1>
<p class="subtitle">基于三段式结构 + 情绪递进设计 + 情感铺垫设计 + 编导意图解析 + 闪回手法,生成4个1分钟短视频剧本大纲,并附完整Step情绪改善拆解</p>
<div class="hero-meta">
<div class="hero-meta-item"><strong>4</strong> 个剧本大纲</div>
<div class="hero-meta-item"><strong>5</strong> 个知识库模块</div>
<div class="hero-meta-item"><strong>6</strong> 步框架流程</div>
<div class="hero-meta-item"><strong>2</strong> 分钟/条</div>
</div>
</div>
</div>
<div class="container">
<!-- 目录 -->
<div class="toc-box" style="margin-top: 32px;">
<h4>报告结构</h4>
<ul class="toc-list">
<li><strong>第一部分 · 四脚本大纲(前置)</strong></li>
<li style="padding-left:40px;">脚本1:《最后一单》— 教学示例 · 外卖员父亲</li>
<li style="padding-left:40px;">脚本2:《全部》— 案例1改善 · 事件堆砌→情绪递进</li>
<li style="padding-left:40px;">脚本3:《看不见的室友》— 案例2改善 · 缺少铺垫→情感铺垫</li>
<li style="padding-left:40px;">脚本4:《五十年》— 案例3改善 · 不会闪回→伏笔链+触发物</li>
<li><strong>第二部分 · 情绪改善Step拆解(后置)</strong></li>
<li style="padding-left:40px;">通用六步流程说明</li>
<li style="padding-left:40px;">每个脚本的 Step 1-6 完整拆解</li>
<li style="padding-left:40px;">编导意图解析 + 改善对比</li>
</ul>
</div>
<div class="divider"></div>
<!-- ========== 第一部分:四脚本大纲 ========== -->
<div class="section">
<div class="section-header">
<div>
<div class="section-title">第一部分 · 四脚本大纲</div>
<div class="section-desc">4个1分钟短视频的完整剧本大纲,含三段式结构、场景表(含情绪和感受列)、可展开三段式情感分析、情绪曲线图</div>
</div>
</div>
<!-- ========== 脚本1:《最后一单》 ========== -->
<div class="script-card" id="script1">
<div class="script-card-head">
<div class="script-badge s0">01</div>
<div>
<div class="script-title">《最后一单》</div>
<div class="script-meta">教学示例 · 外卖员父亲为女儿生日多跑几单</div>
</div>
</div>
<div class="script-info-bar">
<span class="info-chip">赛道:<strong>剧情娱乐→温情正能量</strong></span>
<span class="info-chip">时长:<strong>1分钟</strong></span>
<span class="info-chip">视角:<strong>第三视角</strong></span>
<span class="info-chip">目标体感:<strong>治愈感+共鸣感</strong></span>
</div>
<table class="scene-table">
<thead>
<tr><th style="width:70px;">时间</th><th style="width:36px;">幕</th><th style="width:72px;">场</th><th>场景内容</th></tr>
</thead>
<tbody>
<tr><td class="time-col">0-4s</td><td class="act-col act1">一</td><td><strong>钩子:</strong>外卖箱里放着一个粉色礼盒,男主骑车说"今天最后一单,跑完就回家"</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP1铺垫"拼命跑单"的认知基础</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type mix">混合</span>[视听+台词] 礼盒特写+"最后一单"制造悬念</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">期待感</span>礼盒是什么?他要回家干嘛</div>
</div></td></tr>
<tr><td class="time-col">4-12s</td><td class="act-col act1">一</td><td>手机屏幕"今日已接42单/目标50单"。等红灯时看手机日历"囡囡生日"。<strong>铺垫:</strong>数字说话,不点破辛苦</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP1铺垫"他在拼命"的具体证据</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 屏幕数字+看日历,不点破辛苦</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">真实感</span><span class="ea-feel">代入感</span>原来他这么拼命是为了什么</div>
</div></td></tr>
<tr><td class="time-col">12-20s</td><td class="act-col act2">二</td><td>突然下雨,男主在屋檐下接单。女儿电话"爸爸你什么时候回来",他说"快了快了"。<strong>触点1</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>从认知层转向情感层,引入女儿</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[台词调性] 女儿声音+他说"快了快了"</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">共鸣感</span><span class="ea-feel">焦虑感</span>心里一紧,原来他在拼命是为了家人</div>
</div></td></tr>
<tr><td class="time-col">20-25s</td><td class="act-col act2">二</td><td>雨停了,他路过玩具店停了一秒,看了看橱窗里的娃娃。<strong>留白</strong>——观众不知道他要买什么</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP3铺垫"礼物"的种子</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 停留一秒看橱窗,不解释</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">期待感</span><span class="ea-feel">猎奇感</span>他要买什么?观众开始在意</div>
</div></td></tr>
<tr><td class="time-col">25-32s</td><td class="act-col act2">二</td><td>接到最后一单,送到后客人给了差评。他看了眼手机,没说话,骑车走。<strong>触点2</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>从期待转向心酸,打破"努力就有回报"</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[面部表情] 看手机+沉默+骑车走</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">共鸣感</span>替他委屈,太不容易了</div>
</div></td></tr>
<tr><td class="time-col">32-42s</td><td class="act-col act2">二</td><td>雨中骑行特写,雨滴打在头盔上声音放大。他停车,从外卖箱拿出那个粉色礼盒——进了一家店。<strong>蓄力</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP3积累情绪势能到峰值</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[视听渲染] 雨声放大+头盔特写+礼盒特写</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">期待感</span>快要到高潮了,情绪被拉满</div>
</div></td></tr>
<tr><td class="time-col">42-55s</td><td class="act-col act3">三</td><td>回到家,女儿已睡着。他把礼物放在枕边,看了她一眼。然后拿起头盔,又出门了。<strong>触点3·极致触点</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type release">释放</span>兑现前序所有铺垫的父爱</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 放礼物+看女儿+拿起头盔</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">共鸣感</span><span class="ea-feel">治愈感</span>"这就是父爱",情绪爆发</div>
</div></td></tr>
<tr><td class="time-col">55-60s</td><td class="act-col act3">三</td><td>最后一个镜头:手机屏幕"今日50单✓"。门关上的声音。<strong>收束</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>延续TP3余韵,给情绪降落空间</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[视听渲染] 屏幕数字+关门声</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">治愈感</span><span class="ea-feel">陪伴感</span>温暖余韵,想给爸爸打电话</div>
</div></td></tr>
</tbody>
</table>
<!-- 情绪曲线图 -->
<div class="chart-box" style="margin-top:20px;">
<h5>情绪曲线图</h5>
<div class="chart-subtitle">三段式:情感铺垫(设计层·前瞻) → 情感表达(执行层·当下) → 用户体感(接收层·结果)</div>
<svg viewBox="0 0 680 450" width="100%" role="img">
<title>《最后一单》情绪曲线</title>
<desc>三段式结构中三个情绪触点及其铺垫区域的递进曲线</desc>
<text x="340" y="28" text-anchor="middle" font-size="15" font-weight="500" fill="#1e293b">《最后一单》· 情绪递进曲线</text>
<!-- Act boxes -->
<rect x="60" y="55" width="93" height="34" rx="6" fill="#E6F1FB" stroke="#378ADD" stroke-width="0.5"/>
<text x="106" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#0C447C">第一幕 · 钩子建置</text>
<text x="106" y="82" text-anchor="middle" font-size="10" fill="#378ADD">0—10s · 约17%</text>
<rect x="157" y="55" width="346" height="34" rx="6" fill="#EEEDFE" stroke="#7F77DD" stroke-width="0.5"/>
<text x="330" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#3C3489">第二幕 · 叙事展开</text>
<text x="330" y="82" text-anchor="middle" font-size="10" fill="#7F77DD">10—48s · 约63%</text>
<rect x="507" y="55" width="113" height="34" rx="6" fill="#FAEEDA" stroke="#BA7517" stroke-width="0.5"/>
<text x="563" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#633806">第三幕 · 高潮收尾</text>
<text x="563" y="82" text-anchor="middle" font-size="10" fill="#BA7517">48—60s · 约20%</text>
<!-- Y-axis labels -->
<text x="52" y="165" text-anchor="end" font-size="10" fill="#94a3b8">情绪</text>
<text x="52" y="178" text-anchor="end" font-size="10" fill="#94a3b8">强度</text>
<text x="52" y="248" text-anchor="end" font-size="9" fill="#94a3b8">0</text>
<text x="52" y="213" text-anchor="end" font-size="9" fill="#94a3b8">3</text>
<text x="52" y="177" text-anchor="end" font-size="9" fill="#94a3b8">5</text>
<text x="52" y="141" text-anchor="end" font-size="9" fill="#94a3b8">7</text>
<text x="52" y="105" text-anchor="end" font-size="9" fill="#94a3b8">10</text>
<!-- Baseline -->
<line x1="60" y1="245" x2="620" y2="245" stroke="#cbd5e1" stroke-width="0.5" stroke-dasharray="4,4"/>
<!-- Curve -->
<path d="M 60 245 Q 72 210, 83 205 Q 100 220, 116 218 Q 135 215, 153 215 Q 190 200, 223 185 Q 248 198, 270 200 Q 295 190, 317 185 Q 355 160, 387 155 Q 415 168, 443 170 Q 475 155, 503 150 Q 528 120, 550 105 Q 575 115, 597 160 Q 610 180, 620 190" fill="none" stroke="#14b8a6" stroke-width="2.5" stroke-linecap="round"/>
<!-- Touchpoints -->
<circle cx="223" cy="185" r="5" fill="#3b82f6" stroke="#fff" stroke-width="1.5"/>
<line x1="223" y1="89" x2="223" y2="180" stroke="#3b82f6" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="387" cy="155" r="5" fill="#f59e0b" stroke="#fff" stroke-width="1.5"/>
<line x1="387" y1="89" x2="387" y2="150" stroke="#f59e0b" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="550" cy="105" r="5" fill="#ec4899" stroke="#fff" stroke-width="1.5"/>
<line x1="550" y1="89" x2="550" y2="100" stroke="#ec4899" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<!-- Padding areas -->
<rect x="100" y="265" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#1D9E75" stroke-width="0.5"/>
<text x="155" y="280" text-anchor="middle" font-size="10" fill="#085041">铺垫区 → 触点1</text>
<rect x="240" y="265" width="135" height="22" rx="4" fill="#E1F5EE" stroke="#1D9E75" stroke-width="0.5"/>
<text x="307" y="280" text-anchor="middle" font-size="10" fill="#085041">留白区 → 触点2</text>
<rect x="400" y="265" width="140" height="22" rx="4" fill="#E1F5EE" stroke="#1D9E75" stroke-width="0.5"/>
<text x="470" y="280" text-anchor="middle" font-size="10" fill="#085041">蓄力区 → 触点3(高潮)</text>
<!-- Touchpoint labels -->
<text x="223" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#2563eb">触点1 · 情感铺垫</text>
<text x="223" y="324" text-anchor="middle" font-size="10" fill="#64748b">~18s · "原来他在拼命"</text>
<text x="387" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#d97706">触点2 · 情感表达</text>
<text x="387" y="324" text-anchor="middle" font-size="10" fill="#64748b">~35s · "心疼"</text>
<text x="550" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#db2777">触点3 · 用户体感</text>
<text x="550" y="324" text-anchor="middle" font-size="10" fill="#64748b">~53s · "这就是父爱"</text>
<!-- Divider -->
<line x1="60" y1="345" x2="620" y2="345" stroke="#e2e8f0" stroke-width="0.5"/>
<!-- Scene descriptions -->
<text x="106" y="362" text-anchor="middle" font-size="10" fill="#64748b">0-3s 钩子·礼盒悬念</text>
<text x="106" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">3-10s 数字+日历铺垫</text>
<text x="330" y="362" text-anchor="middle" font-size="10" fill="#64748b">铺垫 → 冲突 → 转折 → 蓄力</text>
<text x="330" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">38秒完成3次情绪递进</text>
<text x="563" y="362" text-anchor="middle" font-size="10" fill="#64748b">情感爆发 + 收束</text>
<text x="563" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">极致触点 + 余韵</text>
<!-- Key insight -->
<rect x="60" y="395" width="560" height="32" rx="6" fill="#E8F8F5" stroke="#14b8a6" stroke-width="0.5"/>
<text x="340" y="415" text-anchor="middle" font-size="11" fill="#0d9488">关键:三峰递进 — 认知(铺垫)→情感(表达)→价值(体感),每峰有明确回落再攀升</text>
</svg>
</div>
</div>
<!-- ========== 脚本2:《全部》 ========== -->
<div class="script-card" id="script2">
<div class="script-card-head">
<div class="script-badge s1">02</div>
<div>
<div class="script-title">《全部》</div>
<div class="script-meta">案例1改善 · 会话61723 · 香香 · 男生自我感动,没钱给女生花全部的钱</div>
</div>
</div>
<div class="script-info-bar">
<span class="info-chip">赛道:<strong>剧情娱乐→女性共鸣</strong></span>
<span class="info-chip">时长:<strong>1分钟</strong></span>
<span class="info-chip">视角:<strong>第三视角</strong></span>
<span class="info-chip">目标体感:<strong>压迫感+满足感</strong></span>
<span class="info-chip">原问题:<strong>事件堆砌(16个事件平铺)</strong></span>
</div>
<table class="scene-table">
<thead>
<tr><th style="width:70px;">时间</th><th style="width:36px;">幕</th><th style="width:72px;">场</th><th>场景内容</th></tr>
</thead>
<tbody>
<tr><td class="time-col">0-5s</td><td class="act-col act1">一</td><td><strong>钩子:</strong>男主把工资卡放在桌上推过去,"全部,跟上次一样"。女生没接。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为全片铺垫"窒息感"的第一块基石</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type mix">混合</span>[行为+台词] 推工资卡+"全部,跟上次一样"</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">猎奇感</span>女生为什么不接?哪里不对</div>
</div></td></tr>
<tr><td class="time-col">5-12s</td><td class="act-col act1">一</td><td>便利店买两个饭团放回一个;给女生买奶茶。<strong>铺垫:</strong>他对自己省,对她不省</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP1铺垫"他对自己省对她不省"</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 放回贵的饭团+买奶茶,不点破</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">真实感</span><span class="ea-feel">代入感</span>理解了他的付出</div>
</div></td></tr>
<tr><td class="time-col">12-18s</td><td class="act-col act2">二</td><td>吃饭捂胃,"没事吃太快了"。桌上有胃药包裹未拆。<strong>触点1</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>从认同转向隐隐不安</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为+台词] 捂胃+"吃太快了"+桌上胃药</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">压迫感</span>开始不安,他连药都不舍得买</div>
</div></td></tr>
<tr><td class="time-col">18-25s</td><td class="act-col act2">二</td><td>男主退掉胃药,钱转到购物APP买围巾。<strong>转折:</strong>牺牲升级到"放弃照顾自己"</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP2铺垫"牺牲已到伤害自己"</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 退药+转钱到购物APP,不解释</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">焦虑感</span>不对劲,这已经不是付出是自毁</div>
</div></td></tr>
<tr><td class="time-col">25-32s</td><td class="act-col act2">二</td><td>送围巾。女生试围巾没笑,对着镜子看了很久。男主在旁边开心。<strong>触点2</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>从不安转向窒息</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[面部表情] 女生没笑+看镜子很久+男主开心</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">焦虑感</span>她为什么不开心?窒息感来了</div>
</div></td></tr>
<tr><td class="time-col">32-42s</td><td class="act-col act2">二</td><td>日常蒙太奇——给她夹菜自己吃白饭、给她买衣服自己穿旧衣、下雨只有一把伞全遮她。<strong>蓄力:</strong>窒息感累积</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP3积累窒息感到峰值</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type mix">混合</span>[视听渲染] 快剪+半肩湿透+雨声放大</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">焦虑感</span>窒息感拉满,喘不过气</div>
</div></td></tr>
<tr><td class="time-col">42-52s</td><td class="act-col act3">三</td><td>女生把围巾包好放回男主枕边。纸条"我不想你用命换我开心"。推门离开。<strong>触点3·极致触点</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type release">释放</span>兑现前序所有"甜蜜=压力"的情感债务</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 围巾放枕边+纸条+推门离开</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">共鸣感</span><span class="ea-feel">满足感</span>原来被这样爱着的人逃了,醒悟</div>
</div></td></tr>
<tr><td class="time-col">52-60s</td><td class="act-col act3">三</td><td>男主回来看到纸条。最后镜头:他把两个饭团都买了贵的。<strong>收束:</strong>学会对自己好一点</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>延续TP3的醒悟,给情绪释放出口</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 两个饭团都买贵的</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">治愈感</span><span class="ea-feel">代入感</span>学会对自己好一点,释然</div>
</div></td></tr>
</tbody>
</table>
<!-- 情绪曲线图 -->
<div class="chart-box" style="margin-top:20px;">
<h5>情绪曲线图</h5>
<div class="chart-subtitle">三段式:情感铺垫(设计层·前瞻) → 情感表达(执行层·当下) → 用户体感(接收层·结果)</div>
<svg viewBox="0 0 680 450" width="100%" role="img">
<title>《全部》情绪曲线</title>
<desc>窒息感持续累积型——从TP1到TP3情绪持续走高不退</desc>
<text x="340" y="28" text-anchor="middle" font-size="15" font-weight="500" fill="#1e293b">《全部》· 情绪递进曲线</text>
<rect x="60" y="55" width="93" height="34" rx="6" fill="#E6F1FB" stroke="#378ADD" stroke-width="0.5"/>
<text x="106" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#0C447C">第一幕 · 钩子建置</text>
<text x="106" y="82" text-anchor="middle" font-size="10" fill="#378ADD">0—10s · 约17%</text>
<rect x="157" y="55" width="346" height="34" rx="6" fill="#EEEDFE" stroke="#7F77DD" stroke-width="0.5"/>
<text x="330" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#3C3489">第二幕 · 叙事展开</text>
<text x="330" y="82" text-anchor="middle" font-size="10" fill="#7F77DD">10—48s · 约63%</text>
<rect x="507" y="55" width="113" height="34" rx="6" fill="#FAEEDA" stroke="#BA7517" stroke-width="0.5"/>
<text x="563" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#633806">第三幕 · 高潮收尾</text>
<text x="563" y="82" text-anchor="middle" font-size="10" fill="#BA7517">48—60s · 约20%</text>
<text x="52" y="165" text-anchor="end" font-size="10" fill="#94a3b8">情绪</text>
<text x="52" y="178" text-anchor="end" font-size="10" fill="#94a3b8">强度</text>
<text x="52" y="248" text-anchor="end" font-size="9" fill="#94a3b8">0</text>
<text x="52" y="213" text-anchor="end" font-size="9" fill="#94a3b8">3</text>
<text x="52" y="177" text-anchor="end" font-size="9" fill="#94a3b8">5</text>
<text x="52" y="141" text-anchor="end" font-size="9" fill="#94a3b8">7</text>
<text x="52" y="105" text-anchor="end" font-size="9" fill="#94a3b8">10</text>
<line x1="60" y1="245" x2="620" y2="245" stroke="#cbd5e1" stroke-width="0.5" stroke-dasharray="4,4"/>
<!-- Curve: continuous climb, no valleys -->
<path d="M 60 245 Q 72 200, 83 195 Q 100 185, 116 180 Q 135 175, 153 170 Q 190 155, 223 150 Q 248 145, 270 140 Q 295 130, 317 125 Q 355 110, 387 100 Q 415 92, 443 88 Q 475 82, 503 78 Q 528 65, 550 58 Q 575 80, 597 110 Q 610 130, 620 145" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round"/>
<circle cx="223" cy="150" r="5" fill="#3b82f6" stroke="#fff" stroke-width="1.5"/>
<line x1="223" y1="89" x2="223" y2="145" stroke="#3b82f6" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="387" cy="100" r="5" fill="#f59e0b" stroke="#fff" stroke-width="1.5"/>
<line x1="387" y1="89" x2="387" y2="95" stroke="#f59e0b" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="550" cy="58" r="5" fill="#ec4899" stroke="#fff" stroke-width="1.5"/>
<line x1="550" y1="89" x2="550" y2="63" stroke="#ec4899" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<rect x="100" y="265" width="110" height="22" rx="4" fill="#FEE2E2" stroke="#ef4444" stroke-width="0.5"/>
<text x="155" y="280" text-anchor="middle" font-size="10" fill="#991B1B">铺垫区 → 触点1</text>
<rect x="240" y="265" width="135" height="22" rx="4" fill="#FEE2E2" stroke="#ef4444" stroke-width="0.5"/>
<text x="307" y="280" text-anchor="middle" font-size="10" fill="#991B1B">转折区 → 触点2</text>
<rect x="400" y="265" width="140" height="22" rx="4" fill="#FEE2E2" stroke="#ef4444" stroke-width="0.5"/>
<text x="470" y="280" text-anchor="middle" font-size="10" fill="#991B1B">蓄力区 → 触点3(高潮)</text>
<text x="223" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#2563eb">触点1 · 情感铺垫</text>
<text x="223" y="324" text-anchor="middle" font-size="10" fill="#64748b">~18s · "他真的很用力"</text>
<text x="387" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#d97706">触点2 · 情感表达</text>
<text x="387" y="324" text-anchor="middle" font-size="10" fill="#64748b">~35s · "不对劲……窒息"</text>
<text x="550" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#db2777">触点3 · 用户体感</text>
<text x="550" y="324" text-anchor="middle" font-size="10" fill="#64748b">~53s · "被爱的人逃了"</text>
<line x1="60" y1="345" x2="620" y2="345" stroke="#e2e8f0" stroke-width="0.5"/>
<text x="106" y="362" text-anchor="middle" font-size="10" fill="#64748b">0-3s 工资卡·悬念</text>
<text x="106" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">3-10s 饭团+奶茶铺垫</text>
<text x="330" y="362" text-anchor="middle" font-size="10" fill="#64748b">认同 → 不安 → 窒息 → 峰值</text>
<text x="330" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">窒息感持续累积不退</text>
<text x="563" y="362" text-anchor="middle" font-size="10" fill="#64748b">反转爆发 + 收束</text>
<text x="563" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">纸条离开 + 释然</text>
<rect x="60" y="395" width="560" height="32" rx="6" fill="#FEF2F2" stroke="#ef4444" stroke-width="0.5"/>
<text x="340" y="415" text-anchor="middle" font-size="11" fill="#dc2626">关键:窒息感持续累积不退 — 从"感动"到"窒息"到"醒悟",曲线只升不降</text>
</svg>
</div>
</div>
<!-- ========== 脚本3:《看不见的室友》 ========== -->
<div class="script-card" id="script3">
<div class="script-card-head">
<div class="script-badge s2">03</div>
<div>
<div class="script-title">《看不见的室友》</div>
<div class="script-meta">案例2改善 · 会话59126 · 丁丁 · 类似《开心家族》强设定+反转+情感</div>
</div>
</div>
<div class="script-info-bar">
<span class="info-chip">赛道:<strong>剧情娱乐→温情正能量</strong></span>
<span class="info-chip">时长:<strong>1分钟</strong></span>
<span class="info-chip">视角:<strong>第三视角</strong></span>
<span class="info-chip">目标体感:<strong>共鸣感+治愈感</strong></span>
<span class="info-chip">原问题:<strong>缺少情绪铺垫(设定说明式)</strong></span>
</div>
<table class="scene-table">
<thead>
<tr><th style="width:70px;">时间</th><th style="width:36px;">幕</th><th style="width:72px;">场</th><th>场景内容</th></tr>
</thead>
<tbody>
<tr><td class="time-col">0-5s</td><td class="act-col act1">一</td><td><strong>钩子:</strong>男主推门回家,对着空屋子说"我回来了"。桌上有一碗热面在冒气。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为全片铺垫"看不见的室友"悬念</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type mix">混合</span>[行为+台词] 对空屋子说话+桌上热面</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">期待感</span>一个人住?谁做的面?</div>
</div></td></tr>
<tr><td class="time-col">5-14s</td><td class="act-col act1">一</td><td>放钥匙时推了一下老花镜位置;碗筷双人份,筷子朝外摆。<strong>铺垫:</strong>不属于自己的东西,习以为常</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP1铺垫"不属于自己的东西"</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 推老花镜+双人份碗筷,不点破</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">真实感</span>隐隐觉得不对但说不出来</div>
</div></td></tr>
<tr><td class="time-col">14-20s</td><td class="act-col act2">二</td><td>吃面,喊"谢谢啊",没人回答。笑着摇头吃了。<strong>触点1</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>延续悬念,建立"有人照顾他"的认知</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[台词调性] 喊话+没人回答+笑着摇头</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">陪伴感</span>有点温馨但更奇怪了</div>
</div></td></tr>
<tr><td class="time-col">20-26s</td><td class="act-col act2">二</td><td>出门忘带伞,淋湿回来。门口老布鞋,他踢整齐。<strong>铺垫:</strong>老布鞋=老人的鞋</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP2铺垫"老人痕迹"</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 门口老布鞋+他踢整齐,不解释</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">焦虑感</span>老布鞋=老人的鞋,开始猜</div>
</div></td></tr>
<tr><td class="time-col">26-32s</td><td class="act-col act2">二</td><td>鞋柜上多了一把伞+纸条"下次记得带",字迹歪歪扭扭。<strong>触点2</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>从好奇转向心酸</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 伞+纸条歪扭字迹,不点破</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">共鸣感</span>字迹像老人……室友是谁?</div>
</div></td></tr>
<tr><td class="time-col">32-38s</td><td class="act-col act2">二</td><td>沙发上睡着,多了毛毯。醒来小声说"又给我盖"。<strong>蓄力</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>为TP3积累心酸到峰值</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为+台词] 毛毯+小声说"又给我盖"</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">共鸣感</span>快猜到了,心酸累积</div>
</div></td></tr>
<tr><td class="time-col">38-52s</td><td class="act-col act3">三</td><td>收拾柜子,发现保温饭盒,标签"妈妈给囡囡"。1秒闪回:苍老的手在切菜。<strong>触点3·极致触点</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type release">释放</span>兑现前序所有"看不见的照顾=妈妈"的情感债务</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为+视听] 饭盒标签+1秒闪回苍老的手</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">共鸣感</span><span class="ea-feel">治愈感</span>原来一直是妈妈……她不在了但习惯还在</div>
</div></td></tr>
<tr><td class="time-col">52-60s</td><td class="act-col act3">三</td><td>抱着饭盒,笑了,眼圈红了。把老花镜擦干净放好,碗筷依然双人份。<strong>收束</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>延续TP3的温暖,给情绪释放空间</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[面部+行为] 笑+眼圈红+擦老花镜+双人份</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">治愈感</span><span class="ea-feel">陪伴感</span>他不孤单,妈妈一直都在</div>
</div></td></tr>
</tbody>
</table>
<!-- 情绪曲线图 -->
<div class="chart-box" style="margin-top:20px;">
<h5>情绪曲线图</h5>
<div class="chart-subtitle">三段式:情感铺垫(设计层·前瞻) → 情感表达(执行层·当下) → 用户体感(接收层·结果)</div>
<svg viewBox="0 0 680 450" width="100%" role="img">
<title>《看不见的室友》情绪曲线</title>
<desc>前半段温馨低位运行,TP3饭盒标签处垂直飙升</desc>
<text x="340" y="28" text-anchor="middle" font-size="15" font-weight="500" fill="#1e293b">《看不见的室友》· 情绪递进曲线</text>
<rect x="60" y="55" width="93" height="34" rx="6" fill="#E6F1FB" stroke="#378ADD" stroke-width="0.5"/>
<text x="106" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#0C447C">第一幕 · 钩子建置</text>
<text x="106" y="82" text-anchor="middle" font-size="10" fill="#378ADD">0—10s · 约17%</text>
<rect x="157" y="55" width="346" height="34" rx="6" fill="#EEEDFE" stroke="#7F77DD" stroke-width="0.5"/>
<text x="330" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#3C3489">第二幕 · 叙事展开</text>
<text x="330" y="82" text-anchor="middle" font-size="10" fill="#7F77DD">10—48s · 约63%</text>
<rect x="507" y="55" width="113" height="34" rx="6" fill="#FAEEDA" stroke="#BA7517" stroke-width="0.5"/>
<text x="563" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#633806">第三幕 · 高潮收尾</text>
<text x="563" y="82" text-anchor="middle" font-size="10" fill="#BA7517">48—60s · 约20%</text>
<text x="52" y="165" text-anchor="end" font-size="10" fill="#94a3b8">情绪</text>
<text x="52" y="178" text-anchor="end" font-size="10" fill="#94a3b8">强度</text>
<text x="52" y="248" text-anchor="end" font-size="9" fill="#94a3b8">0</text>
<text x="52" y="213" text-anchor="end" font-size="9" fill="#94a3b8">3</text>
<text x="52" y="177" text-anchor="end" font-size="9" fill="#94a3b8">5</text>
<text x="52" y="141" text-anchor="end" font-size="9" fill="#94a3b8">7</text>
<text x="52" y="105" text-anchor="end" font-size="9" fill="#94a3b8">10</text>
<line x1="60" y1="245" x2="620" y2="245" stroke="#cbd5e1" stroke-width="0.5" stroke-dasharray="4,4"/>
<!-- Curve: flat first half, sharp rise at TP3 -->
<path d="M 60 245 Q 72 220, 83 215 Q 100 210, 116 208 Q 135 206, 153 205 Q 190 198, 223 190 Q 248 192, 270 190 Q 295 188, 317 185 Q 355 170, 387 160 Q 415 155, 443 150 Q 475 145, 503 140 Q 528 120, 550 100 Q 575 115, 597 140 Q 610 155, 620 165" fill="none" stroke="#f59e0b" stroke-width="2.5" stroke-linecap="round"/>
<circle cx="223" cy="190" r="5" fill="#3b82f6" stroke="#fff" stroke-width="1.5"/>
<line x1="223" y1="89" x2="223" y2="185" stroke="#3b82f6" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="387" cy="160" r="5" fill="#f59e0b" stroke="#fff" stroke-width="1.5"/>
<line x1="387" y1="89" x2="387" y2="155" stroke="#f59e0b" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="550" cy="100" r="5" fill="#ec4899" stroke="#fff" stroke-width="1.5"/>
<line x1="550" y1="89" x2="550" y2="95" stroke="#ec4899" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<rect x="100" y="265" width="110" height="22" rx="4" fill="#FEF3C7" stroke="#f59e0b" stroke-width="0.5"/>
<text x="155" y="280" text-anchor="middle" font-size="10" fill="#92400E">铺垫区 → 触点1</text>
<rect x="240" y="265" width="135" height="22" rx="4" fill="#FEF3C7" stroke="#f59e0b" stroke-width="0.5"/>
<text x="307" y="280" text-anchor="middle" font-size="10" fill="#92400E">铺垫区 → 触点2</text>
<rect x="400" y="265" width="140" height="22" rx="4" fill="#FEF3C7" stroke="#f59e0b" stroke-width="0.5"/>
<text x="470" y="280" text-anchor="middle" font-size="10" fill="#92400E">蓄力区 → 触点3(高潮)</text>
<text x="223" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#2563eb">触点1 · 情感铺垫</text>
<text x="223" y="324" text-anchor="middle" font-size="10" fill="#64748b">~18s · "谁做的面?"</text>
<text x="387" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#d97706">触点2 · 情感表达</text>
<text x="387" y="324" text-anchor="middle" font-size="10" fill="#64748b">~35s · "字迹像老人"</text>
<text x="550" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#db2777">触点3 · 用户体感</text>
<text x="550" y="324" text-anchor="middle" font-size="10" fill="#64748b">~53s · "一直是妈妈"</text>
<line x1="60" y1="345" x2="620" y2="345" stroke="#e2e8f0" stroke-width="0.5"/>
<text x="106" y="362" text-anchor="middle" font-size="10" fill="#64748b">0-3s 钩子·热面悬念</text>
<text x="106" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">3-10s 老花镜+碗筷铺垫</text>
<text x="330" y="362" text-anchor="middle" font-size="10" fill="#64748b">温馨 → 猜测 → 心酸 → 蓄力</text>
<text x="330" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">前半段低位运行后急升</text>
<text x="563" y="362" text-anchor="middle" font-size="10" fill="#64748b">真相引爆 + 收束</text>
<text x="563" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">饭盒标签 + 1秒闪回</text>
<rect x="60" y="395" width="560" height="32" rx="6" fill="#FFFBEB" stroke="#f59e0b" stroke-width="0.5"/>
<text x="340" y="415" text-anchor="middle" font-size="11" fill="#92400E">关键:前半段温馨低位运行 — 所有铺垫在饭盒标签处垂直引爆,情感债务一次性偿还</text>
</svg>
</div>
</div>
<!-- ========== 脚本4:《五十年》 ========== -->
<div class="script-card" id="script4">
<div class="script-card-head">
<div class="script-badge s3">04</div>
<div>
<div class="script-title">《五十年》</div>
<div class="script-meta">案例3改善 · 会话59592 · 丁丁 · 老年夫妻暗示铺垫+镜子闪回</div>
</div>
</div>
<div class="script-info-bar">
<span class="info-chip">赛道:<strong>剧情娱乐→温情正能量</strong></span>
<span class="info-chip">时长:<strong>1分钟</strong></span>
<span class="info-chip">视角:<strong>第三视角</strong></span>
<span class="info-chip">目标体感:<strong>压迫感+共鸣感+治愈感</strong></span>
<span class="info-chip">原问题:<strong>不会运用闪回(暗示散落)</strong></span>
</div>
<table class="scene-table">
<thead>
<tr><th style="width:70px;">时间</th><th style="width:36px;">幕</th><th style="width:72px;">场</th><th>场景内容</th></tr>
</thead>
<tbody>
<tr><td class="time-col">0-5s</td><td class="act-col act1">一</td><td><strong>钩子:</strong>清晨,男主在厨房帮女主系围裙。阳光照进来。他的手微微颤抖,关节粗大。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>伏笔链第1环:手的异常</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 手颤抖+关节粗大,不点破</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">真实感</span>手有点老,一闪而过</div>
</div></td></tr>
<tr><td class="time-col">5-12s</td><td class="act-col act1">一</td><td>出门散步,两人走得很慢。男主自然放慢脚步配合女主。路过花店摘一朵给她。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>伏笔链第2环:步态异常</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 走得慢+自然配合,不解释</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">真实感</span><span class="ea-feel">期待感</span>走路好慢,以为是散步节奏</div>
</div></td></tr>
<tr><td class="time-col">12-18s</td><td class="act-col act2">二</td><td>男主看手机,屏幕拿得很远。女主端来两杯茶,搪瓷杯。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>伏笔链第3环:视力异常</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 屏幕拿远+搪瓷杯,不点破</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">猎奇感</span><span class="ea-feel">焦虑感</span>他近视?开始疑惑</div>
</div></td></tr>
<tr><td class="time-col">18-24s</td><td class="act-col act2">二</td><td>女主在阳台跟楼下广场舞轻轻晃。男主背后披外套"又站这吹风"。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>伏笔链第4环:肌肉记忆异常</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 轻轻晃+幅度小但节奏感强,不解释</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">猎奇感</span>年轻女孩不会跳广场舞吧</div>
</div></td></tr>
<tr><td class="time-col">24-30s</td><td class="act-col act2">二</td><td>女主笑"你每次都说这句"。<strong>触点2</strong>——时间厚度暴露</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type turn">转折</span>伏笔链第5环:时间厚度暴露</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[台词调性] "每次都说"三个字</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">共鸣感</span>"每次"——不像年轻情侣说的</div>
</div></td></tr>
<tr><td class="time-col">30-38s</td><td class="act-col act2">二</td><td>男主翻抽屉,翻到泛黄照片——年轻男女。看照片,看厨房女主,没说话。<strong>临界点</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type skill">蓄力</span>伏笔链第6环(临界):真相即将引爆</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为动作] 看照片+看女主+没说话</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">焦虑感</span><span class="ea-feel">期待感</span>那是他们年轻时候……等等,现在不是年轻的样子?</div>
</div></td></tr>
<tr><td class="time-col">38-46s</td><td class="act-col act3">三</td><td>男主路过镜子,停住。镜中:白发、皱纹、苍老的脸。<strong>2秒闪回。</strong>他愣住。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type release">释放</span>镜子=触发物,引爆全部伏笔链</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[视听渲染] 镜中白发+皱纹+2秒闪回</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">压迫感</span><span class="ea-feel">共鸣感</span>原来……他们已经老了</div>
</div></td></tr>
<tr><td class="time-col">46-54s</td><td class="act-col act3">三</td><td>女主走过来握住他的手"傻瓜,我们都陪伴彼此五十年了"。他低头看她的手——也苍老。</td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>延续TP3冲击,女主温柔拉回现在</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[行为+台词] 握手+"傻瓜,五十年了"</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">共鸣感</span><span class="ea-feel">治愈感</span>他忘了,她一直记得</div>
</div></td></tr>
<tr><td class="time-col">54-60s</td><td class="act-col act3">三</td><td>最后一个镜头:两人手握手的特写。阳光照在两双苍老的手上。<strong>收束</strong></td></tr>
<tr class="ea-row"><td colspan="3"><div class="ea-grid">
<div class="ea-item"><span class="ea-label pad">情绪铺垫</span><span class="ea-type carry">承接</span>收束全部情绪</div>
<div class="ea-item"><span class="ea-label exp">情感表达</span><span class="ea-type show">Show</span>[视听渲染] 两双苍老的手+阳光</div>
<div class="ea-item"><span class="ea-label fee">用户体感</span><span class="ea-feel">治愈感</span><span class="ea-feel">陪伴感</span>五十年的陪伴,温暖余韵</div>
</div></td></tr>
</tbody>
</table>
<!-- 情绪曲线图 -->
<div class="chart-box" style="margin-top:20px;">
<h5>情绪曲线图</h5>
<div class="chart-subtitle">三段式:情感铺垫(设计层·前瞻) → 情感表达(执行层·当下) → 用户体感(接收层·结果)</div>
<svg viewBox="0 0 680 450" width="100%" role="img">
<title>《五十年》情绪曲线</title>
<desc>伏笔区平坦后爆发——6个伏笔层层递进,镜子闪回处达到峰值</desc>
<text x="340" y="28" text-anchor="middle" font-size="15" font-weight="500" fill="#1e293b">《五十年》· 情绪递进曲线</text>
<rect x="60" y="55" width="93" height="34" rx="6" fill="#E6F1FB" stroke="#378ADD" stroke-width="0.5"/>
<text x="106" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#0C447C">第一幕 · 钩子建置</text>
<text x="106" y="82" text-anchor="middle" font-size="10" fill="#378ADD">0—10s · 约17%</text>
<rect x="157" y="55" width="346" height="34" rx="6" fill="#EEEDFE" stroke="#7F77DD" stroke-width="0.5"/>
<text x="330" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#3C3489">第二幕 · 叙事展开</text>
<text x="330" y="82" text-anchor="middle" font-size="10" fill="#7F77DD">10—48s · 约63%</text>
<rect x="507" y="55" width="113" height="34" rx="6" fill="#FAEEDA" stroke="#BA7517" stroke-width="0.5"/>
<text x="563" y="69" text-anchor="middle" font-size="11" font-weight="500" fill="#633806">第三幕 · 高潮收尾</text>
<text x="563" y="82" text-anchor="middle" font-size="10" fill="#BA7517">48—60s · 约20%</text>
<text x="52" y="165" text-anchor="end" font-size="10" fill="#94a3b8">情绪</text>
<text x="52" y="178" text-anchor="end" font-size="10" fill="#94a3b8">强度</text>
<text x="52" y="248" text-anchor="end" font-size="9" fill="#94a3b8">0</text>
<text x="52" y="213" text-anchor="end" font-size="9" fill="#94a3b8">3</text>
<text x="52" y="177" text-anchor="end" font-size="9" fill="#94a3b8">5</text>
<text x="52" y="141" text-anchor="end" font-size="9" fill="#94a3b8">7</text>
<text x="52" y="105" text-anchor="end" font-size="9" fill="#94a3b8">10</text>
<line x1="60" y1="245" x2="620" y2="245" stroke="#cbd5e1" stroke-width="0.5" stroke-dasharray="4,4"/>
<!-- Curve: flat foreshadowing area, explosive rise at TP3 -->
<path d="M 60 245 Q 72 215, 83 210 Q 100 208, 116 205 Q 135 203, 153 200 Q 190 195, 223 190 Q 248 188, 270 185 Q 295 180, 317 175 Q 355 165, 387 155 Q 415 150, 443 145 Q 475 135, 503 125 Q 520 90, 530 80 Q 540 70, 545 65 L 545 60 Q 560 75, 580 110 Q 600 140, 620 155" fill="none" stroke="#3b82f6" stroke-width="2.5" stroke-linecap="round"/>
<circle cx="282" cy="188" r="5" fill="#3b82f6" stroke="#fff" stroke-width="1.5"/>
<line x1="282" y1="89" x2="282" y2="183" stroke="#3b82f6" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="387" cy="155" r="5" fill="#f59e0b" stroke="#fff" stroke-width="1.5"/>
<line x1="387" y1="89" x2="387" y2="150" stroke="#f59e0b" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<circle cx="545" cy="60" r="5" fill="#ec4899" stroke="#fff" stroke-width="1.5"/>
<line x1="545" y1="89" x2="545" y2="65" stroke="#ec4899" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<!-- Wide foreshadowing area -->
<rect x="80" y="265" width="200" height="22" rx="4" fill="#DBEAFE" stroke="#3b82f6" stroke-width="0.5"/>
<text x="180" y="280" text-anchor="middle" font-size="10" fill="#1E40AF">伏笔链(6环) → 触点1</text>
<rect x="290" y="265" width="90" height="22" rx="4" fill="#DBEAFE" stroke="#3b82f6" stroke-width="0.5"/>
<text x="335" y="280" text-anchor="middle" font-size="10" fill="#1E40AF">铺垫 → 触点2</text>
<rect x="390" y="265" width="140" height="22" rx="4" fill="#DBEAFE" stroke="#3b82f6" stroke-width="0.5"/>
<text x="460" y="280" text-anchor="middle" font-size="10" fill="#1E40AF">临界区 → 触点3(闪回)</text>
<text x="282" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#2563eb">触点1 · 情感铺垫</text>
<text x="282" y="324" text-anchor="middle" font-size="10" fill="#64748b">~18s · "手有点老"</text>
<text x="387" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#d97706">触点2 · 情感表达</text>
<text x="387" y="324" text-anchor="middle" font-size="10" fill="#64748b">~35s · "每次都说"</text>
<text x="545" y="310" text-anchor="middle" font-size="11" font-weight="500" fill="#db2777">触点3 · 用户体感</text>
<text x="545" y="324" text-anchor="middle" font-size="10" fill="#64748b">~50s · "他们已经老了"</text>
<line x1="60" y1="345" x2="620" y2="345" stroke="#e2e8f0" stroke-width="0.5"/>
<text x="106" y="362" text-anchor="middle" font-size="10" fill="#64748b">0-3s 伏笔1·手颤抖</text>
<text x="106" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">3-10s 伏笔2·走路慢</text>
<text x="330" y="362" text-anchor="middle" font-size="10" fill="#64748b">伏笔3→4→5→6:递进加深</text>
<text x="330" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">伏笔区平坦后爆发</text>
<text x="563" y="362" text-anchor="middle" font-size="10" fill="#64748b">镜子引爆 + 握手收束</text>
<text x="563" y="375" text-anchor="middle" font-size="10" fill="#94a3b8">2秒闪回 + 五十年</text>
<rect x="60" y="395" width="560" height="32" rx="6" fill="#EFF6FF" stroke="#3b82f6" stroke-width="0.5"/>
<text x="340" y="415" text-anchor="middle" font-size="11" fill="#1E40AF">关键:6个伏笔层层递进 — 镜子是引爆器不是结尾画面,闪回后立刻回到女主握手</text>
</svg>
</div>
</div>
</div>
<div class="divider"></div>
<!-- ========== 第二部分:情绪改善Step拆解 ========== -->
<div class="section">
<div class="section-header">
<div>
<div class="section-title">第二部分 · 情绪改善Step拆解</div>
<div class="section-desc">每个脚本的Step 1-6完整拆解 + 编导意图解析 + 改善对比</div>
</div>
</div>
<!-- 通用六步流程 -->
<div class="toc-box">
<h4>六步框架搭建流程(通用)</h4>
<div class="method-bar">
<span class="method-tag kb">07/网感坐标 — Step 1 先定情绪终点</span>
<span class="method-tag kb">07/情绪递进设计 — Step 2 设计递进路径</span>
<span class="method-tag kb">07/情感铺垫设计 — Step 3 规划铺垫节点</span>
<span class="method-tag kb">04+05 — Step 4 搭建结构+钩子匹配</span>
<span class="method-tag kb">06+13 — Step 5 分配节奏+极致触点</span>
<span class="method-tag kb">12/编导意图解析 — Step 6 验证编导意图</span>
</div>
<p style="font-size:13px; color:var(--text-2); margin-top:8px;">
<strong>核心原则:</strong>先定情绪终点,再倒推结构和铺垫——不是"先搭结构再塞情绪",而是情绪决定结构。
</p>
</div>
<!-- ===== 脚本1 Step拆解 ===== -->
<div class="script-card" style="margin-top:24px;">
<div class="script-card-head">
<div class="script-badge s0">01</div>
<div>
<div class="script-title">《最后一单》· Step拆解</div>
<div class="script-meta">教学示例 · 外卖员父亲</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">1</span>确定情绪终点 <span class="kb-ref">07/网感坐标</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>目标体感:</strong>治愈感 + 共鸣感(不是大哭,是"看完想给爸爸打电话")<br>
<strong>网感坐标:</strong>温度感8 / 冲击力6 / 共鸣度9<br>
这一步定下整条视频的"北极星"——后面所有决策围绕这个终点做。
</p>
</div>
<div class="step-block">
<h3><span class="step-num">2</span>设计情绪递进路径 <span class="kb-ref">07/情绪递进设计</span></h3>
<div class="touchpoint-row tp1">
<div class="touchpoint-label">触点1 ~18s<br><span class="tag blue">情感铺垫</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>"今天必须跑到50单"<br>
<strong>观众内心:</strong>"原来他在拼命"——大脑层面的认同
</div>
</div>
<div class="touchpoint-row tp2">
<div class="touchpoint-label">触点2 ~35s<br><span class="tag yellow">情感表达</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>女儿电话"爸爸你什么时候回来"<br>
<strong>观众内心:</strong>"心疼"——心理层面的共情
</div>
</div>
<div class="touchpoint-row tp3">
<div class="touchpoint-label">触点3 ~53s<br><span class="tag pink">用户感受(体感)</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>礼物放枕边,人又出门送餐<br>
<strong>观众内心:</strong>"这就是父爱"——价值观层面的共振
</div>
</div>
<p style="font-size:12px; color:var(--text-2); margin-top:8px;">
<strong>递进缺口检查:</strong>铺垫→表达有缺口(需要女儿出场建立连接);表达→体感有缺口(需要"放礼物"行为完成升华)
</p>
</div>
<div class="step-block">
<h3><span class="step-num">3</span>规划情感铺垫节点 <span class="kb-ref">07/情感铺垫设计</span></h3>
<div class="buildup-item"><strong>为触点1铺垫(0-10s):</strong>手机屏幕"今日已接42单/目标50单"——数字说话,不点破辛苦</div>
<div class="buildup-item"><strong>为触点2铺垫(10-18s):</strong>等红灯看手机日历"囡囡生日"——不解释,观众自己拼图</div>
<div class="buildup-item"><strong>为触点3铺垫(25-35s):</strong>路过玩具店停一秒——留白,观众不知道要买什么</div>
<div class="buildup-item"><strong>情感债务机制:</strong>前面所有"辛苦"镜头=借债,触点3"礼物放枕边"=还债</div>
</div>
<div class="step-block">
<h3><span class="step-num">4</span>搭建结构+钩子匹配 <span class="kb-ref">04+05</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>用户前状态:</strong>观众刷到外卖员视频,预期又是"辛苦赚钱"套路<br>
<strong>钩子匹配:</strong>反预期——"今天最后一单,跑完就回家",制造"快结束了"的预期,后面每次转折都打破它
</p>
</div>
<div class="step-block">
<h3><span class="step-num">5</span>分配节奏+极致触点 <span class="kb-ref">06+13</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>转折点密度(06):</strong>3个转折对应3个触点:①42单→突然下雨 ②女儿电话→买礼物 ③放礼物→又出门<br>
<strong>感官性极致:</strong>雨中骑车特写,雨滴打头盔声音放大——超出预期的画面品质<br>
<strong>戏剧性极致:</strong>礼物安静放枕边 vs 门关上他又出门——打破预期的反差
</p>
</div>
<div class="step-block">
<h3><span class="step-num">6</span>验证编导意图 <span class="kb-ref">12/编导意图解析</span></h3>
<table class="scene-table" style="margin-top:8px;">
<thead><tr><th>编导原话</th><th>知识库解析</th><th>应该检查</th></tr></thead>
<tbody>
<tr><td>"太平了"</td><td>转折密度不足</td><td>3个转折是否到位?转折间是否有缓冲?</td></tr>
<tr><td>"不够爽"</td><td>释放层缺失</td><td>触点3情感债务是否偿还到位?</td></tr>
<tr><td>"加个场景"</td><td>叙事线索风险</td><td>新场景是否服务于某个触点?</td></tr>
<tr><td>"加事件"</td><td>层次误判</td><td>是缺事件还是缺层次?检查触点是否同层打转</td></tr>
</tbody>
</table>
</div>
</div>
<!-- ===== 脚本2 Step拆解 ===== -->
<div class="script-card">
<div class="script-card-head">
<div class="script-badge s1">02</div>
<div>
<div class="script-title">《全部》· Step拆解</div>
<div class="script-meta">案例1改善 · 事件堆砌→情绪递进</div>
</div>
</div>
<div class="problem-card">
<h4>原始AI输出问题</h4>
<ul>
<li>三轮迭代共生成16个事件,全部停留在"委屈+卖惨"同一层面</li>
<li>编导说"还是不够"AI就加更多——把"更深"理解为"更多"</li>
<li>每个事件独立罗列,缺少情绪递进逻辑</li>
<li>用旁白直述情绪,没有行为暗示</li>
<li>女生视角完全缺失,只有男生单线</li>
</ul>
</div>
<div class="intent-box">
<h5>Step 6 · 编导意图解析 <span class="kb-ref">12/编导意图解析规则</span></h5>
<div class="intent-row">
<div class="intent-cell">
<div class="label">编导原话</div>
<div class="value">"还是不够 爆发性事件"</div>
</div>
<div class="intent-cell">
<div class="label">字面理解(错误)</div>
<div class="value">增加事件数量,加大事件烈度</div>
</div>
<div class="intent-cell">
<div class="label">深层意图(正确)</div>
<div class="value">情绪曲线太平,所有事件在同一层面打转;需要情绪层次升阶——从"自我感动"→"窒息感"→"被刺穿的瞬间"</div>
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">1</span>确定情绪终点 <span class="kb-ref">07/网感坐标</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>目标体感:</strong>压迫感 + 满足感(不是"好感动",是"女生为什么沉默了"的后背发凉)<br>
<strong>网感坐标:</strong>温度感3 / 冲击力8 / 共鸣度9<br>
<strong>核心承诺:</strong>让观众看到一个"把全部给你"的人,和那个"承受不了全部"的人
</p>
</div>
<div class="step-block">
<h3><span class="step-num">2</span>设计情绪递进路径 <span class="kb-ref">07/情绪递进设计</span></h3>
<div class="touchpoint-row tp1">
<div class="touchpoint-label">触点1 ~18s<br><span class="tag blue">情感铺垫</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>男主把工资卡递给女生,"这个月全部,跟上次一样"<br>
<strong>观众内心:</strong>"他真的很用力在爱"——大脑层面的认同
</div>
</div>
<div class="touchpoint-row tp2">
<div class="touchpoint-label">触点2 ~35s<br><span class="tag yellow">情感表达</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>女生发现男主退掉了自己的胃药,钱拿去给她买了围巾<br>
<strong>观众内心:</strong>"不对劲……这不是感动,是窒息"——从认同转为不安<br>
<strong>递进缺口:</strong>需要"退药"暴露"自我牺牲已到伤害自己的程度",打破"付出=好事"的认知
</div>
</div>
<div class="touchpoint-row tp3">
<div class="touchpoint-label">触点3 ~53s<br><span class="tag pink">用户感受(体感)</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>女生把围巾包好放回男主枕边,纸条"我不想你用命换我开心",推门离开<br>
<strong>观众内心:</strong>"原来被这样爱着的人,逃了"——价值观层面的反转<br>
<strong>递进缺口:</strong>需要女生视角的"沉默"积累,观众必须在前面就隐隐感到她的不适
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">3</span>规划情感铺垫节点 <span class="kb-ref">07/情感铺垫设计</span></h3>
<div class="buildup-item"><strong>为触点1铺垫(0-10s):</strong>便利店挑两个饭团放回贵的、拿便宜的;转头给女生买奶茶。<strong>不点破</strong>——观众自己看到"他对自己省,对她不省"</div>
<div class="buildup-item"><strong>为触点2铺垫(10-18s):</strong>吃饭捂胃,"没事吃太快了"。桌上有未拆封的胃药包裹。<strong>留白</strong>——种子已埋下</div>
<div class="buildup-item"><strong>为触点3铺垫(25-35s):</strong>女生试围巾没笑,对着镜子看了很久。男主在旁边开心。<strong>行为暗示</strong>——她的沉默≠感动</div>
<div class="buildup-item"><strong>情感债务机制:</strong>前面所有"他对她好"=借债,触点3女生留纸条离开=还债——观众这才意识到"甜蜜"全是压力</div>
</div>
<div class="step-block">
<h3><span class="step-num">5</span>极致触点 <span class="kb-ref">13_极致事件</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>感官性极致:</strong>35-48s蒙太奇中"下雨只有一把伞全遮她"——男主半边肩膀湿透特写,雨声放大<br>
<strong>戏剧性极致:</strong>触点3——"全部给你"的人被"承受不了全部"的人离开。打破预期:观众以为写"感动到哭",实际写"窒息到逃"
</p>
</div>
<div class="compare-grid">
<div class="compare-card bad">
<h4>原始AI输出</h4>
<ul>
<li>16个事件平铺,无情绪递进</li>
<li>所有事件停留在"委屈+卖惨"同一层面</li>
<li>用旁白直述情绪("男主很难受")</li>
<li>编导说"不够"就加更多事件</li>
<li>没有铺垫设计,事件独立罗列</li>
<li>女生视角完全缺失</li>
</ul>
</div>
<div class="compare-card good">
<h4>改善后输出</h4>
<ul>
<li>3个触点 × 3个层次(铺垫→表达→体感)</li>
<li>事件服务于情绪递进,不堆砌</li>
<li>Show don't tell——捂胃、退药、看镜子</li>
<li>编导说"不够"→检查情绪曲线缺口</li>
<li>每个触点前有专属铺垫区</li>
<li>女生沉默视角做暗线,触点3引爆</li>
<li>情感债务:前期"甜蜜"=借债,离开=还债</li>
</ul>
</div>
</div>
</div>
<!-- ===== 脚本3 Step拆解 ===== -->
<div class="script-card">
<div class="script-card-head">
<div class="script-badge s2">03</div>
<div>
<div class="script-title">《看不见的室友》· Step拆解</div>
<div class="script-meta">案例2改善 · 缺少铺垫→情感铺垫设计</div>
</div>
</div>
<div class="problem-card">
<h4>原始AI输出问题</h4>
<ul>
<li>编导需求5个维度:①强设定 ②超现实噱头 ③观众引导 ④反转震撼 ⑤情感感动</li>
<li>AI只做了①②④,忽略③⑤("引导"变成"设定说明","情感"变成"设定烈度")</li>
<li>反转前没有让观众对角色"存入"情感,反转时无"债"可还</li>
<li>意象化过度,画面不可执行</li>
<li>反转后观众"了解了真相"但"没有被击中"</li>
</ul>
</div>
<div class="intent-box">
<h5>Step 6 · 编导意图解析 <span class="kb-ref">12/编导意图解析规则</span></h5>
<div class="intent-row">
<div class="intent-cell">
<div class="label">编导原话</div>
<div class="value">"强设定+超现实吸引观众+一直引导观众+反转震撼+情感类型"</div>
</div>
<div class="intent-cell">
<div class="label">AI误读</div>
<div class="value">5个维度简化为1个——只做"强设定+反转","引导"和"情感"被丢弃</div>
</div>
<div class="intent-cell">
<div class="label">深层意图</div>
<div class="value">"引导"=通过日常细节让观众产生好感/同情/好奇;"情感"=反转后观众应该哭/鼻酸,而非"哇好意外"</div>
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">1</span>确定情绪终点 <span class="kb-ref">07/网感坐标</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>目标体感:</strong>共鸣感 + 治愈感("原来他一直不孤单",先哭后笑)<br>
<strong>网感坐标:</strong>温度感8 / 冲击力7 / 共鸣度8<br>
<strong>核心设定:</strong>独居男主有个"看不见的室友"——帮他做饭、催他穿衣、留灯等他回家。观众以为是奇幻设定,反转揭示:室友是已去世的妈妈,所有"看不见的照顾"都是习惯的延续
</p>
</div>
<div class="step-block">
<h3><span class="step-num">2</span>设计情绪递进路径 <span class="kb-ref">07/情绪递进设计</span></h3>
<div class="touchpoint-row tp1">
<div class="touchpoint-label">触点1 ~18s<br><span class="tag blue">情感铺垫</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>回家,桌上有热面,喊"谢谢啊"没人回答<br>
<strong>观众内心:</strong>"他一个人住?谁做的面?有点奇怪但挺温馨"<br>
<strong>递进缺口:</strong>只建立"有人照顾他"的认知,不揭破
</div>
</div>
<div class="touchpoint-row tp2">
<div class="touchpoint-label">触点2 ~35s<br><span class="tag yellow">情感表达</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>鞋柜上多了一把伞+纸条"下次记得带",字迹歪歪扭扭<br>
<strong>观众内心:</strong>"这个室友很在意他……但为什么字迹像老人?"<br>
<strong>递进缺口:</strong>需要"字迹"触发观众对室友身份的猜测
</div>
</div>
<div class="touchpoint-row tp3">
<div class="touchpoint-label">触点3 ~53s<br><span class="tag pink">用户感受(体感)</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>柜子深处发现保温饭盒,标签"妈妈给囡囡"。1秒闪回:苍老的手切菜<br>
<strong>观众内心:</strong>"原来一直是妈妈……她不在了,但习惯还在"<br>
<strong>递进缺口:</strong>需要"饭盒标签"触发认知反转,配合1秒闪回完成情感兑现
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">3</span>规划情感铺垫节点 <span class="kb-ref">07/情感铺垫设计</span></h3>
<div class="buildup-item"><strong>为触点1铺垫(0-10s):</strong>鞋柜上有老花镜,他下意识推了一下位置。碗筷双人份,筷子朝外摆。<strong>不点破</strong>——老花镜不是他的</div>
<div class="buildup-item"><strong>为触点1铺垫(3-10s):</strong>筷子朝外摆=给别人摆的。只有一人吃饭但碗筷双人份。<strong>留白</strong></div>
<div class="buildup-item"><strong>为触点2铺垫(18-25s):</strong>门口多了一双老布鞋。他踢了踢让它们整齐。<strong>行为暗示</strong>——"不觉得奇怪"说明他习惯了</div>
<div class="buildup-item"><strong>为触点3铺垫(35-48s):</strong>沙发上睡着多了毛毯。醒来小声说"又给我盖"。<strong>情感债务累积</strong>——观众隐隐猜到但不确定</div>
<div class="buildup-item"><strong>情感债务机制:</strong>所有"看不见的照顾"=借债(好感+好奇+心酸)。饭盒标签揭示真相=还债,情感爆发</div>
</div>
<div class="flashback-block">
<h5>闪回手法设计 <span class="kb-ref">闪回手法库</span></h5>
<div class="flashback-chain">
<div class="flashback-node hint">老花镜<br><small>5s 铺垫</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">双人份碗筷<br><small>10s 铺垫</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">老布鞋<br><small>40s 铺垫</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">歪扭字迹<br><small>60s 铺垫</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node trigger">饭盒标签<br><small>100s 触发物</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node flashback">1秒闪回<br><small>苍老的手切菜</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node">回到现在<br><small>抱饭盒笑了</small></div>
</div>
<p style="font-size:12px; color:var(--text-2); margin-top:10px;">
<strong>闪回节奏:</strong>短闪快回(1秒)——不给观众时间"看回忆",只给一个画面闪过。观众大脑自动补全:那双手是谁?答案在前面4个铺垫里。
</p>
</div>
<div class="compare-grid">
<div class="compare-card bad">
<h4>原始AI输出</h4>
<ul>
<li>有强设定但铺垫=设定说明(旁白解释)</li>
<li>反转靠"设定烈度"(阿尔茨海默/ICU)</li>
<li>观众对角色没有情感投入,反转无感</li>
<li>5个需求维度只做了3个</li>
<li>意象化过度,画面不可执行</li>
<li>反转后"了解了真相"但"没有被击中"</li>
</ul>
</div>
<div class="compare-card good">
<h4>改善后输出</h4>
<ul>
<li>铺垫=行为细节(老花镜/碗筷/老布鞋)</li>
<li>反转靠"情感债务兑现"(饭盒标签串联)</li>
<li>观众在反转前已存入好感+好奇+心酸</li>
<li>5个维度全覆盖:引导=日常细节,情感=债务</li>
<li>画面全部可拍摄,零意象化</li>
<li>1秒闪回短闪快回,观众自己补全</li>
</ul>
</div>
</div>
</div>
<!-- ===== 脚本4 Step拆解 ===== -->
<div class="script-card">
<div class="script-card-head">
<div class="script-badge s3">04</div>
<div>
<div class="script-title">《五十年》· Step拆解</div>
<div class="script-meta">案例3改善 · 不会闪回→伏笔链+触发物</div>
</div>
</div>
<div class="problem-card">
<h4>原始AI输出问题</h4>
<ul>
<li>编导手把手教AI做暗示:走路慢、扶膝盖、广场舞……AI只是照做,细节之间无递进</li>
<li>"看镜子→看到老年自己"AI照做了,但前期暗示与结尾闪回缺少有机因果链</li>
<li>暗示是"散落的细节清单"而非"层层递进的闪回伏笔"</li>
<li>每个暗示独立罗列,不是相互关联、层层加深的伏笔链</li>
<li>闪回时机选择不当——不知道在哪个节点插入闪回最有冲击力</li>
</ul>
</div>
<div class="intent-box">
<h5>Step 6 · 编导意图解析 <span class="kb-ref">12/编导意图解析规则</span></h5>
<div class="intent-row">
<div class="intent-cell">
<div class="label">编导原话</div>
<div class="value">"前面年轻人形象+铺老年人暗示+结尾想起来+女主说'五十年了'+看镜子看到老年自己"</div>
</div>
<div class="intent-cell">
<div class="label">AI误读</div>
<div class="value">把暗示当"细节清单"逐条照做,闪回当"结尾要有的画面"</div>
</div>
<div class="intent-cell">
<div class="label">深层意图</div>
<div class="value">暗示必须构成"伏笔链"——每个比前一个更明显,观众从"没注意"→"好像有点"→"不对劲"→镜子闪回瞬间串联所有线索。闪回不是"加画面",是"引爆伏笔链"</div>
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">1</span>确定情绪终点 <span class="kb-ref">07/网感坐标</span></h3>
<p style="font-size:13px; color:var(--text-2);">
<strong>目标体感:</strong>压迫感 + 共鸣感 + 治愈感("原来他们已经走了一辈子",先惊后哭再笑)<br>
<strong>网感坐标:</strong>温度感9 / 冲击力8 / 共鸣度9<br>
<strong>核心设定:</strong>观众以为是一对年轻情侣的日常,反转揭示他们已是老年夫妻——男主阿尔茨海默,突然"想起来"眼前人是自己的妻子,她已经陪伴了五十年
</p>
</div>
<div class="step-block">
<h3><span class="step-num">2</span>设计情绪递进路径 <span class="kb-ref">07/情绪递进设计</span></h3>
<div class="touchpoint-row tp1">
<div class="touchpoint-label">触点1 ~18s<br><span class="tag blue">情感铺垫</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>男主帮女主系围裙,手微微颤抖。镜头扫过他的手——关节粗大,有老年斑<br>
<strong>观众内心:</strong>"等等,他的手……不对。但好熟练啊"——认知冲突开始
</div>
</div>
<div class="touchpoint-row tp2">
<div class="touchpoint-label">触点2 ~35s<br><span class="tag yellow">情感表达</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>女主在阳台跟广场舞轻轻晃,男主披外套说"又站这吹风",她回"你每次都说这句"<br>
<strong>观众内心:</strong>"每次都说这句"——不像年轻情侣说的,像老夫老妻。开始心酸<br>
<strong>递进缺口:</strong>需要"每次都说"暗示时间的厚度
</div>
</div>
<div class="touchpoint-row tp3">
<div class="touchpoint-label">触点3 ~53s<br><span class="tag pink">用户感受(体感)</span></div>
<div class="touchpoint-content">
<strong>触发事件:</strong>男主路过镜子,停住。镜中:白发、皱纹、苍老的脸。女主握住他的手:"傻瓜,我们都陪伴彼此五十年了"<br>
<strong>观众内心:</strong>"原来……他们已经老了。他忘了,她一直记得"<br>
<strong>递进缺口:</strong>需要镜子作为"触发物"瞬间串联前面所有暗示
</div>
</div>
</div>
<div class="step-block">
<h3><span class="step-num">3</span>伏笔链设计(关键改善点) <span class="kb-ref">07/情感铺垫设计 + 闪回手法库</span></h3>
<p style="font-size:13px; color:var(--text-2); margin-bottom:10px;">
<strong>原AI问题:</strong>暗示是散落的清单(走路慢✓ 扶膝盖✓ 广场舞✓),细节之间无递进<br>
<strong>改善后:</strong>暗示构成"递进伏笔链"——从"不会注意"→"隐隐不对"→"明显不对"→镜子引爆
</p>
<div class="buildup-item"><strong>伏笔1(0-3s)·隐层级:</strong>手关节粗大、有老年斑。<strong>观众反应:</strong>"手有点老"一闪而过,不深想</div>
<div class="buildup-item"><strong>伏笔2(3-10s)·隐层级:</strong>走路膝盖微弯、步子慢,男主自然放慢配合。<strong>观众反应:</strong>"走路好慢"解释为"散步节奏"</div>
<div class="buildup-item"><strong>伏笔3(10-18s)·微显层:</strong>看手机屏幕拿得很远——老花眼动作。<strong>观众反应:</strong>"他近视?"开始疑惑</div>
<div class="buildup-item"><strong>伏笔4(18-25s)·微显层:</strong>女主跟广场舞轻轻晃,动作幅度小但节奏感强——跳了很多年的肌肉记忆。<strong>观众反应:</strong>"年轻女孩不会跳广场舞吧"疑惑加深</div>
<div class="buildup-item"><strong>伏笔5(25-35s)·显层:</strong>男主说"又站这吹风",女主回"你每次都说这句"。<strong>观众反应:</strong>"每次"——时间厚度暴露,快猜到了</div>
<div class="buildup-item"><strong>伏笔6(35-48s)·临界层:</strong>翻到泛黄照片——年轻男女。看照片,看女主,没说话。<strong>观众反应:</strong>"那是他们年轻的时候……等等,他们现在不是年轻的样子吗?"——临界点</div>
<div class="buildup-item"><strong>情感债务机制:</strong>6个伏笔=借债(从"没注意"到"快猜到了"的累积)。镜子闪回=还债(一瞬间串联所有伏笔,真相引爆)</div>
</div>
<div class="flashback-block">
<h5>闪回伏笔链 <span class="kb-ref">闪回手法库</span></h5>
<div class="flashback-chain">
<div class="flashback-node hint">伏笔1<br><small>老年斑的手</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">伏笔2<br><small>走路慢/膝盖弯</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">伏笔3<br><small>手机拿远/老花</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">伏笔4<br><small>广场舞肌肉记忆</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">伏笔5<br><small>"每次都说"</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node hint">伏笔6<br><small>泛黄照片</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node trigger">镜子<br><small>触发物</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node flashback">闪回<br><small>苍老的脸</small></div>
<span class="flashback-arrow">&#8594;</span>
<div class="flashback-node">回到现在<br><small>女主握手</small></div>
</div>
<p style="font-size:12px; color:var(--text-2); margin-top:10px;">
<strong>触发物设计:</strong>镜子不是"突然出现在结尾"的道具,而是前面6个伏笔后的"引爆器"。观众潜意识已积累足够不对劲感,镜子一闪,所有线索瞬间串联——这才是闪回的冲击力来源。<br>
<strong>短闪快回:</strong>镜中画面只有2秒——白发、皱纹、苍老的脸。不给消化时间,闪回后立刻回到女主握手的现在时态。观众情绪在"闪回冲击"和"女主温柔"之间被撕裂,这才是鼻酸的来源。
</p>
</div>
<div class="compare-grid">
<div class="compare-card bad">
<h4>原始AI输出</h4>
<ul>
<li>暗示细节散落(走路慢✓ 扶膝盖✓ 广场舞✓)</li>
<li>细节之间无递进,是平铺清单</li>
<li>镜子闪回=结尾加了个画面,无因果链</li>
<li>闪回没有"触发物"设计</li>
<li>暗示和闪回之间没有"串联"关系</li>
<li>观众看到镜子时只是"哦"不是"啊!"</li>
</ul>
</div>
<div class="compare-card good">
<h4>改善后输出</h4>
<ul>
<li>6个伏笔构成递进链(隐→微显→显→临界)</li>
<li>每个伏笔比前一个更明显,层层加深</li>
<li>镜子=触发物,引爆全部伏笔链</li>
<li>短闪快回(2秒),不给消化时间</li>
<li>闪回后立刻回到女主握手的现在时态</li>
<li>观众情绪在"闪回冲击"和"女主温柔"间被撕裂</li>
<li>泛黄照片作为临界伏笔,为镜子做最后蓄力</li>
</ul>
</div>
</div>
</div>
</div>
<div class="divider"></div>
<!-- ========== 总结 ========== -->
<div class="section">
<div class="section-header">
<div>
<div class="section-title">总结</div>
<div class="section-desc">四脚本改善逻辑与知识库验证结论</div>
</div>
</div>
<div class="summary-box">
<h4>四脚本改善逻辑</h4>
<p><strong>《最后一单》(教学示例):</strong>完整演示六步流程——先定情绪终点(治愈感+共鸣感),再设计3个触点(铺垫→表达→体感),然后为每个触点规划铺垫区(数字说话/日历暗示/玩具店留白),情感债务机制让"辛苦"变"父爱"。</p>
<p><strong>《全部》(案例1·事件堆砌):</strong>从"16个事件平铺"→"3个触点×3层次"。07/情绪递进设计让AI理解"加事件"=检查情绪曲线缺口。女生沉默视角做暗线,情感债务让"甜蜜"变"窒息"。</p>
<p><strong>《看不见的室友》(案例2·缺少铺垫):</strong>从"设定说明式铺垫"→"行为细节式铺垫+情感债务"。07/情感铺垫设计让AI掌握 Show don't tell,6个行为细节让观众在反转前存入情感投资。</p>
<p><strong>《五十年》(案例3·不会闪回):</strong>从"散落暗示清单"→"递进伏笔链+触发物引爆"。闪回手法库让AI理解暗示必须层层递进(隐→微显→显→临界),镜子从"结尾画面"变为"引爆器"。</p>
</div>
<div class="summary-box">
<h4>知识库验证结论</h4>
<p><span class="tag green">已验证有效</span> <strong>07/情绪递进设计</strong>——解决"加事件代替加层次",3个触点取代16个事件</p>
<p><span class="tag green">已验证有效</span> <strong>07/情感铺垫设计</strong>——Show don't tell + 情感债务,让观众在反转前存入情感投资</p>
<p><span class="tag green">已验证有效</span> <strong>12/编导意图解析规则</strong>——"还是不够"≠"加更多",正确解析为"情绪曲线有缺口"</p>
<p><span class="tag green">已验证有效</span> <strong>闪回手法(伏笔链+触发物+短闪快回)</strong>——暗示从清单变为递进链,镜子从"结尾画面"变为"引爆器"</p>
</div>
<div class="summary-box">
<h4>关键发现:B1编导意图解析是A1/A2生效的前提</h4>
<p>四个脚本的改善都从 Step 6 编导意图解析开始——AI必须先正确理解编导意图,才能调用正确的知识库模块(情绪递进/情感铺垫/闪回手法)来生成改善内容。</p>
<p style="margin-top:8px;">这验证了之前的优先级决策:<strong>B1编导意图解析规则上调P0是正确的</strong>——它是A1情绪递进设计和A2情感铺垫设计生效的前提条件。</p>
</div>
</div>
<div class="footer">
<p>剧本大纲情绪改善案例 · 基于知识库V2.0优化模块</p>
<p style="margin-top:4px;">运用模块:07情绪共鸣(网感坐标/情绪递进/情感铺垫)· 12拆解评估(编导意图解析)· 13极致事件 · 闪回手法库</p>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
var sceneNames = [
['送餐路上','送餐路上','送餐路上','玩具店前','客人家','送餐路上','家中','家中'],
['餐桌','便利店','餐桌','家中','家中','多场景','卧室','便利店'],
['玄关','餐桌','餐桌','门口','门口','沙发','柜子','餐桌'],
['厨房','街上','客厅','阳台','客厅','客厅','镜前','客厅','客厅']
];
var tableIdx = 0;
document.querySelectorAll('.scene-table').forEach(function(table) {
// 1. Add "情绪和感受" column header
var headerRow = table.querySelector('thead tr');
if (headerRow) {
var th = document.createElement('th');
th.style.width = '190px';
th.textContent = '情绪和感受';
headerRow.appendChild(th);
}
// 2. Update ea-row colspan from 3 to 5 (时间+幕+场+场景内容+情绪和感受)
table.querySelectorAll('.ea-row td').forEach(function(td) {
td.setAttribute('colspan', '5');
});
// 3. Process each scene row: insert scene name + extract emotion summary
var rows = table.querySelectorAll('tbody tr');
var sceneNum = 0;
rows.forEach(function(row) {
if (row.classList.contains('ea-row')) return;
// Insert scene name cell after act-col
var actCell = row.querySelector('.act-col');
if (actCell) {
var names = sceneNames[tableIdx] || [];
var sceneName = sceneNum < names.length ? names[sceneNum] : (sceneNum + 1);
sceneNum++;
var sceneCell = document.createElement('td');
sceneCell.className = 'scene-num-col';
sceneCell.textContent = sceneName;
actCell.after(sceneCell);
}
var eaRow = row.nextElementSibling;
if (!eaRow || !eaRow.classList.contains('ea-row')) return;
// Extract data from ea-row
var padType = '', padDesc = '';
var feelWords = [], feelDesc = '';
eaRow.querySelectorAll('.ea-item').forEach(function(item) {
var label = item.querySelector('.ea-label');
if (!label) return;
if (label.classList.contains('pad')) {
var type = item.querySelector('.ea-type');
padType = type ? type.textContent : '';
var text = item.textContent;
if (type) text = text.replace(type.textContent, '');
text = text.replace(label.textContent, '').trim();
padDesc = text;
} else if (label.classList.contains('fee')) {
var feels = item.querySelectorAll('.ea-feel');
feels.forEach(function(f) { feelWords.push(f.textContent); });
var text = item.textContent;
feelWords.forEach(function(w) { text = text.replace(w, ''); });
text = text.replace(label.textContent, '').trim();
feelDesc = text;
}
});
// Build emotion cell
var cell = document.createElement('td');
cell.className = 'emo-col';
var html = '<div class="emo-tags">';
if (padType) html += '<span class="emo-pad-tag">' + padType + '</span>';
feelWords.forEach(function(w) {
html += '<span class="emo-feel-tag">' + w + '</span>';
});
html += '</div>';
if (feelDesc) html += '<div class="emo-desc">' + feelDesc + '</div>';
html += '<span class="ea-toggle">\u5C55\u5F00\u5206\u6790 \u25BE</span>';
cell.innerHTML = html;
row.appendChild(cell);
});
tableIdx++;
});
});
function toggleEA(btn) {
var row = btn.closest('tr');
var eaRow = row.nextElementSibling;
if (eaRow && eaRow.classList.contains('ea-row')) {
eaRow.classList.toggle('show');
btn.textContent = eaRow.classList.contains('show') ? '\u6536\u8D77\u5206\u6790 \u25B4' : '\u5C55\u5F00\u5206\u6790 \u25BE';
}
}
// Delegate click events for ea-toggle
document.addEventListener('click', function(e) {
if (e.target && e.target.classList && e.target.classList.contains('ea-toggle')) {
toggleEA(e.target);
}
});
</script>
</body>
</html>