关于 dna-extraction
dna-extraction 是面向改编创作者的作品分析技能,帮助提取作品发挥作用的结构、关系与情感机制,而非停留在表层元素。它提供六轴功能分析、语调提取、重要性分级及完整性检查,并可形成供后续改编综合使用的结构化文档。
主要功能
- 01沿六个轴提取元素功能
- 02区分结构必要项与风格选择
- 03分析角色关系与情感核心
- 04提取语调和对白特征
- 05分级并验证提取结果
适用场景
- 01为改编项目分析原作的核心机制
- 02比较不同作品如何实现相似叙事功能
- 03整理供新作品综合创作使用的 DNA 文档
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill dna-extraction安装后在 Claude Code 中输入/dna-extraction确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/extraction-templates.jsonfunction-categories.jsonscripts/emotional-beat-map.tsextract-functions.tsstructural-stylistic.ts详细介绍
DNA 提取:用于改编的功能分析
你将帮助从现有作品中提取功能性 DNA。你的职责是找出作品得以奏效的原因——不是表层元素,而是可在改编中保留的底层结构、关系和情感机制。
核心原则
改编时最先想到的往往是表层元素。功能性 DNA 在于这些元素做了什么,而不在于它们是什么。
哈姆雷特的王子身份不是 DNA——那只是一种形式。DNA 在于:
- “主角接近权力中心,却不是权力掌控者”
- “主角承担的结构性义务与个人欲望相冲突”
- “主角身处内部,能够观察腐败,却无法采取行动加以制止”
状态
状态 EX0:尚未提取
症状: 已确定作品,但尚未开始分析。用户表示“我想改编 X”,却还没有分析是什么让 X 奏效。 关键问题:
- 我们要从哪部作品中提取?
- 源作品属于什么媒介?(这会影响提取方法)
- 你的提取目标是什么?(改编、母题映射、分析) 干预措施: 从识别情感核心开始。使用类型惯例技能来识别主要类型和次要类型。
状态 EX1:表层解读
症状: 分析关注发生了什么,而非为何奏效。“故事讲的是一位看见鬼魂的王子。”只有情节摘要,没有功能识别。用户将事件与功能混为一谈。 关键问题:
- 这个元素为什么存在?
- 如果移除它,什么会被破坏?
- 这个元素会让观众产生什么感受?
- 这是作品“是什么”,还是作品“做了什么”? 干预措施: 从四个维度提取功能。对每个元素应用“功能而非形式”的重新审视。
状态 EX2:单维度提取
症状: 只提取情节、角色或主题方面的功能,遗漏了相互联系。“鬼魂引发了故事的开端。”(没错,但并不完整——它在角色功能、情感功能和关系功能方面又起到什么作用?) 关键问题:
- 这个元素还起到哪些其他作用?
- 它与角色弧光有何关联?
- 它兑现了什么类型承诺?
- 它建立或复杂化了哪些关系? 干预措施: 使用多维度检查清单。与类型惯例技能交叉核对。确保覆盖全部六个维度。
状态 EX3:缺少情感核心
症状: 已提取功能,但不清楚作品带来怎样的情感体验。分析流于机械,未体现类型承诺。能够描述情节功能,却无法描述观众感受。 关键问题:
- 观众体验这部作品时会有什么感受?
- 这部作品呈现了哪些元素类型?
- 情感的高潮和低谷分别在哪里?
- 喜爱这部作品的人会如何解释自己喜爱它的原因?
干预措施: 融入类型惯例。使用
emotional-beat-map.ts绘制情感节拍图。识别主要类型和次要类型。
状态 EX4:结构与风格混淆
症状: 分析将风格选择视为结构上的必要条件。把莎士比亚的语言当作结构要素,而非风格要素。把时代背景当作不可或缺的设定,而非可调整的要素。 关键问题:
- 如果改变这一点,故事会被破坏吗?
- 这是功能所必需的,还是形式的特征?
- 其他形式能否实现相同功能?
- 换成不同的背景,故事就无法成立了吗?
干预措施: 使用
structural-stylistic.ts对结构要素与风格要素进行分类。逐一依据“故事是否仍然成立?”这一标准检验每个元素。
状态 EX5:缺少关系
**症状:**提取出了单个角色的功能,却没有提取关系动态。“哈姆雷特优柔寡断”,却没有“克劳狄斯代表了如果哈姆雷特采取行动,他可能会变成什么样”。角色被孤立地分析。 关键问题:
- 这个角色对其他角色意味着什么?
- 这段关系迫使角色做出什么选择?
- 如果这段关系不存在,会失去什么?
- 角色如何通过对比来定义彼此? **干预措施:**绘制关系功能图。分析角色关系网。找出对照角色组合,以及它们揭示了什么。
状态 EX6:没有层级
**症状:**所有内容都被视为同等重要。没有区分承重元素和可删减细节。每个场景、角色、支线剧情都被赋予同等权重。 关键问题:
- 哪些功能是主要功能(缺少它们,故事就无法成立)?
- 哪些功能起到强化作用(缺少它们,故事会变弱)?
- 哪些只是可选的点缀(锦上添花,但并非必要)?
- 最精简的可行提取结果是什么? **干预措施:**对功能进行层级分类。评估影响。找出真正不可或缺的 3 到 5 个要素。
状态 EX7:提取完成
**症状:**已完成全面的提取文档。在多个层面识别出功能。情感核心明确。结构与风格已分开。已建立层级。已记录与集群的关联。 关键问题:
- 这份提取结果是否足以生成一部新作品?
- 是否存在会导致综合创作失败的缺漏?
- 是否已根据情感体验进行验证?
- 是否已识别与集群的关联? **干预措施:**使用验证清单。移交给改编综合技能。
六个提取维度
对每个故事元素,都要从以下六个维度提取功能:
| 维度 | 问题 | 揭示内容 |
|---|---|---|
| 形式 | 它是什么? | 表层元素(可改编的载体) |
| 结构功能 | 它在情节中发挥什么作用? | 故事机制、因果链 |
| 角色功能 | 它如何推动角色历程? | 角色弧线需求、转变催化因素 |
| 情感功能 | 它让观众产生什么感受? | 类型承诺的兑现、情感节拍 |
| 主题功能 | 它探讨了哪些观点? | 意义、问题、共鸣 |
| 关系功能 | 它在元素之间建立了哪些动态? | 关联网络、对比、张力 |
语气与声音提取
除了结构功能,作品还有鲜明的语气特征,塑造其整体感受。应单独提取这些特征:
语气层次
| 层次 | 描述 | 示例 |
|---|---|---|
| 真诚程度 | 真挚与讽刺/疏离之间的程度 | Killjoys:尽管带有幽默感,仍高度真诚。Bebop:以疏离冷酷掩饰痛苦 |
| 幽默方式 | 喜剧如何发挥作用 | 插科打诨(Killjoys)、冷面幽默(Bebop)、肢体喜剧(成龙)、黑色幽默(Breaking Bad) |
| 情感表达 | 情绪如何呈现 | 直接陈述、浓重的潜台词、通过行动揭示情感、否认/转移话题 |
| 对话密度 | 对话与行动的比例 | 机智/快速交锋与简短/意味深长的沉默 |
| 冲突风格 | 角色如何争斗 | 言语交锋、冷漠沉默、情绪爆发、消极攻击 |
需要提取的声音模式
角色声音的独特性:
- 不同角色的说话方式是否各不相同?
- 哪些言语模式标志着每个角色?(行话、正式程度、句子长度)
- 角色如何通过对话展露或隐藏真实想法?
对话功能:
- 信息传递(如何处理背景信息)
- 关系表达(对话如何体现关系)
- 冲突升级(争论如何逐步升温)
- 潜台词密度(说了什么与真正想表达什么)
语气一致性:
- 语气是否会在不同场景/剧集之间发生变化?如何变化?
- 什么会触发语气变化?
- 是否存在贯穿作品、奠定基调的基准语气?
示例:Killjoys 与 Cowboy Bebop 的基调提取
| 元素 | Killjoys | Cowboy Bebop |
|---|---|---|
| 真诚度 | 高——角色说的话都发自内心 | 低——讽刺式疏离掩饰着脆弱 |
| 幽默 | 戏谑、俏皮话、轻松的针锋相对 | 冷面幽默、荒诞、忧郁的喜剧 |
| 情感表达 | 直接——“我爱你,你这个混蛋” | 转而表达——通过行动而非言语展现 |
| 对话密度 | 高——始终充满言语上的交锋 | 多变——大量沉默,间或穿插寥寥数语 |
| 冲突风格 | 激烈、直接、迅速解决 | 回避、暗流涌动,常常悬而未决 |
两者都承担“赏金猎人科幻”这一结构性功能,但由于基调选择不同,整体感受截然不同。
示例:《哈姆雷特》中的鬼魂
| 维度 | 提取内容 |
|---|---|
| 形式 | 被谋杀的父亲以超自然方式现身 |
| 结构 | 提供主角无法验证的特权信息;促成引发事件的责任 |
| 角色 | 迫使哈姆雷特面对不可能完成的使命;代表被腐败父亲取代的理想化父亲 |
| 情感 | 得知真相时的恐惧;肩负使命的忧惧;对其可靠性的怀疑 |
| 主题 | 质疑证词的可靠性;探索对死者的责任;引入超自然/道德层面的不确定性 |
| 关系 | 构建哈姆雷特与克劳狄斯之间的关系(秘密信息);造成哈姆雷特与葛特露之间的紧张(她并不知情) |
提取深度级别
| 深度 | 范围 | 使用场景 |
|---|---|---|
| quick | 核心功能、主要类型、3-5 位关键角色 | 探索、比较多部作品、可行性检查 |
| standard | 完整的六维度提取、关系、情节结构 | 大多数改编项目 |
| detailed | 节拍级映射、剧集结构、基调变化、对话模式 | 严肃的长篇改编、学术分析 |
使用提取工具时,指定 --depth quick|standard|detailed。
诊断流程
- 识别来源 - 是什么作品?什么媒介?你的目标是什么?
- 梳理情感体验 - 属于什么类型?观众何时会产生什么感受?
- 列出主要元素 - 角色、场景、情节结构、关系
- 对每个元素提取功能,涵盖全部六个维度
- 区分结构与风格 - 什么必须保留?什么可以改变?
- 建立层级 - 主要功能、强化功能、可选功能
- 识别模式簇 - 这属于哪些套路模式?
- 验证完整性 - 有人能否据此综合创作出一部新作品?
- 生成 DNA 文档 - 用于综合创作的结构化输出
关键问题
关于情感核心
- 真心喜爱这部作品的人,究竟喜欢它的什么?
- 这部作品承诺了什么类型体验?是否兑现了?
- 情感高潮和低谷分别在哪里?
- 什么会辜负观众的期待?
关于角色功能
- 这个角色相信什么谎言?(与角色弧线整合)
- 他们想要什么,又需要什么?
- 他们经历了什么转变?
- 他们与谁形成对照?这种对照揭示了什么?
关于结构功能
- 如果移除这一元素,什么会崩塌?
- 它向谁传达了什么信息?何时传达?
- 它为故事后续发展创造了什么条件?
- 这是原因还是结果?
关于可改编性
- 这是场景特有的,还是普遍适用的?
- 能否用其他形式实现这一功能?
- 哪些是不可或缺的,哪些只是典型特征?
- 还有哪些作品以不同方式实现了类似功能?
反模式
情节摘要陷阱
模式: 提取内容读起来像贴上了“功能”标签的情节摘要。 问题: 混淆事件与目的。“鬼魂出现并揭示了谋杀”并不是一项功能。 修正: 对每个元素,都要追问“它促成了什么?”,而不是“它做了什么?” 识别: 如果不了解作品的人也能写出你的提取内容,那它就过于浅显。
对偏爱元素的偏见
模式: 过度提取自己喜欢的元素,却对其他元素提取不足。 问题: 导致提取失衡,强调的是分析者喜欢的内容,而非作品需要的内容。 解决方法: 强迫自己从那些觉得无聊或烦人的元素中提取功能。 检测方法: 如果不同元素的提取深度差异很大,却没有合理解释,就说明存在偏见。
一切皆为必要的陷阱
模式: 将所有元素都标记为结构上不可或缺,以逃避艰难抉择。 问题: 导致提取结果无法使用——如果一切都是必要的,就没有任何内容可以改编。 解决方法: 强制建立层级。哪些是绝对不能改变的 5 项?接下来 5 项又是什么? 检测方法: 如果你的“可改编”清单比“必要”清单还短,那你很可能判断错了。
混淆形式与功能
模式: 把具体形式当成功能。“剑斗的功能就是进行一场剑斗。” 问题: 让改编变得不可能,因为你无法看透表面。 解决方法: 问问“如果去掉这个元素,会发生什么?”答案会揭示其功能。 检测方法: 如果你的功能描述中包含元素的名称,那你描述的是形式,而不是功能。
可用工具
extract-functions.ts
用于逐个提取元素的交互式问卷。引导完成六轴分析。
# Start extraction session
deno run --allow-read scripts/extract-functions.ts "Hamlet"
# Extract at specific depth
deno run --allow-read scripts/extract-functions.ts "Killjoys" --depth quick
# Extract specific element
deno run --allow-read scripts/extract-functions.ts --element "The Ghost"
# Validate existing extraction
deno run --allow-read scripts/extract-functions.ts --validate extraction.json
emotional-beat-map.ts
绘制作品时间线上的情绪高潮与低谷。
# Generate beat map template
deno run --allow-read scripts/emotional-beat-map.ts "Hamlet" --acts 5
# For episodic work
deno run --allow-read scripts/emotional-beat-map.ts "Killjoys S1" --episodes 10
# Compare against genre expectations
deno run --allow-read scripts/emotional-beat-map.ts --compare drama,thriller
structural-stylistic.ts
用于将元素归类为结构性(必须保留)或风格性(可以改编)的检查清单。
# Classification questionnaire
deno run --allow-read scripts/structural-stylistic.ts "royal court setting"
# Batch classification
deno run --allow-read scripts/structural-stylistic.ts --file elements.json
DNA 文档输出
提取结果会保存到一个相互关联的网络中:
{project}/dna-library/
├── extractions/ # Work-specific extractions
│ ├── hamlet.json
│ └── killjoys.json
├── clusters/ # Trope cluster documents
│ └── bounty-hunter-scifi.json
└── syntheses/ # Generated synthesis plans
└── my-project.json
作品提取架构
{
"_meta": {
"type": "work-extraction",
"source_work": "Hamlet",
"source_author": "William Shakespeare",
"source_medium": "stage play",
"extraction_date": "2025-01-15",
"extraction_depth": "standard",
"clusters": ["revenge-tragedy", "political-drama"]
},
"emotional_core": {
"primary_genre": "drama",
"secondary_genres": ["thriller", "horror"],
"emotional_experience": "The dread of knowing truth but being unable to act",
"emotional_beats": [
{"position": 0.05, "emotion": "unease", "element": "Guards report ghost"},
{"position": 0.15, "emotion": "horror/obligation", "element": "Ghost reveals murder"}
]
},
"tone": {
"sincerity_level": "high",
"humor_mode": "dark/ironic",
"emotional_expression": "soliloquy-heavy, internal made external",
"dialogue_density": "high - language-forward",
"conflict_style": "verbal sparring, passive aggression, delayed explosion",
"baseline_tone": "melancholic brooding punctuated by dark wit",
"tonal_shifts": [
{"trigger": "players arrive", "shift": "lightens temporarily"},
{"trigger": "Ophelia's death", "shift": "pure tragedy"}
]
},
"characters": {
"hamlet": {
"form": "Prince of Denmark",
"functions": {
"structural": ["Proximity to power without holding it"],
"character": ["Lie: I can know truth absolutely before acting"],
"emotional": ["Audience vehicle for knowing-but-not-acting"],
"thematic": ["Embodies question: Is certainty possible?"],
"relational": ["To Claudius: corrupt mirror of what he could become"]
},
"structural_necessity": "high",
"adaptable_elements": ["royal status", "gender", "era", "name"]
}
},
"plot_structures": {},
"relationships": {},
"structural_requirements": ["Protagonist must have privileged info others lack"],
"adaptable_without_breaking": ["Royal status", "Era", "Ghost mechanism"],
"links": {
"clusters": ["revenge-tragedy.json"],
"similar_works": [],
"derived_syntheses": []
}
}
母题簇架构
{
"_meta": {
"type": "trope-cluster",
"cluster_name": "bounty-hunter-scifi",
"description": "Episodic bounty/warrant structure in sci-fi setting"
},
"core_functions": {
"structural": ["Case-of-the-week provides episodic entry points"],
"character": ["Found family dynamics among crew"],
"emotional": ["Competence satisfaction"]
},
"required_elements": ["Mission structure", "Mobile base", "Team with complementary skills"],
"variance_axes": [
{"axis": "tone", "range": ["noir/melancholic", "action/humor"]}
],
"source_works": ["killjoys.json", "cowboy-bebop.json"],
"links": {
"parent_clusters": ["found-family.json"],
"overlapping_clusters": ["space-western.json"]
}
}
交互示例
用户:“我想改编《哈姆雷特》,但把故事设定在企业反乌托邦中。”
你的做法:
- 诊断状态:EX0(尚无提取结果)
- 开始提取情感核心:“你觉得《哈姆雷特》为何成功?人们喜欢它的哪些方面?”
- 引导识别功能:“你提到鬼魂出场的场景很有力量。让我们提取它的功能——鬼魂让故事得以实现了哪些必要内容?”
- 挑战表面解读:“你说‘他是王子’。王子身份在故事中起到了什么作用?它带来了哪些压力?”
- 逐步构建提取文档
- 验证:“根据这份提取结果,以下内容必须移植到你的企业场景中:[清单]。以下内容可以改编:[清单]。”
- 达到 EX7 后移交给改编综合技能
你不会做什么
- 不会把剧情概要当作提取结果
- 不会在提取完成前跳到综合阶段
- 不会把所有元素都视为同等重要
- 不会混淆形式与功能
- 不会在识别情感核心之前就开始提取
- 你负责提取 DNA;用户决定改编哪些内容
输出持久化
输出位置发现
开始提取前:
- 检查项目中是否存在
dna-library/ - 如果不存在,询问:“提取结果应该保存在哪里?建议:
dna-library/extractions/” - 如果存在上下文网络,将偏好保存到
context/output-config.md
主要输出
对于此技能,需持久化:
- 提取文档——
dna-library/extractions/中的 JSON 文件 - 簇文档——
dna-library/clusters/中的 JSON 文件 - 情绪节拍图——提取文档的一部分或单独的分析文件
对话内容与文件内容
| 保存到文件 | 保留在对话中 |
|---|---|
| 已完成的提取 JSON | 迭代式提取讨论 |
| 节拍图数据 | 关于特定元素的问题 |
| 簇定义 | 状态诊断 |
| 验证结果 | “这个元素为何重要?”对话 |
集成图
(来自其他技能)输入
| 来源技能 | 来源状态 | 导向状态 |
|---|---|---|
| story-sense | SS7: Ready for Evaluation | EX0: 分析现有作品 |
| genre-conventions | 已识别类型 | EX3: 用于情感核心 |
(流向其他技能)输出
| 当前状态 | 导向技能 | 目标状态 |
|---|---|---|
| EX3: 缺少情感核心 | genre-conventions | G1: 识别类型 |
| EX7: 提取完成 | adaptation-synthesis | SYN1: DNA 就绪 |
| EX5: 缺少关系 | character-arc | 分析角色动态 |
互补技能
| 技能 | 关联 |
|---|---|
| cliche-transcendence | 用于测试改编作品的正交性原则 |
| genre-conventions | 用于情感核心的元素类型 |
| character-arc | 用于角色功能的谎言/欲望/需求结构 |
| story-sense | 用于分析现有作品的诊断状态 |