
简介这是一套面向硕博研究生、青年教师及科研人员的论文全流程辅助 AI Skill 工具集围绕学术写作中的检索、综述、润色、查重与降 AI 率等痛点提供可本地部署的自动化能力。资源包共 47 个文件以 32 个 Python 脚本为核心实现检索、改写与文献管理逻辑辅以 6 个 Markdown 说明文档、4 个 JSON 配置、2 个 txt 文本、1 个 yaml 工作流定义及 license、gitignore 等工程文件压缩包约 76KB结构轻量、便于二次开发与集成。内容覆盖两亿余篇中英文文献的毫秒级检索与多维筛选、基于知识图谱的综述初稿生成、学术英语润色、多源查重预检与段落级相似度可视化、语义保持型降 AI 率改写以及 GB/T 7714、APA、IEEE 等多格式参考文献自动排版并适配 LangChain、Dify 等主流 Agent 框架支持私有化离线运行。目前已有 225 人学习下载适合希望把 AI 能力嵌入科研工作流、提升投稿效率的读者参考。1. 论文全流程辅助 AI Skill从检索 2 亿论文到降 AI 率改写一条流水线怎么搭写论文最耗神的从来不是「写」本身而是写之前的检索、写之中的引用、写之后的查重与降 AI 率。我见过太多人把时间砸在知网、IEEE、arXiv 之间来回切换文献综述拼到一半发现漏了关键一篇参考文献格式改到凌晨三点最后查重报告出来又得整段重写。所谓「论文全流程辅助 AI Skill」本质是把检索、综述、润色、查重预检、降 AI 率改写、参考文献管理这六个环节串成一条可复用的流水线让 AI 在每一步做它擅长的事人只做判断和取舍。这套东西适合正在赶毕业论文、期刊投稿、课程论文的本科生和研究生也适合需要批量产出技术报告的一线工程师。下面我按自己实际搭过的路径把每个环节怎么落地、参数怎么设、哪里会翻车讲清楚。2. 检索 2 亿论文先解决「找得到」再谈「找得准」2.1 为什么不能只靠一个数据库论文检索的第一道坎不是关键词写得好不好而是数据源覆盖够不够。知网偏中文、IEEE 偏工程、arXiv 偏预印本、PubMed 偏医学任何一个单独用都会漏。所谓「2 亿论文」的检索能力通常来自聚合多个开放接口Crossref、Semantic Scholar、OpenAlex、arXiv API、PubMed E-utilities再加上部分商业库的元数据。我一般会先跑一轮宽召回再用规则和模型做精排而不是一上来就死磕精确关键词。这里有个反直觉的点检索阶段追求的是「不漏」不是「不相关」。漏掉一篇关键文献综述的立论就可能塌多召回几十篇后面用脚本筛掉成本很低。所以第一轮查询我通常会把同义词、缩写、上下位词全部展开比如做目标检测就同时搜 object detection、target detection、DETR、YOLO、anchor-free做视觉问答就搜 VQA、visual question answering、multimodal fusion。2.2 用 Python 跑通多源聚合检索的最小命令下面这段脚本演示如何用 OpenAlex 和 arXiv 两个开放接口做聚合检索去重后输出候选列表。实际使用时把QUERY换成你的主题词即可。import requests import time from difflib import SequenceMatcher QUERY visual question answering multimodal fusion PER_PAGE 50 def fetch_openalex(query, per_page50): url https://api.openalex.org/works params { search: query, per-page: per_page, sort: relevance_score:desc } # OpenAlex 建议带上邮箱进入 polite pool响应更稳定 headers {User-Agent: research-skill/1.0 (mailto:youexample.com)} r requests.get(url, paramsparams, headersheaders, timeout30) r.raise_for_status() items [] for w in r.json().get(results, []): items.append({ title: w.get(title), year: w.get(publication_year), doi: w.get(doi), source: openalex }) return items def fetch_arxiv(query, max_results50): url http://export.arxiv.org/api/query params { search_query: fall:{query}, start: 0, max_results: max_results, sortBy: relevance } r requests.get(url, paramsparams, timeout30) r.raise_for_status() # 简化处理真实场景建议用 feedparser 解析 Atom import xml.etree.ElementTree as ET ns {a: http://www.w3.org/2005/Atom} root ET.fromstring(r.text) items [] for e in root.findall(a:entry, ns): items.append({ title: e.find(a:title, ns).text.strip(), year: e.find(a:published, ns).text[:4], doi: None, source: arxiv }) return items def dedup(items, threshold0.9): kept [] for it in items: dup False for k in kept: ratio SequenceMatcher(None, it[title].lower(), k[title].lower()).ratio() if ratio threshold: dup True break if not dup: kept.append(it) return kept if __name__ __main__: all_items [] all_items fetch_openalex(QUERY, PER_PAGE) time.sleep(1) # 控制频率避免被限流 all_items fetch_arxiv(QUERY, PER_PAGE) result dedup(all_items) for i, it in enumerate(result, 1): print(f{i}. [{it[year]}] {it[title]} ({it[source]}))逻辑说明fetch_openalex走的是 OpenAlex 的 search 接口按相关度排序fetch_arxiv走 arXiv 的 Atom 接口all:前缀表示全字段匹配。dedup用标题相似度做粗去重阈值 0.9 是经验值太低会误删不同论文太高会留下重复。参数上PER_PAGE建议 50 到 200太大响应慢且容易被限流time.sleep(1)是必须的开放接口对频率敏感。提示OpenAlex 和 arXiv 都不需要密钥但都要控制请求频率。生产环境建议加缓存同一查询 24 小时内不重复请求。2.3 精排与筛选把 200 篇压到 30 篇宽召回之后要做精排。我一般分三步先按年份过滤除非做综述否则优先近五年再按引用数或来源会议过滤CVPR、ICCV、NeurIPS 这类顶会权重高最后用嵌入模型算查询与摘要的语义相似度。第三步可以用 sentence-transformers 本地跑不依赖外部服务。from sentence_transformers import SentenceTransformer, util model SentenceTransformer(all-MiniLM-L6-v2) query_emb model.encode(QUERY, convert_to_tensorTrue) def rank_by_similarity(items, top_k30): texts [it[title] for it in items] emb model.encode(texts, convert_to_tensorTrue) scores util.cos_sim(query_emb, emb)[0] ranked sorted(zip(items, scores.tolist()), keylambda x: x[1], reverseTrue) return [it for it, _ in ranked[:top_k]]all-MiniLM-L6-v2模型小、速度快适合本地批量跑。top_k设 30 左右比较合适太少会漏太多后面读不完。这一步的产出就是你的候选文献池后面综述生成和参考文献管理都从这里取。3. 文献综述生成别让 AI 直接「编」要让它「拼」3.1 综述生成的正确姿势是「先结构化再生成」很多人用 AI 写综述直接丢一句「帮我写一篇关于 XX 的文献综述」结果出来一堆看似合理但引用对不上的内容。翻车的根源在于模型没有你的候选文献池它只能靠训练记忆编。正确做法是先把候选文献的标题、摘要、年份、来源整理成结构化输入再让模型做归纳和串联。我一般会把综述拆成三层主题聚类、时间线、争议点。主题聚类是把 30 篇文献按子方向分组时间线是看每个子方向的演进争议点是找结论冲突的文献。这三层做完综述的骨架就有了剩下的才是文字润色。3.2 用提示词模板把摘要变成综述段落下面是一个我常用的提示词模板配合前面的候选池使用。注意这里不直接让模型写全文而是逐段生成。PROMPT_TEMPLATE 你是一名学术写作助手。以下是一组文献的标题和摘要 {literature_block} 请完成以下任务 1. 将这些文献按研究主题分成 3-5 组每组给出一个主题名 2. 对每组用 150-200 字概括该方向的主要方法和结论 3. 指出不同组之间可能存在的结论冲突或方法差异 4. 所有概括必须基于上述文献不得引入未提及的工作。 输出格式 ## 主题一xxx 概括... 代表文献[编号] def build_literature_block(items, max_items30): lines [] for i, it in enumerate(items[:max_items], 1): lines.append(f[{i}] {it[title]} ({it[year]})) return \n.join(lines)逻辑说明build_literature_block把候选文献编号后拼成文本块编号是为了后面能追溯引用。提示词里明确要求「不得引入未提及的工作」这是防止模型编造引用的关键约束。参数上max_items建议不超过 30太多会超出上下文窗口且归纳质量下降。注意模型输出的「代表文献[编号]」必须人工核对编号对应关系一旦错位整段综述的引用就全废了。3.3 综述框架怎么搭从聚类到提纲拿到分组结果后综述框架基本就出来了。我一般按「引言 → 主题一 → 主题二 → 主题三 → 争议与展望 → 结论」搭。每个主题段落的结构是该方向解决什么问题、主流方法有哪些、代表工作、局限。这个结构写熟了换成任何主题都能套。有个细节值得说综述里的引用密度要均匀不能前两段引 20 篇后面一段引 2 篇。我一般每 100 字至少一个引用标记这样审稿人看着才觉得你读得够。引用标记先用编号占位最后统一替换成目标期刊格式。4. 写作润色与降 AI 率改写把「机器味」压下去4.1 AI 率高的三个典型特征查重和 AIGC 检测是两回事但降 AI 率的核心是让文本更像人写的。AI 生成文本有三个高频特征句式过于工整每句长度接近、连接词滥用「此外」「然而」「因此」扎堆、信息密度均匀每段都在说差不多多的话。降 AI 率不是简单换同义词而是打乱这些规律。我一般会做三件事把长句拆成短句混搭、删掉一半连接词、在关键结论处加一句带个人判断的话。比如「实验结果表明该方法有效」改成「实验数据看下来这个方法在中小目标上确实稳但大目标上提升有限」。后者明显更像人写的。4.2 降 AI 率改写的提示词与参数REWRITE_PROMPT 请对以下段落做改写要求 1. 保持原意和所有数据不变 2. 句长错落避免连续三句长度相近 3. 减少「此外」「然而」「因此」等连接词最多保留一个 4. 在段末加一句基于内容的个人判断或局限说明 5. 不要使用「综上所述」「值得注意的是」这类套话。 原文 {paragraph} 改写后 逻辑说明这五条要求分别对应 AI 文本的三个特征和两个套话习惯。句长错落是打乱节奏减少连接词是去模板化段末加判断是注入人味。实际使用时逐段改写不要整篇丢进去整篇改写容易前后不一致。参数上温度temperature建议设 0.7 到 0.9太低改不动太高会改跑偏。如果用的是支持 top_p 的接口top_p 设 0.9 左右比较稳。4.3 查重预检知网和 AIGC 能不能一起查这是被问得最多的问题之一。知网的查重和 AIGC 检测目前是分开计费的查重看的是文字重复率AIGC 看的是生成概率两者算法不同、报告不同所以通常要付两次钱。预检阶段我一般先用免费或低成本的工具跑一遍比如用本地脚本做 n-gram 重复检测把明显重复的段落先改掉再去跑正式查重。from collections import Counter def ngram_overlap(text_a, text_b, n5): def ngrams(t, n): words t.split() return [ .join(words[i:in]) for i in range(len(words)-n1)] a Counter(ngrams(text_a, n)) b Counter(ngrams(text_b, n)) overlap sum((a b).values()) total sum(a.values()) or 1 return overlap / total # 用法拿自己的段落和参考文献段落比对 # ratio ngram_overlap(my_paragraph, ref_paragraph)n设 5 是经验值中文场景建议先分词再算。这个脚本只能做粗筛正式查重还是得用专业工具但预检能帮你提前发现大段雷同省一次查重费。5. 参考文献管理与避坑Zotero 脚本才是稳定组合5.1 参考文献管理的自动化路径参考文献管理最烦的是格式。我一般用 Zotero 做文献库配合 Better BibTeX 插件导出 BibTeX再用脚本按目标期刊格式生成引用。Zotero 支持从 DOI 自动抓取元数据前面检索阶段拿到的 DOI 直接导入即可。# 用 Zotero 的 Better BibTeX 导出后用 pandoc 生成参考文献 pandoc main.md -o main.docx --citeproc --bibliographyrefs.bib--citeproc是 pandoc 的引用处理开关--bibliography指定 BibTeX 文件。这条命令能把 Markdown 里的[key]引用自动替换成目标格式。参数上格式由 CSL 文件控制投稿前换成期刊指定的 CSL 即可。5.2 避坑论文全流程里最容易翻车的 5 个点现象检索结果里同一篇论文出现三次作者和年份还不一样。原因不同数据库的元数据质量参差预印本和正式版标题略有差异DOI 缺失时去重失效。 解决去重时优先用 DOI没有 DOI 再用标题相似度预印本和正式版手动合并保留正式版。现象综述里引用的文献点进去发现根本不存在。原因模型在生成时编造了引用或者编号对应错位。 解决所有引用必须回查候选池编号对应关系用脚本校验生成后逐条核对 DOI。现象降 AI 率改写后专业术语被换成了同义词意思变了。原因改写提示词没有保护术语模型把「卷积」改成了「褶积」之类。 解决改写前先列出术语白名单提示词里明确「白名单内词汇不得替换」。现象查重预检通过正式查重却超标。原因预检用的库和正式查重的库覆盖范围不同预检漏掉了某些来源。 解决预检只当粗筛正式查重前把方法、实验设置这类易重复段落手动改写一遍。现象参考文献格式导出后期刊名缩写和全称混用。原因BibTeX 里 journal 字段有的写全称有的写缩写CSL 不会自动统一。 解决导入 Zotero 时统一用期刊标准缩写导出前用脚本检查 journal 字段一致性。6. 把整条流水线串起来一个可复用的目录结构与验证习惯前面五章拆开讲了检索、综述、润色、查重、文献管理最后一章说怎么把它们串成一条能反复用的流水线。我的做法是在本地建一个固定目录结构每个环节的输入输出都落盘这样任何一步出问题都能回溯。paper-skill/ ├── 01_search/ # 检索结果 json ├── 02_screen/ # 精排后的候选池 ├── 03_review/ # 综述草稿与分组 ├── 04_rewrite/ # 降 AI 率改写稿 ├── 05_check/ # 查重预检报告 ├── 06_refs/ # BibTeX 与 CSL └── config.yaml # 查询词、阈值、模型参数config.yaml里放所有可调参数比如检索的PER_PAGE、去重阈值、精排top_k、改写温度。这样换一个论文主题只改 config 和查询词整条流水线就能复用。验证习惯上我坚持三个检查点检索后检查候选池是否覆盖了已知的关键工作综述生成后检查每条引用能否回查改写后检查术语和数据有没有被改动。这三个检查点各花十分钟能省掉后面几天的返工。有个技巧值得单独说把每次的检索查询词和命中数量记在一个日志文件里写论文时如果审稿人问「你为什么没引某某工作」你能快速定位是没检索到还是筛掉了。这个习惯我坚持了三年帮我挡过好几次审稿意见。说到底论文全流程辅助 AI Skill 的价值不在于某个单点工具多强而在于把六个环节的输入输出标准化让每一步都可复现、可回溯、可替换。工具会变接口会变但这套流水线的结构不会变。我自己踩过的最大坑就是一开始想用一个「万能提示词」解决所有环节结果每个环节都半吊子后来拆成六段各管各的反而顺了。希望帮到你。本文还有配套的精品资源点击获取