先聊聊ProWritingAid到底能干什么
如果你写英文文章比较多,应该听说过ProWritingAid这个名字。它跟Grammarly有点像,都是帮你检查语法和拼写错误的工具,但ProWritingAid在写作风格分析上做得更细。比如它会告诉你句子是不是写得太啰嗦、被动语态用得太多了、可读性怎么样,这些东西对写长文章的人来说挺实用的。
我最早是在浏览器里装了个插件用,后来发现它还有桌面版和网页版。但真正让我觉得这工具有价值的是它的API——你可以把它的分析功能集成到自己的系统里。比如我写了一个小工具,每次写完文章自动调用ProWritingAid的API做一遍检查,省得我手动复制粘贴了。下面我就把摸索出来的API接入经验详细说说,尤其是那些容易卡壳的地方。
API接入前必须搞清楚的几个事
ProWritingAid的API接入其实不算复杂,但有几个前置条件你最好先确认好。首先,你得有一个ProWritingAid的账号,而且要用付费订阅的版本。免费版是不开放API权限的,这一点很多人一开始不知道,白折腾半天。
然后就是去申请API密钥。登录ProWritingAid的开发者平台,创建一个应用就能拿到一个API Key。这里有个坑——创建应用的时候会让你填一个回调URL,如果你只是做服务端调用,这个URL填一个占位地址就行,比如http://localhost。我当初纠结了好久,生怕填错了影响使用,后来发现想多了。
友情提示:API密钥一定要保管好,别直接硬编码在代码里。我见过有人把密钥传到GitHub上,结果被别人拿去刷额度,一天就把月调用量用光了。
最后确认一下你的技术栈。ProWritingAid的API是基于RESTful的,返回JSON格式数据,支持的语言基本都有对应的HTTP库。我用的是Python的requests库,下面就以Python为例来写示例代码。
实战操作:从调用到拿到分析结果
先安装requests库,这个就不多说了。然后写一个最简单的调用代码,把一段英文文本传过去,让它做语法检查。核心代码如下:
import requests
url = "https://api.prowritingaid.com/v2/text/check"
headers = {
"Authorization": "Bearer 你的API密钥",
"Content-Type": "application/json"
}
payload = {
"text": "This is a example sentence with a error.",
"report": "grammar"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
这段代码看着简单,但我第一次跑的时候就报错了。排查了半天才发现是API密钥前面忘了加"Bearer "这个前缀。另外,report参数也很关键,它决定了返回什么类型的分析结果。可选的值有grammar(语法检查)、style(风格分析)、readability(可读性评分)等。如果你想一次性拿全,可以用"all"。
返回的JSON数据结构稍微有点复杂,里面包含了一个叫results的数组,每个元素对应一个检查到的错误或建议。比如上面那段示例文本,它会提示"a example"应该改成"an example","a error"应该改成"an error"。每个建议都包含起始位置、结束位置、替换建议、错误类型这些字段。
我刚开始用的时候,每次都是把整个JSON打印出来,然后手动找有用的信息。后来写了个解析函数,把错误和建议整理成列表,方便直接展示到界面上。这个解析的代码我就不贴了,网上有很多现成的例子,稍微改改就能用。
不同报告模式的对比和选择建议
ProWritingAid的API提供了好几种报告模式,每种侧重点不一样。我整理了一个表格,方便你根据自己的需求选:
| 报告模式 | 返回内容 | 适用场景 | 数据量大小 |
|---|---|---|---|
| grammar | 拼写错误、语法错误、标点问题 | 快速校对,适合日常邮件、短文 | 小(几百条) |
| style | 句子长度、被动语态、陈词滥调、可读性 | 润色长文章,提升写作质量 | 中(上千条) |
| readability | 可读性评分、句子复杂度分析 | 评估文章是否容易理解 | 小(几十条指标) |
| all | 以上全部内容 | 全面分析,适合重要文档 | 大(可能上万条) |
我的建议是,日常用grammar就够了,跑得快,数据量也小。如果是写博客或者论文,最好再加上style模式,能帮你发现很多自己没注意到的写作习惯。比如我原来特别喜欢用被动语态,用了style分析之后才发现,一篇文章里被动语态占了30%以上,改完之后文章读起来顺畅多了。
有个小技巧:如果你的文本很长(比如超过5000字),建议分段调用。ProWritingAid的API单次调用有字符数限制,好像是50000字符。但分段的另一个好处是,你可以对不同的段落用不同的报告模式。比如开头重要段落用all,其他段落用grammar,这样既省额度又高效。
新手最容易踩的三个坑
先说第一个坑:调用频率限制。ProWritingAid的API对每个账号有每分钟请求次数限制,好像是每分钟60次。如果你写了个循环,一次性提交很多文本,很容易被限流。我当初写了个批量校对脚本,200篇文章一起发,结果跑了一半就被封了半小时。解决办法是加一个time.sleep(1),每次请求之间等一秒。
第二个坑是字符编码问题。如果你的文本里包含特殊字符,比如引号、破折号、非英文字母,API可能会返回乱码或者报错。最好在发送前用urllib.parse.quote转义一下,或者确保你的文本是UTF-8编码。我遇到过一篇带中文引号的文章,结果API直接返回了500错误,排查了好久才发现是编码的问题。
第三个坑是API版本。ProWritingAid现在主要推的是v2版本,但网上很多教程还是v1的。v1和v2的接口地址不一样,参数格式也有差异。如果你照着老教程写代码,大概率会报404或者参数错误。所以一定要去官方文档确认你用的是最新版本,我习惯在代码里直接写死版本号,避免以后升级了出问题。
说了这么多,其实ProWritingAid的API接入门槛不高,只要把上面几个点注意好,基本半天就能跑通。如果你只是偶尔用用,直接用它的网页版或者插件就行,没必要折腾API。但如果你跟我一样,想把写作检查自动化,或者嵌入到自己开发的工具里,那API就值得花点时间研究一下。最后留个问题吧:你们平时写英文文章,有没有什么特别头疼的写作习惯?我看看能不能用ProWritingAid的API帮你想个解决办法。