中药学科普文章写作 Skill
定位(AI 必读)
本 skill 是 AI 的工作手册,把"CNKI 题录/摘要文件 → 一篇可发表的中药学科普文章(Word 文档)"这条链路固化下来。
- 用户:提供 CNKI 导出的题录/摘要文件(常见为
.doc/.txt/.docx),给一个写作角度或主题方向,不写文章 - AI:读本 skill + 文件 → 读取题录 → 设计文章结构 → 撰写正文 → 著录参考文献 → 生成排版规范的 docx
- 目标:用户拿到一份 1000 字左右、引用规范、排版就绪、可直接投稿或发布的 Word 文档
触发场景
- 用户提供 CNKI 检索/导出文件,要求写中药学科普文章
- 用户要求把一批中药学文献题录整理成科普稿件
- 用户要求基于指定文献(不自行补充)撰写中药学科普文,正文用数字角标引用、文末温哥华格式
输入与输出契约
输入:
- 一份 CNKI 导出文件(路径由用户提供)
- 可选:写作主题/角度、字数要求、特殊强调点
输出:
- 一份 Word 文档(.docx),含标题、正文(约 1000 字)、参考文献三部分
- 正文 1000 字左右(含标点),文字简明易懂、言之有物、引人入胜
- 正文引用处用 [阿拉伯数字] 标注,序号与文末列表一一对应
- 参考文献按引用次序(非题录原顺序)用温哥华格式列出
- 铁律:全部文献必须来源于用户提供的文件,不得自行补充任何文献
核心流程
Step 1:读取 CNKI 题录/摘要文件(含踩坑避险)
CNKI 导出文件有多个坑,按文件实际格式选读取方式:
坑 1(最常见):CNKI 导出的 .doc 实为 UTF-8 纯文本,扩展名伪装。
- 判别:file <路径> 若返回 "Unicode text, UTF-8 text" 即为文本
- 读取:直接用 Bash cat 或 Read 工具读取全文,不要当二进制 doc 处理
- 反例:Word COM SaveAs 转 txt 会丢字(编码对话框默认值非 UTF-8),输出比原文件短
坑 2:tencent-local-office-edit 的 editor_sdk 异步流式打开不可靠。
- open_file 返回 "open started... chunks streaming",但随后 doc_get_content_region 报 "document is not open"
- doc_to_image 走 COS 上传转换,常超时/断连
- 结论:对 CNKI 这类小文本文件,不要走 editor_sdk;直接读文本
坑 3:题录文件可能没有摘要正文。
- CNKI 导出时若未勾选"摘要"字段,文件只有题名/作者/单位/来源
- 读取后先盘点字段,向用户如实说明缺失字段,再决定写作策略
- 即便只有题名,题名本身已提供足够信息支撑一篇科普文
字段识别:CNKI 题录典型字段——SrcDatabase-来源库、Title-题名、Author-作者、Organ-单位、Source-文献来源、Keyword-关键词、Summary-摘要、PubTime-发表时间、Ref-参考文献。
Step 2:题录解析与文献盘点
- 逐条解析,提取:题名、作者(含单位作者)、单位、来源(刊名)、摘要(若有)、年/卷/期/页(若有)
- 统计总篇数,记录每篇缺失的字段
- 向用户简报:共 N 篇文献、含/不含摘要、含/不含年卷期页
- 缺失字段处理:写作时不引用文件中不存在的信息;参考文献著录时缺失字段依规省略(见 references/vancouver_format.md)
Step 3:文章结构设计(六段递进范式)
采用"双面/辩证"叙事,避免单向罗列。推荐六段结构(可按主题调整段名):
- 引言:用一句通俗化解读破题(如"听起来像是吃蚕豆吃出来的病"),点出主题与本文核心张力(中药是双面刃/既是禁忌又是救治)
- 机制/背景:讲清疾病或药物的底层机制,引出第一篇机制类文献
- 风险/禁忌面:呈现"不友好"的一面,引禁忌/风险类文献
- 治疗/实践面:呈现"友好"或救治的一面,引治疗/临床观察类文献
- 用药安全启示:综合两面,落到临床/公众用药建议
- 结语:一句话收束,呼应"双面/知情"主题
字数分配(1000 字目标):引言~180、机制~170、禁忌~210、治疗~200、启示~190、结语~50。
Step 4:引用编号(按引用逻辑次序,非题录原顺序)
- 按文章中首次出现的次序给文献编号 [1]~[n]
- 不必按题录原顺序;以"叙事流畅"为准重排
- 每篇文献至少被引用一次;可在同一段引用多篇(用 [4][5][6] 并列)
- 单位作者的文献(如"湖南省东安县人民医院")以单位名作作者著录
Step 5:参考文献温哥华格式著录
详见 references/vancouver_format.md。核心要点:
- 期刊文章:作者. 题名[J]. 刊名, 年, 卷(期): 页码.
- 作者≥3 人用"等"(中文)或"et al."(英文);1-2 人全列
- 缺失字段(年/卷/期/页)省略,不编造、不补"约""估"等模糊词
- 单位作者:以单位名作作者
- 按引用次序编号,与正文 [n] 一一对应
Step 6:用 python-docx 生成排版规范的 docx
调用 scripts/generate_article.py,传入标题、正文段落列表、参考文献列表、输出路径。脚本封装了排版规范:
- 标题:黑体三号(16pt)加粗居中
- 正文:宋体小四(12pt),首行缩进 2 字符,1.5 倍行距,两端对齐
- 参考文献标题:黑体四号(14pt)加粗左对齐
- 参考文献条目:宋体五号(10.5pt),悬挂缩进,单倍行距
脚本调用示例(在 Bash 中):
"C:/Users/yangjing/.workbuddy/binaries/python/versions/3.13.12/python.exe" "<skill_dir>/scripts/generate_article.py"
脚本内部参数化:编辑 TITLE、BODY、REFS 三个列表后运行。也可复制脚本到项目目录按需改写输出路径。
依赖:python-docx(managed Python 3.13.12 已内置 1.2.0,无需安装)。
Step 7:自检与交付
输出前自检清单:
- [ ] 字数 1000 字左右(含标点,900-1100 区间)
- [ ] 正文每篇文献至少被引用一次,[n] 与文末列表一一对应
- [ ] 全部文献来自用户文件,未自行补充
- [ ] 参考文献按引用次序编号,温哥华格式,缺失字段已省略
- [ ] 文字简明易懂、言之有物,无空话套话
- [ ] docx 排版规范(标题/正文/参考文献层级清晰)
交付:用 present_files 展示生成的 docx;在回复中说明文件实际含哪些字段、缺失哪些字段、字数、引用篇数。
写作风格规范
- 破题通俗:引言用生活化类比或通俗解读切入,忌开头堆术语
- 辩证叙事:呈现"双面/张力",避免单向宣传或单纯罗列文献
- 言之有物:每段须有具体信息点(机制、品种、人群、数据方向),忌空泛
- 严谨简练:学术写作底色,不夸张、不绝对化(用"可能""可""部分"等限定词)
- 引用自然:[n] 嵌在句意中,不突兀;如"许华等系统分析了……文献[2]"
- 结语呼应:结尾一句收束主题,呼应开篇张力
注意事项
- 文件若含摘要,优先用摘要中的具体信息点支撑论述;若无摘要,基于题名等现有字段撰写,不臆测细节
- 不要为凑字数扩写无依据内容;字数不足时深化机制或启示段,而非注水
- 不要在正文中暴露文件读取的踩坑过程(那是 AI 内部步骤,对用户不可见)
- 输出文件名建议:
<主题>_科普文章.docx,存于项目outputs/目录
版本
| 版本 | 日期 | 更新 |
|---|---|---|
| v1.0.0 | 2026-08-20 | 首发封装,基于"中药与蚕豆病"科普文写作实践 |