豆瓣「看过」电影档案与精准个性化电影推荐
Overview
把豆瓣 App「看过」列表的长截图变成两样东西:
- 结构化档案 ——
电影档案.csv(逐条记录)+观影档案.html(单文件工作台:观影节奏、 评分体系、类型/地区/导演榜单、可搜索排序的完整档案表) - 一部精准的个性化推荐 —— 不是复述豆瓣榜单,而是按下面「四层依据」算出来的 「为什么是它 + 为什么是现在」
本技能的亮点:四层依据的精准推荐
多数推荐工具只做第 1–2 层(看过什么、喜欢什么类型),产出的是「哪部好」。 本技能的价值在于把第 3–4 层也叠进去,回答的是「当下这段时间,最适合你看的是哪部」。
| 层 | 依据 | 从哪来 | 回答的问题 |
|---|---|---|---|
| 1 | 观影习惯 | 档案(_stats.json) | 你的观影节奏、单次可投入时长、打分尺度有多严(我 vs 豆瓣的分差)、踩雷容忍度 |
| 2 | 稳定喜好 | 档案(_stats.json) | 哪种类型/导演/母题是真偏好(用「我给的均分」验证,而不是「看过多少」) |
| 3 | 用户画像 | 画像文件(Step 0) | 性格与价值观、尺度接受度(怕不怕惊吓/暴力)、观影场景(独自看还是一起看)、隐私边界 |
| 4 | 近况 | 画像的「当前/近期」章节 + 一次追问 | 现在这段时间的精力余量、作息健康、人生阶段、近期在关注什么——决定「为什么是现在」 |
四层的关系是逐层收窄:习惯与喜好决定候选池,画像做安全过滤,近况决定最终排序。 少任何一层,推荐都会退化成「影史佳片清单」。
输出标准:推荐的每条理由必须能指到具体数字或片名,并标注它来自哪一层 (习惯 / 喜好 / 画像 / 近况);缺第 4 层时必须先跟用户确认一次近况,不允许凭空假设。
贯穿全流程的铁律:识别必须逐片读取原尺寸图。禁止把长图压缩、拼接、缩放后再识别—— 文字模糊会制造出完全虚构的条目(历史教训:曾识别出「电竞车」「阈守关金」这类不存在的记录)。 准确率优先于速度,宁可慢一点。
何时使用
- 用户提供豆瓣「看过」的长截图(一张或多张),要转成数据 / 表格 / 看板
- 用户说「根据我看过的电影推荐一部」「推荐个片单」「我看什么好」
- 用户想分析自己的观影口味,或想对比自己与豆瓣的评分差异
- 已有
电影档案.csv/_data.json,要做增量更新、重建看板、再次推荐 - 用户说「讲透某部」「从我的片里挑一部深读」「讲讲某导演」「这两部对比」(Step 8)
- 用户问看完的片「在哪能看」「有没有正规的高清下载渠道」(见
references/legal_sources.md)
不适用:单部影片的信息查询(直接查即可);盗版播放资源与网盘链接(一律不给)——
正版渠道与老片获取路径见 references/legal_sources.md;非豆瓣来源的观影记录
(版式不同,需另建口径,可参考 references/douban_layout.md 的做法重新适配)。
Step 0 · 首次使用:画像技能检查(每个工作区只问一次)
本技能的第 3、4 层依据(画像 + 近况)都来自画像文件——这是「精准」与「能推」的分水岭。 先跑检测脚本:
python scripts/check_profile.py --json
按返回字段分四路处理:
| installed | profile_exists | asked_before | 动作 |
|---|---|---|---|
| false | — | false | 必须询问用户是否安装画像技能(话术见下);问完执行 check_profile.py --mark-asked |
| false | — | true | 用户此前已选择不装:不要再问,按「无画像流程」出推荐,交付时用一句话说明 |
| true | false | — | 建议先建档(画像访谈约 20-40 分钟),但不阻塞;用户不愿意就按无画像流程走 |
| true | true | — | 读取 profile_path 指向的画像文件;重点看「当前 / 近期 / 精力 / 健康 / 目标」这类章节(脚本会以 recent_sections 列出命中项),在推荐环节做约束过滤(见 references/recommendation.md) |
询问话术(自然一点,别像弹窗):
顺便问一句 —— 要不要先装一个「用户画像」技能?装了之后我不只知道你看过什么、喜欢什么类型, 还能把你现在的状态一起算进来:时间精力够不够、是一个人看还是陪人看、什么题材你会不适。 推荐会从「哪部好」变成「现在这个阶段最适合你的那部」。 地址是 https://skillhub.cn/skills/user_e285fd2e/user-profile-builder 不想装也完全没问题,那我就只按你的观影数据来推。
询问要点:
- 讲清价值差异(有画像 = 习惯/喜好/画像/近况四层齐备;无画像 = 只有前两层),而不是只说「装一个吧」
- 给出地址,让用户自己决定
- 尊重拒绝:用户说不用就立刻停止劝说,跑
--mark-asked记录,后续不再提 - 这一步只是推荐流程的前置,不要因为它阻塞建档:用户说「先别管,直接推荐」就继续
画像有时效性 —— 近况层必须新鲜
画像的「近况」是会过期的。脚本会给出 profile_mtime 与 profile_stale(超过 90 天为 stale):
profile_stale = true→ 出推荐前先用一句话问当前状态(如「最近这段时间忙不忙、有没有整块 时间看电影?」),把答案作为第 4 层依据;并在交付时提醒画像可更新- 画像里没有「近况类章节」→ 同上,直接追问,不要拿几个月前的处境硬套
无画像时的最低成本补救
用户不装画像技能,不等于放弃第 3-4 层。用 2-3 个问题把近况补齐即可(这是保证「精准」最廉价的方式):
推荐前想确认两件事:① 最近是有整块时间,还是只能碎片时间看?② 是自己看,还是要陪人一起看?
答案写进 analysis.json 的 rec_scope 与推荐理由里,但不要落进 HTML 交付物。
Step 1 · 切分长截图
python scripts/split_screenshots.py <截图目录> <工作区>/_parts
- 默认 2700px 高 / 步进 2400px(留 300px 重叠,防止记录正好被切在切口上导致两片都残缺)
- 输出
_parts/<原图名>/p00.jpg, p01.jpg, …;每个原图一个子目录,互不覆盖 - 该脚本与「记账收支分析」技能内的同名脚本同源。若本机已装该技能,优先调用它的那份
(
~/.workbuddy/skills/*/scripts/split_screenshots.py),本技能内的是独立分发用的兜底副本 - 补切个别原图用
--only 12,13;只想看清单用--list
截图顶部会显示 N部,最终记录数应当与它吻合——这是最有价值的总量校验。
Step 2 · 逐片识别(并行)
机制、子代理 prompt 模板、失败模式与 429 绕行全部写在 references/batch_ocr.md,动手前先读。
关键三条:
- 用多只子代理并行,每只只负责 2 张原图(
run_in_background: true),单只约 10 分钟。 不要用一只串行读完所有原图——会在完成前被会话中断,最终报告与进度全丢。 - 要求子代理每读完一张原图就覆盖式落盘一次 TSV,并告知该原图预期条数 (豆瓣「看过」单张长截图通常恰好 20 条)用于自检漏读。
- 每条严格照截图原文,不猜测不补全;看不清的字用
?;只记完整可见的条目。 - 每行必须写满 12 列(片名…主演、来源图片、备注),字段为空也要保留制表符占位。 省略空列会让该行整体左移、其后各列全部错位——典型症状是「主演」变成数字 (那其实是来源图片的值)。这类错位不改条数、不产生重复、片名也全对,是 最难察觉的静默污染,只能靠 Step 3 的列错位检测抓出来。
字段口径(片名/年份/豆瓣评分/我的评价/我的星级/看过日期/地区/类型/导演/主演/来源图片/备注)
见 references/douban_layout.md。
Step 3 · 合并、去重、校验
先只校验,确认无异常再落盘:
python scripts/build_archive.py --parts <工作区>/_parts_out --out-dir <工作区> \
--expect-per-image 20 --self-check-only
python scripts/build_archive.py --parts <工作区>/_parts_out --out-dir <工作区> \
--expect-per-image 20
产出 电影档案.csv(UTF-8 BOM,Excel 可直接打开)与 _data.json。
脚本会报五类异常,前三类必须回看原图,不要用规则自动改:
-
某张原图条数不等于预期 → 漏读(末张截图天然不足,属正常)
-
评价文字与星级不一致 → 识别错误(历史实战靠这条抓出某片星级被误读)
-
带年份条目之后又出现无年份条目 → 年份推断存疑
-
缺豆瓣评分 / 缺年份 / 日期解析失败 → 可能是截图本身没加载(不是识别错误)
-
列错位(
主演列是数字)→ 识别产出省略了空列占位。确认后加--fix-columns由脚本归位(不改动 TSV 原文件,保留可追溯性):python scripts/build_archive.py --parts <工作区>/_parts_out --out-dir <工作区> \ --expect-per-image 20 --self-check-only --fix-columns
Step 4 · 统计
python scripts/analyze.py --data <工作区>/_data.json
产出 _stats.json 并在终端打印摘要(均分对比、星级分布、类型/地区/导演榜、悬疑系浓度、
我比豆瓣更爱/更冷的片等)。这些数字就是 Step 5 与推荐的依据。
Step 5 · 撰写判断类文案 analysis.json
脚本只做可计算的部分;需要判断力的文字由本步骤撰写,写入 analysis.json 交给渲染器:
{
"flavor_tags": ["结构反转型悬疑控", "苛刻型打分者"],
"flavor_note": "悬疑系占比 33% · 我的均分 3.6/5 比选片豆瓣均分 7.8/10 低 0.6 分(已统一折算)",
"insights": {
"year": "观影量在 <b>2021 年 37 部</b> 达到峰值,此后逐年回落…",
"score": "你是典型的<b>苛刻型打分者</b>:均分 <b>3.6/5</b>(折合 7.2/10),而选片豆瓣均分是 <b>7.8/10</b>…",
"genre": "类型上「剧情」绝对领先,真正的信号在第二梯队…",
"region": "地区分布高度集中:美国、中国大陆、英国…",
"five": "五星片的构成很集中:结构反转系、人性暗面系…"
},
"provenance": "9 张豆瓣「看过」长截图被切成 63 个原始尺寸切片,逐片读取,共提取 <b>128 条</b>…",
"provenance_note": "识别存疑仅 1 处:《某片》在原截图中海报未加载,字段留空(非识别错误)。",
"shot_count": 9,
"profile_used": true,
"rec_scope": "观影习惯 · 类型偏好 · 用户画像 · 近况",
"recommendation": {
"title": "示例片名", "badge": "首选",
"subtitle": "原名 · 2010 · 加拿大 / 法国 · 剧情 悬疑 战争 · 131 分钟",
"director": "导演姓名", "cast": "主演姓名",
"douban": 8.6,
"why_now": "为什么是现在:你近半年的观影量只有高峰期的 1/5,能用的整块时间变少了。",
"reasons": [
{"src": "喜好", "h": "你在追反转结构。", "b": "你的五星片里…(具体片名与数字)"},
{"src": "习惯", "h": "某类型是你唯一高于自身平均的类型。", "b": "…"},
{"src": "近况", "h": "时长刚好卡在你现在的耐受区。", "b": "…"}
],
"alternatives": ["备选片(2003)· 导演 · 豆瓣 8.3 —— 一句话为什么"],
"basis": "基于 128 部观影史 × 习惯 / 喜好 / 画像 / 近况四层依据"
},
"footer": "识别口径:严格照截图原文 | 生成于 2026-09-11"
}
写作要求:
insights每条必须有具体数字(部数、均分、占比、片名),空泛的「很经典」「品味不错」等于没写- 两个评分必须带量纲,否则一定被误读:
我的评分是你在豆瓣打的星级(满分 5),豆瓣评分是该影片的公众评分(满分 10)——两者不是同一把尺子。凡是出现均分的文案 (KPI 卡、flavor_note、insights.score/insights.genre)一律写成3.6/5、7.8/10这类带单位的形式;跨尺度比较时先折算到同一量纲再相减。反面案例:曾写成「豆瓣均分 8.54」 且不带单位,紧挨着「我的均分 3.87」,读者会默认同一把尺子,直接质疑「满分才 5,怎么会有 8.54」。 模板已在 KPI 卡与 02 区固定了/5、/10与口径说明,撰写文案时保持同一口径即可 reasons至少 3 条、类型多样,且每条都带src标注依据层级(习惯/喜好/画像/近况)why_now是近况层的落点,必须写;没有画像时也要基于「观影节奏变化」或用户答的近况写。 不要以「为什么是现在:」开头——渲染器已经在它前面输出金色标签「为什么是现在」, 自带前缀会出现重复。从内容直接写起。profile_used/rec_scope决定 HTML 里推荐区的口径文案——用了画像才写 true,不要虚标provenance_note放「识别存疑/口径例外」(如某片截图本身未加载海报导致字段留空); 没有就省略,渲染器会自动跳过
渲染效果对照:why_now → 推荐卡片顶部的金色强调块;reasons[].src → 每条理由前的
彩色层级标签(习惯/喜好/画像/近况四色);basis → 卡片底部虚线依据行。
详见 references/recommendation.md 的四层依据框架。
Step 6 · 渲染 HTML 档案
python scripts/build_html.py --data <工作区>/_data.json --stats <工作区>/_stats.json \
--analysis <工作区>/analysis.json --out <工作区>/观影档案.html \
--title 观影档案 --source-note "豆瓣 App「看过」列表截图 ×9"
--analysis可省略:缺失文案由脚本按统计事实兜底(但推荐区会显示「待补充」)- 视觉是浅色金融仪表盘风格(品牌蓝 + 金色点缀,图表走 Chart.js CDN)——这是用户既有 HTML 报告的既定风格,不要改成深色大屏
- 渲染后脚本会提示是否有未替换的占位符,有就说明模板与数据对不上
Step 7 · 推荐与交付
方法论(四层依据、候选核对脚本、画像与近况的整合、剧透预警、常见错误)见
references/recommendation.md。出推荐前逐个打勾:
- 候选必须不在已看列表 —— 跑脚本核对,不要凭记忆
- 四层依据逐层过一遍:习惯(时长/节奏/打分尺度)→ 喜好(用均分验证的偏好)→ 画像(尺度与场景边界)→ 近况(当前精力与处境)。至少覆盖前两层 + 后两层之一
- 至少 3 条理由、类型多样,每条标注
src层级;给 2-3 部同源备选 - 必写
why_now(为什么是现在)—— 这是本技能区别于榜单的决定性一句 - 若影片价值依赖反转 / 结尾揭示,必须提醒「别提前查剧情」
- 近况层若来自旧画像或用户口述,交付时说明它是哪来的,不要伪装成长期结论
交付时用 present_files 展示 HTML 与 CSV,并在回复里说明:
- 总条数与截图顶部
N部是否吻合 - 有几处存疑、是什么、如何处理
- 推荐片名 + 核心理由(一句话)+ 为什么是现在(一句话)
- 这次用了哪几层依据:明确说出画像是用了还是没用;用了就点明它影响了哪条理由; 没用就说清是「用户选择不装」还是「画像已过期」,以及如何补的近况
隐私:推荐理由里可以点出画像依据(如「你最近精力偏紧,这部 106 分钟适合一次看完」), 但不要复述画像里的私人细节,也不要写进 HTML 交付物。
片源问题(用户问「这部在哪能看 / 有没有能下载高清电影的站」)见
references/legal_sources.md:只给正版渠道与获取路径、不给盗版站与网盘链接,
并按档案里的年代 + 地区判断该片最可能走得通哪条路。
Step 8 · 深度解读(先判形态,再动笔)
用户说「讲透某部」「从我的片里挑一部讲透」「讲讲某导演」「这两部对比」「我的五星有什么共性」
时进入本步。完整规格见 references/deep_dive_spec.md——动手前先读,别凭印象写。
五种形态(章节调整与命名规则见规格第二节):
| 形态 | 触发 | 交付文件名 |
|---|---|---|
| A 单片深读 | 「讲透《X》」 | <片名>_深度解读_YYYYMMDD.md |
| B 导演专题 | 「讲讲 XX 导演 / 补片顺序」 | <导演名>_导演专题_YYYYMMDD.md |
| C 双片对照 | 「这两部对比」 | <片A>vs<片B>_对照解读_YYYYMMDD.md |
| D 主题片单 | 「我的五星有什么共性」 | <主题>_主题片单_YYYYMMDD.md |
| E 系列解读 | 「XX 三部曲」 | <系列名>_系列解读_YYYYMMDD.md |
三条硬规则:
-
用户没指定片名时,先问再写——跑
--suggest拿候选,挑 3 部(附「为什么值得讲」), 用AskUserQuestion让用户确认。禁止自己直接挑一部开写。候选池里可能混有剧集, 输出前核实是电影还是剧集(剧集不适用本规格)。 -
取数一律走脚本,不要临时手写 Python:
# 单片素材包:该片记录 + 导演命中率 + 类型均分 + 同族影片 + 观影节奏 python scripts/deep_dive_context.py --data <工作区>/_data.json \ --title "片名" --workspace <工作区> # 核对候补是否已看(第 17 节延伸片单、推荐候选,禁止凭记忆) python scripts/deep_dive_context.py --data <工作区>/_data.json --check "片A,片B" # 挑片候选(配合规则 1) python scripts/deep_dive_context.py --data <工作区>/_data.json \ --suggest 5 --workspace <工作区>导演样本 < 2 部时脚本不给命中率——你也不能给(样本量为 1 的命中率不是结论, 措辞要降级为「只看过 1 部,属探索位」)。
-
交付物是
.md,禁用裸 HTML(<a id>锚点 / 表格里<br>/<b>)—— 用户端预览器不执行 HTML,会把这些标签当文字显示出来。写完跑规格第七节的两条自查命令。
必含内容(缺一不可):主创信息(导演 + 主演 + 幕后)、数据视角、 可靠度四档、原文金句 ≥2 处且不编造、反方视角 ≥1 条真批评、观后行动清单三条 (重看什么 / 延伸哪几部及顺序 / 自己查证什么)。
使用闭环(本技能真实的用法节奏)
这个技能不是「跑一次就结束」的流水线,用户会反复回来:
- 建档(Step 1-6):截图 →
电影档案.csv+观影档案.html - 推荐(Step 7):四层依据 → 「为什么是它 + 为什么是现在」
- 看完回填(见常见问题「补录单部非截图来源影片」):补录 TSV → 重跑 Step 3-6, 档案自然长大,统计随之变化
- 深度解读(Step 8):把刚看的那部、或他点名的某部讲透
- 再推荐:回到 Step 7,此时依据比上一轮更多(星级多了 1 条、近况也更新了)
主动引导的分寸:深读交付后可以问一句「要不要接着推荐下一部」——刚看完一部时 是他兴头最高、也最可能真去看的时点;用户回填新片后,可顺带说一句统计变化(如某类型 均分的移动)。但不要每次都问,价值不明显时保持安静。
Resources
scripts/
split_screenshots.py— 长截图切分(自然排序、JPEG 4:4:4、PNG 保无损、尾部碎片不丢、覆盖校验)。与「记账收支分析」技能同源build_archive.py— 识别 TSV →电影档案.csv+_data.json,含年份推断 / 去重 / 五类校验(条数、星级一致性、缺字段、重复、列错位检测 +--fix-columns归位)analyze.py—_data.json→_stats.json观影画像统计build_html.py— 数据 + 统计 + 文案 → 单文件 HTML 工作台;推荐区渲染why_now、理由的src层级标签与basis依据行,并按profile_used自动切换口径文案check_profile.py— 检测画像技能是否安装、画像是否存在,并列出画像里的近况类章节 (profile_sections/recent_sections)与时效性(profile_stale,>90 天为 stale)(Step 0)deep_dive_context.py— 深读素材生成器(Step 8):① 单片素材包(记录 / 导演命中率与排名 / 类型与地区均分 / 星级分布 / 同族影片 / 观影节奏)②--check候选核对 ③--suggest挑片候选 ④--json结构化输出。纯标准库,无第三方依赖
references/
douban_layout.md— 豆瓣「看过」长截图的版式、字段口径、干扰项、年份推断、完整性校验batch_ocr.md— 大批量截图的并行识别流程(子代理 prompt 模板、失败模式、429 绕行)recommendation.md— 推荐方法论:四层依据框架(习惯 / 喜好 / 画像 / 近况)、 「为什么是现在」的写法、候选核对、剧透预警、常见错误deep_dive_spec.md— 深度解读规格:五种形态(单片 / 导演专题 / 双片对照 / 主题片单 / 系列)的章节调整与命名规则、「先问再写」的挑片流程、18 节模板、事实核实纪律与可靠度四档、 写作三件套(金句 / 反方视角 / 观后行动清单)、Markdown 硬规则、脚本用法、交付前清单(Step 8)legal_sources.md— 正版观看与片源获取:平台离线缓存 / 拥有文件(碟、公有领域库)/ 线下修复重映三类路径、按「年代 + 地区」判断某片走哪条路、法律边界与答复结构(被问到时用)
assets/
workspace_template.html— HTML 工作台模板(含 Chart.js 与全部交互逻辑,占位符__XXX__)
常见问题
- 识别出错:定位到具体条目,回看原图确认后改 TSV,重跑
build_archive.py+build_html.py - 截图多 / 图很长:不要试图一次读完;先切分,再按
references/batch_ocr.md并行分派 - 用户只想推荐、不想做档案:Step 1-4 仍需执行(推荐必须基于档案数据);可省略 HTML, 但要说清推荐依据来自哪些统计
- 用户追加了截图:新截图切分识别后放进同一个
_parts_out,重跑 Step 3 即可 (按 片名+年份+看过日期 去重,重复条目自动合并) - 补录单部「非截图来源」的影片(最常见:用户看完了上一轮推荐的片,要回填档案):
在
_parts_out/下新建一个补录 TSV(如m00_manual.tsv,带表头、12 列写满),来源图片列写非数字标记(如补录),然后照常重跑 Step 3→4→5→6。 不要手改_data.json/电影档案.csv——它们是脚本产物,手改会在下次重跑时被覆盖。 两个注意点:① 该标记会被--expect-per-image判为「条数异常」,补录重跑时不要带这个参数 (或忽略那一条告警);②provenance要写明「N 条识别 + M 条补录」,否则总量校验对不上。 - 图表不显示:Chart.js 走 CDN,需联网;离线场景可替换为内联 SVG
- 深读对象是剧集/综艺:18 节规格是为单部电影设计的。剧集/综艺不做完整深读—— 改用「形态 D 主题片单」的轻量写法,或直接说明规格不适用;不要硬套 18 节
- 用户想「讲透」一部没看过的片:深读依赖档案里的星级与看过日期,没看过的片写不了 数据视角,也就失去本技能的核心增量。改为做「映前预览」(主创 + 背景 + 看点), 并在文首说明这不是看后深读
- 用户只想要一张结构图/时间线:本技能的深读交付物是
.md文档,不含内联可视化。 需要图就走对话内的图表渲染,不要为了配图把 HTML 塞进 md(预览器不执行)
变更记录
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0.5 | 2026-09-15 | 补齐使用闭环与两处长期缺口:① 新增「使用闭环」小节——建档 → 推荐 → 看完回填 → 深读 → 再推荐,并规定主动引导的分寸(深读交付后可问一句要不要接着推荐,但不要每次都问);② 新增 references/legal_sources.md——正版观看与片源获取(平台离线缓存 / 碟与公有领域库 / 线下修复重映三类路径、按「年代 + 地区」判断走哪条路、法律边界、答复结构),并在「何时使用」「不适用」「Step 7」三处接上;③ 深读规格补上用户已明确的选择:交付物是纯文本 md,不配内联 SVG/图表 |
| 1.0.4 | 2026-09-14 | 强化「深度解读」能力:① 新增 scripts/deep_dive_context.py——单片素材包(导演命中率/类型均分/同族影片/观影节奏)、--check 候选核对、--suggest 挑片候选、--json,免去每次临时手写取数脚本;② 深读扩展为五种形态(单片 / 导演专题 / 双片对照 / 主题片单 / 系列)并规定交付文件名;③ 挑片改为先给候选再动笔(强制 AskUserQuestion,禁止自行开写);④ 新增写作三件套(原文金句 ≥2 处且不编造 / 反方视角 ≥1 条真批评 / 观后行动清单三条)与「导演样本 < 2 部不给命中率」纪律;⑤ 补上 1.0.3 遗漏的 Step 8 正文——1.0.3 只写了变更记录与资源引用,正文 Step 8 实际缺失 |
| 1.0.3 | 2026-09-14 | 新增 Step 8 · 单部影片深度解读 与 references/deep_dive_spec.md(18 节模板、导演/演员节、数据视角节、可靠度四档、挑片规则、预览器不执行裸 HTML 的 Markdown 硬规则与自查命令) |
| 1.0.2 | 2026-09-14 | 补充「补录单部非截图来源影片」的做法(补录 TSV + 来源图片 写非数字标记 + 重跑 Step 3-6,不手改脚本产物)与 --expect-per-image 的冲突提醒;why_now 增加「不要自带『为什么是现在:』前缀」的写作要求 |
| 1.0.1 | 2026-09-12 | 修复评分量纲口径:KPI 卡与所有文案统一带单位(/5、/10),02 区新增「口径说明」;build_html.py 兜底文案同步带单位,__DSAVG__ 缺失时显示 —;references/douban_layout.md 补充「两把尺子不要混」说明 |
| 1.0.0 | 2026-09-12 | 初版:长截图切分 → 逐片识别 → 档案 CSV + HTML 工作台;按「四层依据」(习惯 / 喜好 / 画像 / 近况)出推荐 |
微信扫一扫