按人物检索并导入长篇小说《主角》(陈彦 著,茅盾文学奖)的相关章节,作为后续任务的背景资料。当用户提到《主角》里的人物——主角忆秦娥(本名易招弟、易青娥),或胡三元、胡彩香、米兰、廖耀辉、封潇潇、楚嘉禾、刘红兵、秦八娃、石怀玉、苟存忠/古存孝/周存仁/裘存义(存字辈老艺人)、单仰平、薛桂生、朱继儒、黄正大、宋雨、...
--- name: zhujue-characters description: 按人物检索并导入长篇小说《主角》(陈彦 著,茅盾文学奖)的相关章节,作为后续任务的背景资料。当用户提到《主角》里的人物——主角忆秦娥(本名易招弟、易青娥),或胡三元、胡彩香、米兰、廖耀辉、封潇潇、楚嘉禾、刘红兵、秦八娃、石怀玉、苟存忠/古存孝/周存仁/裘存义(存字辈老艺人)、单仰平、薛桂生、朱继儒、黄正大、宋雨、刘忆 等,并要求分析人物、梳理关系/情节、找原文、问答、写评论等——先用本 skill 把"包含这些人物的章节"定位并导入正文,再据此完成具体任务。同一人物有多个名字(如易招弟→易青娥→忆秦娥),本 skill 会自动归并。也可按戏曲剧目/角色(李慧娘、白娘子、胡九妹/狐仙劫 等)检索。 --- # 《主角》人物 → 章节 导入器 小说全文已**内置**于本 skill 的 `txt/` 目录(`part0000.html`~`part0151.html`,Calibre 导出),共 **151 章正文**:上部 55、中部 50、下部 45、后记,外加 `part0000.html` 目录页。skill 自包含、可整体迁移。本 skill 把"按人物找章节"做成查表 + 取文,**只导入相关章节**,避免整本塞进上下文。 ## 何时使用 / 不使用 - **使用**:用户提到《主角》中的具体人物,并要对人物/关系/情节做分析、问答、找原文、写作等——本 skill 负责**定位并导入背景章节**,导入后再完成用户真正的任务。 - **不使用**:用户只泛泛说"主角""男主"等普通词、与本小说无关;或用户已自行给出原文。注意"主角"是普通词,仅当语境指向陈彦这部小说(出现上述人名/书名)时才触发。 ## 数据与脚本 - `txt/` — **内置的小说全文**(151 章 HTML,脚本读取时自动去标签)。 - `data/characters.json` — 37 条人物/角色:规范名、别名(`aka`)、类别、简介、**出现章节列表**(已建好索引)。 - `data/chapters.json` — 每个 `partXXXX.html` → 部/章标签(如 `上部·二十四`)、字数。 - `scripts/query.py` — 运行时查询/导入工具(**主要入口**)。 - `scripts/build_index.py` — 一次性重建索引(人物表已人工校准;仅当文本变动或要增改人物时重跑)。 - `references/characters.md` — 人类可读的人物名册(含别名与简介),需要总览时读它。 ## 工作流(每次按需) **第 1 步 · 定位章节。** 从用户问题里提取人名(任意叫法皆可,别名会自动归并),调用: ``` python3 scripts/query.py 人物A 人物B ... ``` 输出会给出:解析到谁、并集/交集章节数、采用的集合及章节清单(带 `部·章` 标签和文件路径)。 **第 2 步 · 选对集合(交集 vs 并集)。** 按问题性质选: - 问**两人/多人之间**的关系、对手戏、互动、冲突 → **交集**(同时出现):`--all`(默认在交集非空时就用交集)。 - 问**任一人各自**的经历、或要尽量全的素材 → **并集**:`--any`。 - 单个人物 → 其全部出现章节。 - 想聚焦某阶段 → 加 `--part 上部|中部|下部|后记`。 **第 3 步 · 导入正文作背景。** 章节不多(≈≤15)时,直接生成干净正文再读入: ``` python3 scripts/query.py 人物A 人物B --part 中部 --text --out /tmp/zhujue_bg.txt ``` 然后用 Read 读 `/tmp/zhujue_bg.txt`(已去 HTML 标签、带章节分隔)。也可直接对清单里**少数关键章节**的 `partXXXX.html` 逐个 Read。 **第 4 步 · 基于导入的原文完成用户的真正任务**(分析/问答/找引文/写作等)。回答须依据导入正文,不臆造;正文未覆盖处如实说明,可建议扩大检索(换 `--any`、去掉 `--part`、或加共现人物)。 ## 护栏:集合过大怎么办 - **主角忆秦娥出现在全部 151 章**。绝不要因为问题涉及她就导入整本。务必收窄: - 与另一人物取**交集**(`忆秦娥 楚嘉禾 --all` → 只看二人对手戏章节); - 限定 `--part`; - 或只挑清单里最相关的几章读。 - query.py 命中超过 25 章会打印提醒。`--text` 默认最多导出 15 章(`--max N` 可调),先收窄优于硬调大。 ## 别名(同一人多名) 索引已归并常见别名,用户用任一名字都能命中,例如: - 忆秦娥 = 易招弟 = 招弟 = 易青娥 = 青娥 = 秦娥(**改名贯穿全书**:易招弟→易青娥→忆秦娥) - 楚嘉禾=嘉禾;苟存忠=老苟;古存孝=老古;薛桂生=薛团;石怀玉=怀玉;宋光祖=宋师;胡三元=三元 - **易辨混的两组(已分开,勿混)**:导演"封子/封导" ≠ 小生"封潇潇";省城名演员"李青娥" ≠ 主角"易青娥"。 - 不确定某名字指谁:`python3 scripts/query.py --resolve 名字`;看全部人物:`python3 scripts/query.py --list` 或读 `references/characters.md`。 ## 文本来源与重建索引 脚本读取顺序:环境变量 `ZHUJUE_TXT` > skill 自带 `txt/` > `/home/jjw/zj/txt`。默认即用自带 `txt/`,无需任何配置。 要增删/修正人物与别名时,编辑 `scripts/build_index.py` 里的 `CHARACTERS`,然后 ``` python3 scripts/build_index.py # 用自带 txt/ ZHUJUE_TXT=/path/to/other/txt python3 scripts/build_index.py # 指向别处的文本 ```
don't have the plugin yet? install it then click "run inline in claude" again.