☰
WPS接入DeepSeek完整教程:API+Python本地中转+VBA宏实现文案批量生成
2026/10/2 6:11:21 网站建设 项目流程

我一开始觉得“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里写一段话,Ctrl+C复制,切到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(force=True) prompt = data.get("prompt", "") system = data.get("system", "你是一个专业的文案助手,输出要简洁、准确、有网感。") temperature = data.get("temperature", 0.7) headers = { "Authorization": f"Bearer {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, headers=headers, json=payload, timeout=120) resp.raise_for_status() result = resp.json() content = result["choices"][0]["message"]["content"] # 直接返回纯文本,这样WPS宏里就不用解析JSON了 return Response(content, mimetype="text/plain; charset=utf-8") except requests.exceptions.Timeout: return Response("请求超时,请稍后重试", mimetype="text/plain; charset=utf-8") except Exception as e: return Response(f"发生错误: {str(e)}", mimetype="text/plain; charset=utf-8") if __name__ == "__main__": app.run(host="127.0.0.1", port=8989)

这段代码做的事情很简单:启动一个监听在本机8989端口的小服务,收到POST请求后,取出提示词,转发给DeepSeek,再把模型返回的文本原样吐回去。注意最后返回的是纯文本,这是故意设计的,为了让WPS端处理起来零成本。

运行服务:

python bridge.py

看到Running on http://127.0.0.1:8989就说明成功了。先别急,用浏览器或者命令行工具验证一下这个服务能不能正常返回结果。我习惯用curl:

curl -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文案流水线也搭起来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询