WPS接入DeepSeek完整教程:API+Python本地中转+VBA宏实现文案批量生成

发布时间:2026/10/2 6:11:24
WPS接入DeepSeek完整教程:API+Python本地中转+VBA宏实现文案批量生成
我一开始觉得“WPS接DeepSeek”这种操作也就是二十分钟的玩具真用了才发现这是把文档办公里最烦人的文案活儿整个盘活了。今天这篇教程不整虚的直接把我从注册API、搭本地中转服务到在WPS里跑通第一次生成的全部过程写出来。核心解决三个问题怎么接、怎么用、踩了坑怎么爬起来。适合每天泡在WPS里写方案、写总结、想标题的同学也适合想给WPS表格做批量文案处理但不想手动复制粘贴的人。先说明一点这篇是纯实操向教程涉及的工具只有DeepSeek官方API、Python和WPS自带宏不需要额外安装收费插件。我自己在WPS文字和WPS表格里都跑通了整个过程大概一小时新手慢一点两小时也够了。1. 为什么要在WPS里接入DeepSeek先把需求盘清楚1.1 办公文案的三大痛点模板化、时效差、改稿累我在实际写材料的过程中发现办公文案真正的敌人不是“写不出来”而是“写出来的东西自己都看不下去”。尤其是工作周报、活动方案、产品文案这三类写了几年之后你会发现每次的套路基本都一样开头背景、中间罗列、结尾展望。这种模板化内容最大的问题是没营养也不容易让看的人留下印象。第二个痛点是时效性。今天要发一条公众号推送下午就要上线你临时憋不出一个吸引人的标题于是只能打开各种标题生成网站结果出来的标题又旧又水一水的“重磅”“震惊”“不容错过”。这种词放在三年前还有人点现在用户免疫了。DeepSeek这类大模型不一样给它几个关键词它能把同一个产品的卖点换着花样给你表述时效性和新颖度都强不少。第三个痛点是改稿累。我说句实话文案的产出往往不重要“改”才是真消耗。同样的意思领导喜欢精简版甲方喜欢活泼版渠道方又要求口语化。如果纯靠人手改花的时间比初稿还多。但如果你把大模型接进WPS这个诉求就变成了一个很简单的工程问题把初稿发给模型在提示词里指定“改成300字以内的口语化版本”几秒钟就返回新版文案。这就是在文档工具里直接集成的意义——不需要切到网页、不需要复制粘贴减少的不只是几步操作是整个工作流被打断的烦躁感。1.2 为什么是DeepSeek而不是其他模型要回答这个问题先看办公场景对文案生成的真实需求中文写得好、响应快、价格能接受、并且接入成本不要太高。DeepSeek这几个条件都占了。中文能力这块我在测试时让它写“一个面向年轻妈妈的母婴产品推广文案”它没有用那种硬邦邦的广告腔而是给出了几个带生活场景的开头比如“深夜两点孩子睡了你终于有自己的时间…”这种人情味儿大多数国产模型能做到但很多国外模型的翻译腔就重了。要是你用GPT系列中文虽然也不差但字号和费用往往让人劝退。再一个就是接口兼容性。DeepSeek的API是兼容OpenAI接口格式的这意味着你在网上找到的大部分现成脚本、插件稍微改一下base_url和模型名就能用。这个兼容性对WPS集成来说太重要了。因为WPS没有官方提供的DeepSeek插件截至我这篇文章发布时官方插件市场里还没有市面上很多方案都是靠VBA宏、Python脚本或第三方工具调接口来间接实现。接口格式越通用你自己改造的成本就越低。费用方面更直观。文案生成虽然是个人用户用得最多的场景但一旦做成批量用“百万token”来算钱的模型成本控制就更关键。DeepSeek的官方定价在同类模型里属于比较亲民的档位个人轻度使用充几十块能用挺久办公场景按量付费也不心疼。具体价格经常调整以官方页面为准但整体来说文案生成这个频次完全烧得起。1.3 官方AI与自接DeepSeek差在哪有同学肯定会问WPS自己不是有“WPS AI”吗为什么还要折腾我在这里说清楚一个现实。WPS AI确实已经开放了写作辅助、总结、润色这些能力而且和文档的融合度很高选中一段文字就能调出菜单。但它的问题也显而易见第一WPS AI是会员订阅制或者按功能点付费长期用是一笔固定支出第二它背后的模型不可选你想让它按DeepSeek-R1这样的推理模型去处理复杂逻辑任务它就不一定给你这个入口第三它的提示词模板是内置好的想要自定义系统角色、精细控制输出格式基本没有开放接口。自接DeepSeek走的是“自己掌控一切”的路线。用什么模型temperature设多少系统提示词怎么写输出是纯文本还是JSON全部由你说了算。代价就是你需要动手做一点技术配置并且数据要走DeepSeek的API。两相对比如果你是追求省心的轻度用户直接用WPS AI没问题但如果你是有明确文案需求、想批量处理、想省钱的用户自接路线长期来看更值。我在实际使用中还发现自接DeepSeek的最大优势是“可组合性”。比如我可以在WPS表格里做一个宏A列写产品关键词B列自动生成对应的发布文案一次性处理几十条。这种玩法是封闭的官方AI给不了的。2. 三条集成路线选对方案少踩一半坑2.1 方案A纯VBA/JS宏直连官方API这是最直接的做法在WPS里写一段VBA或JS宏宏里面发起一个HTTP请求把当前选中的文本作为提示词发给DeepSeek API再把返回结果写回文档。它的优点是架构最简单不需要安装任何额外程序只要WPS支持宏再配一个API Key就能跑。缺点是VBA处理JSON非常痛苦尤其是当DeepSeek返回的内容里有换行、引号、Unicode字符时解析逻辑很容易写崩。我见过不少新手在这一步卡死明明API返回了结果但代码就是提取不到content字段里的内容。所以我把话说清楚方案A更适合“只想在单机文档里快速验证一下能不能通”的场景不建议作为长期稳定的日常工具。如果你非要走这条路建议优先用WPS的JS宏而不是VBA。JS宏是WPS近几年主推的脚本能力用的是JavaScript语法处理JSON比VBA舒服太多。但JS宏在WPS不同版本里对网络请求的支持也不一样这个要提前测试。2.2 方案B本地中转服务WPS宏回填推荐这个思路是给WPS配一个“翻译官”先在本地跑一个极简的Python服务它专门负责跟DeepSeek API通信WPS里的宏只需要把文本POST到本地服务然后从响应里拿结果。为什么绕一步反而更好原因有三个。第一密钥安全。把API Key写死在WPS的宏里只要这个文档发出去密钥就泄露了。而中转服务把密钥放在本机环境变量或配置文件里WPS宏里完全没有敏感信息。第二逻辑清晰。JSON解析、错误处理、超时重试都写在一个Python文件里出了问题好调试不用在VBA里折腾。第三扩展性强。今天你想接DeepSeek明天想换另一个模型只需要改Python服务WPS里的宏可以完全不动。代价就是你电脑上需要有Python环境并且每次用之前要先启动这个小服务。很多人听到“要启动服务”就害怕其实就一个命令行的事而且可以做成开机自启后面无感使用。2.3 方案C把DeepSeek当外部写作助手用这条路严格来说不算“集成”但确实是我见过最多人在用的过渡玩法WPS负责写DeepSeek网页版或桌面客户端负责改两边通过剪贴板交流。做法是在WPS里写一段话CtrlC复制切到DeepSeek对话窗口粘贴加上一句“帮我润色”等它输出再复制回WPS。好处是完全不用配置任何东西适合零基础用户坏处是切来切去很耗神而且批量处理的时候效率低到让人崩溃。我之所以把方案C也列出来是因为它能让你在没有技术基础的情况下先体验“大模型改文案”到底值不值得。如果用了几天觉得确实有帮助再来折腾方案A或B也不迟。2.4 方案对比到底怎么选为了让你不用看完全文就做决策我先给一个直观对比表对比维度方案A纯宏直连方案B本地中转方案C外部助手搭建难度中中高零密钥安全性低高高批量处理能力弱强弱日常使用流畅度高高低维护成本低中无适合人群想试水的技术党想长期用的人零基础体验用户我的建议非常明确如果你只是图新鲜方案C可以先玩两天如果你打算真的把它变成生产力工具直接上方案B一节一节往下做即可。后面的教程我会重点讲方案B因为它的体验最稳定、最值得复现。3. 从零到一WPS接入DeepSeek完整实操3.1 前置准备申请API Key与费用评估动手之前先把三个东西准备好一个DeepSeek开放平台的账号、一个能跑Python的电脑、一份装了WPS且支持宏的文档。申请API Key的流程不复杂。注册登录DeepSeek开放平台进入API Keys页面创建一个新Key创建完立刻复制保存。这个Key只会完整显示一次后面再想看就只能删掉重建。然后到“充值”页面先充一个最低金额确认账户状态变成“可用”再继续。新用户一般会有免费额度从注册时间起一段时间内有效具体以平台页面提示为准。我在费用评估上多说两句。文案生成属于典型的“短输入、短输出”场景一条文案的token消耗通常在一两千以内。按官方定价粗略估算生成几百条文案也就几块钱级别。就算你把模型换成带推理能力的deepseek-reasoner因为输出需要思考过程token消耗会成倍增加价格也会涨不少这个要心里有数。日常写周报、写标题用deepseek-chat就足够了。3.2 搭好Python本地中转服务我选用Flask来写这个中转服务因为它是Python社区最普及的Web框架代码量少遇到问题网上一搜一大把答案。先确认Python已经装好然后在命令行执行安装依赖pip install flask requests装好依赖后新建一个文件夹比如wps-deepseek-bridge在里面新建bridge.py写入以下代码import os import requests from flask import Flask, request, Response app Flask(__name__) # 密钥放到环境变量里或者直接填在这里也行本机用时 API_KEY os.environ.get(DEEPSEEK_API_KEY, sk-你的密钥) # DeepSeek官方接口地址兼容OpenAI格式 API_URL https://api.deepseek.com/chat/completions app.route(/generate, methods[POST]) def generate(): data request.get_json(forceTrue) prompt data.get(prompt, ) system data.get(system, 你是一个专业的文案助手输出要简洁、准确、有网感。) temperature data.get(temperature, 0.7) headers { Authorization: fBearer {API_KEY}, Content-Type: application/json, } payload { model: deepseek-chat, messages: [ {role: system, content: system}, {role: user, content: prompt}, ], temperature: temperature, stream: False, } try: resp requests.post(API_URL, headersheaders, jsonpayload, timeout120) resp.raise_for_status() result resp.json() content result[choices][0][message][content] # 直接返回纯文本这样WPS宏里就不用解析JSON了 return Response(content, mimetypetext/plain; charsetutf-8) except requests.exceptions.Timeout: return Response(请求超时请稍后重试, mimetypetext/plain; charsetutf-8) except Exception as e: return Response(f发生错误: {str(e)}, mimetypetext/plain; charsetutf-8) if __name__ __main__: app.run(host127.0.0.1, port8989)这段代码做的事情很简单启动一个监听在本机8989端口的小服务收到POST请求后取出提示词转发给DeepSeek再把模型返回的文本原样吐回去。注意最后返回的是纯文本这是故意设计的为了让WPS端处理起来零成本。运行服务python bridge.py看到Running on http://127.0.0.1:8989就说明成功了。先别急用浏览器或者命令行工具验证一下这个服务能不能正常返回结果。我习惯用curlcurl -X POST http://127.0.0.1:8989/generate -H Content-Type: application/json -d {\prompt\: \用一句话介绍杭州\}如果能返回一句介绍杭州的话说明中转服务已经OK。这一步有问题的话后面都不用看了先解决服务的报错。3.3 在WPS里写第一个AI文案宏服务通了现在轮到WPS端。我以WPS文字为例。先确保WPS能看到“开发工具”选项卡。如果找不到在“文件→选项→自定义功能区”里把右侧的“开发工具”勾上。接着打开“开发工具”里的“Visual Basic编辑器”或者直接在选项卡里选“宏”新建一个宏名字叫GenerateCopy。在VBA编辑窗口粘贴以下代码Sub GenerateCopy() Dim selectedText As String Dim resultText As String Dim http As Object Dim requestBody As String 获取当前选中的文本 On Error Resume Next selectedText Selection.Text On Error GoTo 0 如果没有选中内容就弹窗让用户输入 If Len(Trim(selectedText)) 2 Then selectedText InputBox(请输入要生成文案的主题或要求) If Len(Trim(selectedText)) 1 Then Exit Sub End If 调用本地中转服务 Set http CreateObject(MSXML2.XMLHTTP) http.Open POST, http://127.0.0.1:8989/generate, False http.setRequestHeader Content-Type, application/json 这里需要把提示词里的特殊字符做一下转义 requestBody {prompt: Replace(selectedText, , \) } http.send requestBody resultText http.responseText 把结果插入到当前光标位置 Selection.InsertAfter resultText MsgBox 生成完成 End Sub这段宏的逻辑非常直白读取WPS里选中的文字用JSON格式POST到本地中转服务然后把返回的纯文本插入到文档当前光标位置。运行方式有两种一种是在VBA编辑器里直接按F5另一种是在“宏”菜单里找到GenerateCopy点击运行。我第一次跑通的时候选中的是WPS里一行“写一个咖啡店开业促销文案目标人群是周边写字楼白领”回车等待了三秒左右光标后直接多出了一段完整文案。那一刻你就知道这趟折腾值了。顺手把我踩过的一个坑告诉大家如果你按F5运行后报“用户定义类型未定义”或者“找不到工程或库”多半是WPS缺少VBA组件。WPS个人版默认不内置完整VBA环境需要单独安装“VBA for WPS”插件这个在WPS官方社区或插件市场能搜到。装好后重启WPS问题一般就解决了。3.4 核心参数调优温度、模型、上下文中转服务里有两个核心参数值得花心思调temperature和model。temperature控制的是“随机性”。取值范围通常0到2数值越大输出越发散、越有创意数值越小输出越保守、越贴字面意思。我实测下来写营销标语时0.9到1.1之间效果好容易出一些不那么按套路走的句子写工作总结、会议纪要这类偏正经的内容0.3到0.5比较合适不会跑偏也不会表达得过于浮夸。model的选择更关键。deepseek-chat是通用对话模型日常文案都用它deepseek-reasoner是带推理能力的模型适合做逻辑推导、方案拆解、复杂任务规划。但reasoner的输出会包含一段“思考过程”这段内容本质是模型内部推理不该直接出现在交付给领导的文档里。所以如果你要用reasoner最好在Python服务端做后处理把思考内容过滤掉。我的习惯是日常场景固定用deepseek-chat只有在需要头脑风暴级输出时才临时把模型换成reasoner。上下文长度这个问题办公室用得少但也要知道。DeepSeek的API支持在请求里传max_tokens参数限制输出长度。如果生成的长文案被截断了多半就是这个参数没设够。我一般设置到2048写一篇完整公众号文章也够用。另外你可以在请求体里增加messages数组的历史消息实现多轮对话但在WPS办公场景里单轮生成已经覆盖大部分需求不用过度设计。4. 让文案真正“能用的”提示词设计与批量玩法4.1 三段式提示词角色、任务、格式模型接好了不等于你随手写几个字它就能交付专业文案。真正决定生成质量的是提示词。我自己的经验是办公场景下最好用的提示词结构只有三段角色、任务、格式。角色让模型进入一个特定身份。比如“你是一位有十年快消品经验的文案策划”这句开场白对结果的影响非常大。模型在生成时会不自觉地调用这个角色背后的知识体系和话术习惯。任务要说得越具体越好包括目标受众、核心卖点、内容用途、字数限制。格式则用来约束输出结构比如“用三段式结构第二段要包含一个生活场景”。一个完整的提示词长这样你是一位擅长社交媒体文案的运营专家。请为【xx咖啡店】写一条开业促销文案目标人群是周边写字楼白领核心卖点是“前三天第二杯半价”。要求文案口语化控制在100字以内并给出三个备选标题。把这段提示词填进我们的WPS宏里选中替换成你自己的产品信息生成出来的东西大概率能直接用。4.2 高频办公场景的提示词框架针对不同场景我总结了几套可以直接套用的框架。工作总结角色定位“你是一位擅长结构化表达的行政助理”任务是“把以下工作内容整理成周报”格式是“按完成事项、进行中事项、下周计划三个板块输出每条不超过50字”。营销文案角色定位“广告公司资深文案”任务是“根据产品特点生成带货文案”核心是“必须包含痛点描述、用户场景、行动号召三要素”。邮件润色角色定位“专业商务礼仪顾问”任务是“把这段话改写成一封得体的工作邮件”要求“语气礼貌但不卑微开头有称呼结尾有祝语”。标题生成角色定位“新媒体标题达人”任务“给出5个不同风格的标题”要满足“字数不超过20字不出现夸张违法违规词汇”。好用的框架都遵守同一个原则让模型替你做选择题而不是问答题。你给出越多的参考信息它输出的可用的概率就越高。4.3 进阶WPS表格批量生成文案如果你觉得一个文档一个宏还不够爽那接下来这个玩法你一定喜欢在WPS表格里实现批量文案生成。思路和文字版完全一样只是我们把提示词放在A列把生成结果写回B列。新建一个宏命名为BatchGenerate代码如下Sub BatchGenerate() Dim lastRow As Long Dim i As Long Dim promptText As String Dim resultText As String Dim http As Object Dim requestBody As String lastRow ActiveSheet.UsedRange.Rows.Count For i 1 To lastRow promptText Trim(Cells(i, 1).Value) If Len(promptText) 0 Then Set http CreateObject(MSXML2.XMLHTTP) http.Open POST, http://127.0.0.1:8989/generate, False http.setRequestHeader Content-Type, application/json requestBody {prompt: Replace(promptText, , \) } http.send requestBody resultText http.responseText Cells(i, 2).Value resultText End If Next i MsgBox 批量生成完成共处理 lastRow 行 End Sub第一次跑批量宏之前强烈建议先只在三五行里做测试。因为如果提示词里有明显的错误它会逐行调用API白白消耗token。我试过一次性处理50行每行限制100字以内总耗时在1分钟上下效果稳定。这个速度已经比人手写快了太多。5. 踩坑记录这些问题我全都亲眼见过5.1 高频报错与解决方案速查表下面这些报错是我在做WPS集成DeepSeek时真实遇见的整理成速查表给你参考报错/现象常见原因解决办法宏运行时提示“找不到工程或库”WPS缺VBA组件或宏被禁用安装VBA for WPS插件开发工具→宏安全性→启用本地服务返回401API Key错误或已过期去DeepSeek平台重新生成Key确认不是测试Key本地服务返回402账户余额不足充值检查免费额度是否用尽本地服务返回429请求频率超限减少批量并行等待几秒重试生成文案中英文混杂提示词未指定语言在提示词中明确“只输出中文”结果被截断max_tokens设置偏小在Python服务中把max_tokens调大WPS更新后宏不能运行更新重置了安全配置重新设置宏安全性确认VBA组件仍存在请求超时reasoner模型思考时间长调整Python服务的timeout到150秒以上返回内容带引号导致JSON解析失败提示词有未转义字符使用Replace做转义或改用JS宏我额外提醒一句凡是出现“请求扩展准备失败”这类插件环境的报错不管报错里写的是DeepSeek、Logstash还是别的工具大概率是扩展会话过期或沙箱资源没加载好先清理扩展缓存然后重启应用比反复改代码更有效。5.2 容易被忽略的合规与安全细节最后这个板块虽然放在最后但分量最重。集成外部AI的过程中有两条安全底线必须守住。第一不要把API Key写进发给别人的WPS文档里。不管是方案A还是方案B密钥一定不要放在文档内嵌的宏代码里否则文档一旦外流等于把你的账户余额送给别人刷。中转服务方案里密钥放在本机环境变量或不被分享的配置文件中是最稳的。第二不要把敏感数据发给外部API。WPS里可能存有客户名单、报价表、内部方案这类涉密内容在没有经过授权和合规评估之前不要把这些原文作为提示词发给任何在线大模型。DeepSeek的API会把请求数据用于模型服务这是行业常态但对于企业用户来说是否允许在外部AI系统中处理公司数据是一个需要提前确认的问题。用AI生成内容本身不违法但生成的内容如果涉及虚假宣传、夸大功效、侵犯他人著作权使用者和发布者都负有责任。我自己的习惯是AI生成的初稿一律当“素材”而不是“成品”发布前至少人工过一遍把事实性错误和不合规表述都调干净再用。最后再分享一个小技巧。我在方案B的中转服务里并没有只写死一个system角色而是把提示词模板做成了一个表格接口在WPS表格里一列写“场景类型”另一列写“具体需求”Python服务按场景自动拼装提示词。这样我连提示词都不用记只在表格里填空。如果你愿意再往前一步还可以把中转服务部署到局域网里让办公室其他同事的WPS也接同一个服务大家共享一个API额度池。这个玩法我后面会继续完善但今天就先讲到这里希望你能把自己那套WPS文案流水线也搭起来。