国内前端vue对接OpenAI/chatgpt【文本互动/生成图片】

 

 如图;国内通过调用openai接口进行互动,实现图文互动/文本互动

 注意:请求人数较多,需要等待

 

1、🔔 获取ApiKey

注册 OpenAI 账号,获取你的 ApiKey,过程略。

2、💬 聊天接口

⚠️ 不再推荐使用本接口,后面将废弃。

接口地址 (POST请求)

POST https://api.openai.com/pro/chat/completions

请求参数

参数名类型长度必须备注
apiKeyString64OpenAI 的 ApiKey
sessionIdString64会话ID,关联上下文,推荐使用UUID作为sessionId
contentString1000发送的内容

请求示例(Content-Type = application/json

{
    "apiKey": "<your_openai_api_key>",
    "sessionId": "8d1cb9b0-d535-43a8-b738-4f61b1608579",
    "content": "你是谁?"
}

响应示例

 
{
    "code": 200,
    "message": "执行成功",
    "data": "我是一名人工智能助手,用于协助回答问题和提供建议。您可以通过与我进行对话来获取您需要的信息或帮助。"
}

本接口使用的是 gpt-3.5-turbo 模型,支持通过上下文内容进行连续对话。

本接口对官方的接口进行了封装,开发者只需为每个 ApiKey 下的每个会话分配一个独立的 sessionId 即可实现连续对话 。

推荐使用 uuid 作为 sessionId 以保证全局唯一 ,否则对话可能会“串线”。

对话中的上下文信息有效期为30分钟,过期后再次发送消息无法关联上下文。

# 测试聊天
curl https://api.openai.com/v1/chat/completions \                
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_openai_api_key>" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
  
# 响应结果  
  {
  "id": "chatcmpl-21lvNzPaxlsQJh0BEIb9DqoO0pZUY",
  "object": "chat.completion",
  "created": 1680656905,
  "model": "gpt-3.5-turbo-0301",
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 10,
    "total_tokens": 20
  },
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Hello there! How can I assist you today?"
      },
      "finish_reason": "stop",
      "index": 0
    }
  ]
}
# 测试生成图片
curl https://api.openai.com/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_openai_api_key>" \
  -d '{
    "prompt": "A bikini girl",
    "n": 2,
    "size": "512x512"
  }'
  
# 响应结果
  {
  "created": 1680705608,
  "data": [
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxxxxx"
    },
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxxxxx"
    }
  ]
}

OpenAI本身是没有记忆的,如果你不告诉他你之前说了什么以及他之前回答了什么,那么他只会根据你最近一次发送的内容进行回答。

所以,要想实现“连续对话”,每次发送消息时,你需要将你之前发送的内容(user)以及OpenAI之前返回的内容(assistant),再结合你本次想发送的内容(user) 按 时序 组合成一个 messages[] 数组,然后再将这个数组发送给OpenAI就行了,就是这么简单。

4 、⭐️ 第三方应用

如果你用的是第三方开发者开发的基于OpenAI 的应用可以参考以下:

名称Github地址Stars
OpenAI-TranslatorGitHub - yetone/openai-translator: 基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端应用 - Browser extension and cross-platform desktop application for translation based on ChatGPT API.
ChatGPT-Next-WebGitHub - Yidadaa/ChatGPT-Next-Web: One-Click to deploy well-designed ChatGPT web UI on Vercel. 一键拥有你自己的 ChatGPT 网页服务。
ChatGPT-Webhttps://github.com/Chanzhaoyu/chatgpt-web

5、💰 查询余额

接口地址 (GET请求)

GET https://api.openai.com/pro/balance?apiKey=sk-xxxxxxxxxxxxxx

请求参数

参数名类型长度必须备注
apiKeyString64OpenAI 的 ApiKey

响应示例

{
    "code": 200,
    "message": "执行成功",
    "data": {
        "total": 18.00,
        "balance": 17.92,
        "used": 0.08
    }
}

原OpenAI官方后台查询余额的接口由于被用户滥用,官方给撤销了,现在提供一个折中的方式去计算账户余额。

逻辑是先得到OpenAI给你账户授权的总金额,然后减去最近100天你账户消耗的金额,得到的 balance 即为账户可用余额。

<template><div class="chat-window"><div class="top"><div class="head-pic"><HeadPortrait :imgUrl="frinedInfo.headImg"></HeadPortrait></div><div class="info-detail"><div class="name">{{ frinedInfo.name }}</div><div class="detail">{{ frinedInfo.detail }}</div></div><div class="other-fun"><span class="iconfont icon-shipin" @click="video"> </span><span class="iconfont icon-gf-telephone" @click="telephone"></span><label for="docFile"><span class="iconfont icon-wenjian"></span></label><label for="imgFile"><span class="iconfont icon-tupian"></span></label><inputtype="file"name=""id="imgFile"@change="sendImg"accept="image/*"/><inputtype="file"name=""id="docFile"@change="sendFile"accept="application/*,text/*"/><!-- accept="application/*" --></div></div><div class="botoom"><div class="chat-content" ref="chatContent"><divclass="chat-wrapper"v-for="(item, index) in chatList":key="item.id"><!-- <div v-if="isSend && index == chatList.length - 1"><div class="chat-friend" v-if="item.uid !== '1001'"><div class="info-time"><img :src="item.headImg" alt="" /><span>{{ item.name }}</span><span>{{ item.time }}</span></div><div class="chat-text" v-if="item.chatType == 0"><span class="flash_cursor"></span></div></div> </div>--><div class="chat-friend" v-if="item.uid !== '1001'"><div class="info-time"><img :src="item.headImg" alt="" /><span>{{ item.name }}</span><span>{{ item.time }}</span></div><div class="chat-text" v-if="item.chatType == 0&&item.type != 1"><template v-if="isSend && index == chatList.length - 1"><span class="flash_cursor">请稍后...</span></template><template v-else><pre>{{ item.msg }}</pre></template></div><div class="chat-img" v-if="item.chatType == 1"><img:src="item.msg"alt="表情"v-if="item.extend.imgType == 1"style="width: 100px; height: 100px"/><el-image :src="item.msg" :preview-src-list="srcImgList" v-else></el-image></div><div class="chat-img" v-if="item.type == 1"><imgv-for="(items,index) in item.images":src="items":key="index"alt="表情"style="width: 100px; height: 100px"/></div><div class="chat-img" v-if="item.chatType == 2"><div class="word-file"><FileCard:fileType="item.extend.fileType":file="item.msg"></FileCard></div></div></div><div class="chat-me" v-else><div class="info-time"><span>{{ item.name }}</span><span>{{ item.time }}</span><img :src="item.headImg" alt="" /></div><div class="chat-text" v-if="item.chatType == 0">{{ item.msg }}</div><div class="chat-img" v-if="item.chatType == 1"><img:src="item.msg"alt="表情"v-if="item.extend.imgType == 1"style="width: 100px; height: 100px"/><el-imagestyle="max-width: 300px; border-radius: 10px":src="item.msg":preview-src-list="srcImgList"v-else></el-image></div><div class="chat-img" v-if="item.chatType == 2"><div class="word-file"><FileCard:fileType="item.extend.fileType":file="item.msg"></FileCard></div></div></div></div></div><div class="chatInputs"><!-- v-show="showEmoji"--><!-- <div class="emoji boxinput" @click="clickEmoji"><img src="@/assets/img/emoji/smiling-face.png" alt="" /></div> --><div class="emoji-content"><Emoji@sendEmoji="sendEmoji"v-show="showEmoji"@closeEmoji="clickEmoji"></Emoji></div><input class="inputs" v-model="inputMsg" @keyup.enter="sendText" /><el-button class="send boxinput" :disabled="isSend" @click="sendText"><img src="@/assets/img/emoji/rocket.png" alt="" /></el-button></div></div></div>
</template><script>
import { animation } from "@/util/util";
import { getChatMsg, chatgpt } from "@/api/getData";import HeadPortrait from "@/components/HeadPortrait";
import Emoji from "@/components/Emoji";
import FileCard from "@/components/FileCard.vue";
export default {components: {HeadPortrait,Emoji,FileCard,},props: {frinedInfo: Object,default() {return {};},},watch: {frinedInfo() {this.getFriendChatMsg();},},data() {return {chatList: [],inputMsg: "",showEmoji: false,friendInfo: {},srcImgList: [],isSend: false,};},mounted() {this.getFriendChatMsg();},methods: {//获取聊天记录getFriendChatMsg() {let params = {frinedId: this.frinedInfo.id,};getChatMsg(params).then((res) => {console.error("333", res);this.chatList = res;// this.chatList.forEach((item) => {// if (item.chatType == 2 && item.extend.imgType == 2) {//   this.srcImgList.push(item.msg);// }// });this.scrollBottom();});},//发送信息sendMsg(msgList) {this.chatList.push(msgList);this.scrollBottom();},//获取窗口高度并滚动至最底层scrollBottom() {this.$nextTick(() => {const scrollDom = this.$refs.chatContent;animation(scrollDom, scrollDom.scrollHeight - scrollDom.offsetHeight);});},//关闭标签框clickEmoji() {this.showEmoji = !this.showEmoji;},//发送文字信息sendText() {if (this.inputMsg) {let chatMsg = {headImg: require("@/assets/img/head_portrait.jpg"),name: "",time: new Date().toLocaleTimeString(),msg: this.inputMsg,chatType: 0, //信息类型,0文字,1图片uid: "1001", //uid};this.sendMsg(chatMsg);this.$emit("personCardSort", this.frinedInfo.id);this.inputMsg = "";let data = {//       prompt: chatMsg.msg,//       temperature: 1,//       top_p: 1,//       // model: "text-davinci-003",//       max_tokens: 2048,//       frequency_penalty: 0,//       "model": "gpt-3.5-turbo",// "messages": [{"role": "user", "content": "Hello!"}],//       presence_penalty: 0,//       stop: ["Human:", "AI:"],model: "gpt-3.5-turbo",messages: [{ role: "user", content: chatMsg.msg }],};this.loading = true;this.isSend = true;let chatGPT = {headImg: require("@/assets/img/head_portrait1.jpg"),name: "小五",time: new Date().toLocaleTimeString(),msg: "",images: [],chatType: 0, //信息类型,0文字,1图片uid: "1002", //uid};this.sendMsg(chatGPT);chatgpt(data).then((res) => {this.isSend = false;if (res.data) {this.chatList[this.chatList.length - 1].images=[];console.error("555", this.chatList);this.chatList[this.chatList.length - 1].type = 1;this.chatList[this.chatList.length - 1].images.push(res.data[0].url);} else {this.chatList[this.chatList.length - 1].msg =res.choices[0].message.content;}});} else {this.$message({message: "消息不能为空哦~",type: "warning",});}},//发送表情sendEmoji(msg) {let chatMsg = {headImg: require("@/assets/img/head_portrait.jpg"),name: "大毛是小白",time: new Date().toLocaleTimeString(),msg: msg,chatType: 1, //信息类型,0文字,1图片extend: {imgType: 1, //(1表情,2本地图片)},uid: "1001",};this.sendMsg(chatMsg);this.clickEmoji();},//发送本地图片sendImg(e) {let _this = this;console.log(e.target.files);let chatMsg = {headImg: require("@/assets/img/head_portrait.jpg"),name: "大毛是小白",time: "09:12 AM",msg: "",chatType: 1, //信息类型,0文字,1图片, 2文件extend: {imgType: 2, //(1表情,2本地图片)},uid: "1001",};let files = e.target.files[0]; //图片文件名if (!e || !window.FileReader) return; // 看是否支持FileReaderlet reader = new FileReader();reader.readAsDataURL(files); // 关键一步,在这里转换的reader.onloadend = function () {chatMsg.msg = this.result; //赋值_this.srcImgList.push(chatMsg.msg);};this.sendMsg(chatMsg);e.target.files = null;},//发送文件sendFile(e) {let chatMsg = {headImg: require("@/assets/img/head_portrait.jpg"),name: "大毛是小白",time: "09:12 AM",msg: "",chatType: 2, //信息类型,0文字,1图片, 2文件extend: {fileType: "", //(1word,2excel,3ppt,4pdf,5zpi, 6txt)},uid: "1001",};let files = e.target.files[0]; //图片文件名chatMsg.msg = files;console.log(files);if (files) {switch (files.type) {case "application/msword":case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":chatMsg.extend.fileType = 1;break;case "application/vnd.ms-excel":case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":chatMsg.extend.fileType = 2;break;case "application/vnd.ms-powerpoint":case "application/vnd.openxmlformats-officedocument.presentationml.presentation":chatMsg.extend.fileType = 3;break;case "application/pdf":chatMsg.extend.fileType = 4;break;case "application/zip":case "application/x-zip-compressed":chatMsg.extend.fileType = 5;break;case "text/plain":chatMsg.extend.fileType = 6;break;default:chatMsg.extend.fileType = 0;}this.sendMsg(chatMsg);e.target.files = null;}},// 发送语音telephone() {this.$message("敬请期待一下吧~🥳");},//发送视频video() {this.$message("敬请期待一下吧~🥳");},},
};
</script><style lang="scss" scoped>
.flash_cursor {width: auto;height: 30px;display: inline-block;background: #d6e3f5;opacity: 1;animation: glow 800ms ease-out infinite alternate;
}@keyframes glow {0% {opacity: 1;}25% {opacity: 0.5;}50% {opacity: 0;}75% {opacity: 0.5;}100% {opacity: 1;}
}.chat-window {width: 100%;height: 100%;margin: 0 auto;position: relative;.top {margin-bottom: 20px;&::after {content: "";display: block;clear: both;}.head-pic {float: left;}.info-detail {float: left;margin: 5px 20px 0;.name {font-size: 20px;font-weight: 600;color: #fff;}.detail {color: #9e9e9e;font-size: 12px;margin-top: 2px;}}.other-fun {float: right;margin-top: 20px;span {margin-left: 30px;cursor: pointer;}// .icon-tupian {// }input {display: none;}}}.botoom {width: 100%;height: 70vh;background-color: rgb(50, 54, 68);border-radius: 20px;padding: 20px;box-sizing: border-box;position: relative;.chat-content {width: 100%;height: 85%;overflow-y: scroll;padding: 20px;box-sizing: border-box;&::-webkit-scrollbar {width: 0;/* Safari,Chrome 隐藏滚动条 */height: 0;/* Safari,Chrome 隐藏滚动条 */display: none;/* 移动端、pad 上Safari,Chrome,隐藏滚动条 */}.chat-wrapper {position: relative;word-break: break-all;.chat-friend {width: 100%;float: left;margin-bottom: 20px;display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;.chat-text {max-width: 90%;padding: 20px;border-radius: 20px 20px 20px 5px;background-color: rgb(56, 60, 75);color: #fff;&:hover {background-color: rgb(39, 42, 55);}pre {white-space: break-spaces;}}.chat-img {img {width: 100px;height: 100px;}}.info-time {margin: 10px 0;color: #fff;font-size: 14px;img {width: 30px;height: 30px;border-radius: 50%;vertical-align: middle;margin-right: 10px;}span:last-child {color: rgb(101, 104, 115);margin-left: 10px;vertical-align: middle;}}}.chat-me {width: 100%;float: right;margin-bottom: 20px;position: relative;display: flex;flex-direction: column;justify-content: flex-end;align-items: flex-end;.chat-text {float: right;max-width: 90%;padding: 20px;border-radius: 20px 20px 5px 20px;background-color: rgb(29, 144, 245);color: #fff;&:hover {background-color: rgb(26, 129, 219);}}.chat-img {img {max-width: 300px;max-height: 200px;border-radius: 10px;}}.info-time {margin: 10px 0;color: #fff;font-size: 14px;display: flex;justify-content: flex-end;img {width: 30px;height: 30px;border-radius: 50%;vertical-align: middle;margin-left: 10px;}span {line-height: 30px;}span:first-child {color: rgb(101, 104, 115);margin-right: 10px;vertical-align: middle;}}}}}.chatInputs {width: 100%;position: absolute;bottom: 0;margin: 0 auto;align-items: center;display: flex;padding-bottom: 15px;.boxinput {width: 50px;height: 50px;background-color: rgb(66, 70, 86);border-radius: 15px;border: 1px solid rgb(80, 85, 103);position: relative;cursor: pointer;img {width: 30px;height: 30px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);}}.emoji {transition: 0.3s;&:hover {background-color: rgb(46, 49, 61);border: 1px solid rgb(71, 73, 82);}}.inputs {width: 70%;height: 50px;background-color: rgb(66, 70, 86);border-radius: 15px;border: 2px solid rgb(34, 135, 225);padding: 10px;box-sizing: border-box;transition: 0.2s;margin-right: 10px;font-size: 20px;color: #fff;font-weight: 100;&:focus {outline: none;}}.send {background-color: rgb(29, 144, 245);border: 0;transition: 0.3s;box-shadow: 0px 0px 5px 0px rgba(0, 136, 255);&:hover {box-shadow: 0px 0px 10px 0px rgba(0, 136, 255);}}}}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6591.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用ChatGPT提高代码质量的5种方法

本文首发于公众号&#xff1a;更AI (power_ai)&#xff0c;欢迎关注&#xff0c;编程、AI干货及时送! 5个可以提升你日常工作效率的ChatGPT特性 如何利用它提高代码质量 **ChatGPT已经彻底改变了开发代码的方式。**然而&#xff0c;大多数软件开发人员和数据专业人员仍然没有使…

chatGPT学习---Transformer代码实现1

这里写自定义目录标题 1. 创建词汇表2. 创建数据集3. Bigram语言模型4. 代码生成5. 网络训练 为了更好的理解Transformer的概念&#xff0c;我们可以自己动手来实现一个小型的Transformer。在这里&#xff0c;我们以最近大火的能写代码的chatGPT为例&#xff0c;自己动手写一个…

chatgpt—R语言合并站点经纬度信息并存为shp

问题概述&#xff1a;已有某地区站点数据&#xff0c;只有站点名称以及相应变量&#xff1b;另有较多站点数据&#xff0c;有站点名称&#xff0c;站号&#xff0c;经纬度信息&#xff0c;需要对该地区站点数据匹配站号以及经纬度信息&#xff0c;然后存为shp&#xff0c;最后叠…

写一个用r语言分层抽样算积分的代码——chatgpt版

目录 一、写一个用r语言分层抽样算积分的代码二、写一个用r语言分层抽样f(x)exp(x)算积分的代码三、写一个用r语言分别用随机投点法、平均估计法重要抽样法和分层抽样计算f(x)exp(x)积分的代码四、写一个用r语言分别用随机投点法、平均估计法重要抽样法和分层抽样计算f(x)exp(x…

当ChatGPT遇上Stable Diffusion

之前有在前面的图文和大家分享过stable diffusion--二次元福利 (qq.com)&#xff0c;缺点就是prompt很难准确的把握&#xff0c;受限于自己的文字表达能力&#xff0c;以及中英文对照不恰当。 最近出现了让很多人都疯狂的AIGC模型ChatGPT&#xff0c;一个由OpenAI训练的大型语言…

FastAPI重定向给出方法不允许的错误

Fastapi渲染页面模板&#xff1a; 设置一个列表&#xff0c;放置待处理事项&#xff1a; template Jinja2Templates("pages")todos ["写日记", "看电影", "玩游戏"]设置循环体&#xff0c;对列表进行展示 <body><h1>…

遇到的一个重定向次数过多的问题

如图,次数过多一般就是死循环 当时虽然考虑过这一点 但只是在代码上做过考量 并没有想到Global会进来好多次 后来想到了 因为地址会不断刷新. 这点挺重要的,也是官网上搜了一些关于重定向的含义和使用以及区别等等才想到的. 转载于:https://www.cnblogs.com/sunshine-wy/p/7194…

访问后台出现重定向次数过多该怎么办?-建站需知

背景 在我安装使用https协议之后&#xff0c;打开后台才出现的此类情况&#xff0c;想到了几种可能的原因及解决方法&#xff0c;分享出来帮助遇到同样问题的你。 什么是重定向 重定向是一种特殊的页面&#xff0c;使得人们在输入该名称进入条目或者点击指向该名称的内部链接…

两条命令搞定 ChatGPT API 的调用问题

自2022年11月30日 OpenAI 发布 ChatGPT 以来&#xff0c;虽然时有唱衰的声音出现&#xff0c;但在OpenAI不断推陈出新&#xff0c;陆续发布了OpenAPI、GPT-4、ChatGPT Plugins之后&#xff0c;似乎让大家看到了一个聊天机器人往操作系统入口进军的升纬之路。 ChatGPT能被认为是…

xxxxx.com 将您重定向次数过多

** 重定向次数过多 ** 在C#的学习中再配置了iis站点&#xff0c;引入项目之后&#xff0c;在浏览器输入域名显示该错误&#xff0c; 首先根据提示&#xff0c;清楚缓存之后仍然没有用&#xff0c;可能是自己的Login与Main冲突&#xff0c;形成不断重定向的死循环&#xff0c;…

将您的重定向次数过多

在使用spring security框架实现安全访问控制时出现异常&#xff0c;如图&#xff1a; 这个问题的根本原因时网页跳转中出现了死循环&#xff0c;在登录项我们需要设置security“none”&#xff0c;如&#xff1a; <http pattern"/login.html" securyty"non…

ChatGPT专业应用:生成产品分析

正文共 903 字&#xff0c;阅读大约需要 5 分钟 产品经理必备技巧&#xff0c;您将在5分钟后获得以下超能力&#xff1a; 生成产品分析 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c;一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者 …

ChatGPT 的背后:OpenAI 创始人Sam Altman如何用微软的数十亿美元打造了全球最热门技术...

内容来自 MoPaaS 编者按&#xff1a; ChatGPT产生的影响还在继续&#xff0c;ChatGPT 以及其创造者 OpenAI 背后的故事却鲜为人知。OpenAI 是怎样偏离其初心坚持商业化&#xff1f;凭什么 Altman可以让微软早期押注他们? OpenAI原来的安全团队为什么分家与他们分庭抗争&#x…

李开复加入“中文版 ChatGPT”大战:宣布筹组新公司,招募世界级人才!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 刚过去的一周&#xff0c;对于技术圈而言&#xff0c;实在是太“热闹”了&#xff1a; OpenAI 发布史上最强模型 GPT-4&#xff0c;谷歌开放大语言模型 PaLM API&#xff0c;百度「文心一言」正式亮相…

ChatGPT让Nature一周发两文探讨:学术圈使用不可避免,是时候明确使用规范

明敏 发自 凹非寺量子位 | 公众号 QbitAI 在科技巨头为了ChatGPT大打出手的另一边&#xff0c;学术圈对于ChatGPT的关注也在升高。 一周时间内&#xff0c;Nature连发两篇文章探讨ChatGPT及生成式AI。 毕竟ChatGPT最早还是在学术圈内掀起风浪&#xff0c;先后有学者拿它写论文摘…

chatgpt赋能python:用Python写优质SEO文章的方法

用Python写优质SEO文章的方法 Python语言是当前广泛应用于程序开发的最流行的高级编程语言之一。Python能够通过结构化和面向对象编程的方式&#xff0c;帮助开发者快速地开发各种类型的应用程序。但是&#xff0c;Python的使用不仅限于程序开发。最近&#xff0c;Python在SEO…

ChatGPT专业应用:撰写英文SEO文章

正文共 561 字&#xff0c;阅读大约需要 2 分钟 品牌营销/活动运营必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 快速生成英文SEO文章 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Alice 编辑者 |…

如何用Chatgpt来做SEO?分享3个技巧

目录 一、使用prompt(引导词)一键生成关键词 &#xff08;一&#xff09;案例&#xff1a;关键词调研 &#xff08;二&#xff09;案例&#xff1a;翻译关键词列表 &#xff08;三&#xff09;使用chatgpt进行关键词调研的局限性 1.真实性待验证 2.时效性有限 二、在Goo…

ChatGPT会颠覆SEO内容创作吗

近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能&#xff0c;我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说&#xff0c;高质量内容创作是 SEO 最难的事之一&#xff0c;对某些网站来说&#xff0c;如果能有工具帮助&#xff…

「译文」用ChatGPT助力SEO工作

大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 那些使用ChatGPT的先进人士&#xff0c;也没还能完全掌握它内容生成的能力&#xff0c;特别是像博客那样的长文写作能力。 现在&#xff0c;跟大家介绍 一下SEO优…