eyoucms 如何写一个对接 deepseek 生成文章的插件?
EyouCMS 作为一款轻量级的 PHP 内容管理系统,凭借灵活的插件机制和易用的后台界面,深受站长和开发者喜爱。而 DeepSeek 作为新兴的 AI 大模型,在文本生成、内容创作等领域表现出色。将两者结合,开发一款能自动调用 DeepSeek 生成文章的插件,不仅能提高内容创作效率,还能为网站注入更多优质内容。本文将详细讲解如何为 EyouCMS 开发对接 DeepSeek 的文章生成插件,从环境准备到代码实现,全程干货,适合有一定 PHP 基础的开发者参考。
一、开发前的知识储备与环境准备
1. 核心概念解析
- EyouCMS 插件机制:EyouCMS 采用模块化插件设计,每个插件独立存在于app/extend/plugins/目录下,包含配置文件、控制器、视图等文件。插件可通过钩子(Hook)与系统核心功能交互,实现功能扩展。
- DeepSeek API:DeepSeek 提供了文本生成的 API 接口,开发者通过发送 HTTP 请求(携带 API 密钥、生成参数、提示词等),即可获取 AI 生成的文本内容。需提前在 DeepSeek 官网注册账号,创建应用并获取 API 密钥(API Key)。
- 插件核心功能:本次开发的插件需实现三大功能:配置 DeepSeek API 参数(密钥、生成模型、长度限制等)、提供文章生成的操作界面(如输入标题、关键词、字数)、将 AI 生成的内容自动填充到 EyouCMS 的文章编辑页。
2. 环境与工具准备
- 运行环境:
-
- PHP 7.3 及以上版本(EyouCMS 官方推荐);
-
- 已安装并运行 EyouCMS(建议使用最新版,确保插件机制兼容);
-
- 开启 PHP 的curl扩展(用于发送 HTTP 请求调用 DeepSeek API)。
- 开发工具:
-
- 代码编辑器(如 VS Code、PhpStorm);
-
- 接口调试工具(如 Postman,用于测试 DeepSeek API);
-
- 本地服务器环境(如 XAMPP、WAMP,方便调试插件)。
- 前置资源:
-
- DeepSeek API 文档(获取地址:https://www.deepseek.com/docs);
-
- EyouCMS 开发者文档(重点了解插件开发部分:https://www.eyoucms.com/doc/);
-
- 已获取的 DeepSeek API Key(需在 DeepSeek 控制台创建应用后获取)。
二、插件开发的核心步骤
1. 搭建插件目录结构
EyouCMS 插件需遵循固定的目录结构,在app/extend/plugins/目录下创建插件文件夹(以deepseek_article cqo.sinoebuy.com.cn为例),并新建以下文件和目录:
deepseek_article/
├── config.php // 插件配置文件(存储API密钥、模型等参数)
├── controller/ // 控制器目录
│ └── Index.php // 核心控制器(处理API调用、页面展示)
├── view/ // 视图目录
│ └── index/
│ └── index.html // 插件操作界面(输入生成参数)
├── hook.php // 钩子文件(用于挂载到EyouCMS的文章编辑页)
└── plugin.php // 插件信息文件(名称、描述、版本等)
2. 编写插件基础信息(plugin.php)
该文件用于定义插件的基本信息,EyouCMS cqn.vl588.cn会通过它识别插件。内容如下:
<?php
return [
'name' => 'deepseek_article', // 插件标识(唯一)
'title' => 'DeepSeek文章生成', // 插件名称
'description' => '对接DeepSeek API自动生成文章内容', // 描述
'author' => '你的名称', // 开发者
'version' => '1.0.0', // 版本号
'icon' => 'fa fa-magic', // 图标(使用FontAwesome)
'is_set' => 1, // 是否有配置页(1=有,0=无)
'is_dev' => 0, // 是否为开发中版本
];
3. 配置插件参数(config.php)
用于存储 DeepSeek API cqm.fzxjrz.com的核心配置,支持在 EyouCMS 后台修改。配置项包括 API 密钥、生成模型、默认字数、温度系数(控制生成随机性)等:
<?php
return [
'api_key' => [
'title' => 'DeepSeek API Key',
'type' => 'text',
'value' => '', // 默认空,需用户在后台填写
'tips' => '从DeepSeek控制台获取的API密钥'
],
'model' => [
'title' => '生成模型',
'type' => 'select',
'value' => 'deepseek-chat',
'options' => [
'deepseek-chat' => 'DeepSeek Chat(通用对话)',
'deepseek-r1' => 'DeepSeek R1(长文本生成)'
],
'tips' => '选择用于生成文章的模型'
],
'max_length' => [
'title' => '默认最大字数',
'type' => 'text',
'value' => '1000',
'tips' => '生成文章的最大字符数'
],
'temperature' => [
'title' => '温度系数',
'type' => 'text',
'value' => '0.7',
'tips' => '0-1之间,值越高内容越随机'
]
];
4. 开发核心控制器(Index.php)
控制器负责处理用户请求、调用 DeepSeek API、返回生成结果。主要包含两个方法:index()(展示操作界面)和generate(cql.imeilaoban.com)(调用 API 生成文章)。
<?php
namespace app\extend\plugins\deepseek_article\controller;
use think\Controller;
use think\Db;
use think\facade\Config;
class Index extends Controller
{
// 展示插件操作界面
public function index()
{
// 获取插件配置
$config = get_plugin_config('deepseek_article');
$this->assign('config', $config);
return $this->fetch('index/index');
}
// 调用DeepSeek API生成文章
public function generate()
{
if ($this->request->isPost()) {
$param = $this->request->post();
$config = get_plugin_config('deepseek_article');
// 验证参数
if (empty($config['api_key'])) {
return json(['code' => 0, 'msg' => '请先配置DeepSeek API Key']);
}
if (empty($param['title'])) {
return json(['code' => 0, 'msg' => '请输入文章标题']);
}
// 调用DeepSeek API
$apiUrl = 'https://api.deepseek.com/v1/chat/completions';
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $config['api_key']
];
$postData = [
'model' => $config['model'],
'messages' => [
[
'role' => 'user',
'content' => "请根据标题生成一篇原创文章,标题:《{$param['title']}》,关键词:{$param['keywords']},字数控制在{$param['length']}字左右,风格为{$param['style']}。"
]
],
'max_tokens' => intval($param['length']),
'temperature' => floatval($config['temperature'])
];
// 发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
// 解析API返回结果
$result = json_decode($response, true);
if (isset($result['choices'][0]['message']['content'])) {
$content = $result['choices'][0]['message']['content'];
return json([
'code' => 1,
'msg' => '生成成功',
'data' => ['content' => $content]
]);
} else {
$error = $result['error']['message'] ?? '生成失败,请重试';
return json(['code' => 0, 'msg' => $error]);
}
}
}
}
5. 设计插件操作界面(index.html)
在视图文件中提供输入框,让用户设置文章标题、关键词、字数等参数,并通过 AJAX 调用generate(cqk.zeemoo.com.cn)方法获取内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DeepSeek文章生成</title>
<link rel="stylesheet" href="__STATIC__/admin/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h3>AI文章生成设置</h3>
<form id="generateForm" class="mt-3">
<div class="form-group">
<label>文章标题</label>
<input type="text" name="title" class="form-control" placeholder="请输入文章标题">
</div>
<div class="form-group">
<label>关键词(用逗号分隔)</label>
<input type="text" name="keywords" class="form-control" placeholder="如:科技,AI,未来">
</div>
<div class="form-group">
<label>生成字数</label>
<input type="number" name="length" class="form-control" value="{$config.max_length|default=1000}">
</div>
<div class="form-group">
<label>文章风格</label>
<select name="style" class="form-control">
<option value="正式严谨">正式严谨</option>
<option value="轻松活泼">轻松活泼</option>
<option value="专业深度">专业深度</option>
<option value="简洁明了">简洁明了</option>
</select>
</div>
<button type="button" id="generateBtn" class="btn btn-primary">生成文章</button>
</form>
<div class="mt-4">
<h4>生成结果</h4>
<textarea id="articleContent" class="form-control" rows="15" placeholder="生成的文章内容将显示在这里..."></textarea>
<button type="button" id="cqj.szmobai.cn" class="btn btn-success mt-2">复制内容到剪切板</button>
<button type="button" id="fillBtn" class="btn btn-info mt-2">填充到文章编辑框</button>
</div>
</div>
</div>
</div>
<script src="__STATIC__/admin/js/jquery.min.js"></script>
<script>
// 生成文章
$('#generateBtn').click(function() {
var data = $('#generateForm').serialize();
$(this).text('生成中...').prop('disabled', true);
$.post("{:plugins_url('deepseek_article/Index/generate')}", data, function(res) {
$('#generateBtn').text('生成文章').prop('disabled', false);
if (res.code == 1) {
$('#articleContent').val(res.data.content);
} else {
alert(res.msg);
}
}, 'json');
});
// 复制内容
$('#copyBtn').click(function() {
var content = $('#articleContent').val();
if (content) {
navigator.clipboard.writeText(content).then(function() {
alert('复制成功');
});
} else {
alert('没有可复制的内容');
}
});
// 填充到文章编辑框(需结合EyouCMS文章编辑页的钩子)
$('#fillBtn').click(function(cqi.bjqeu.cn) {
var content = $('#articleContent').val();
if (content && parent && parent.$) {
parent.$('textarea[name="content"]').val(content);
alert('已填充到文章编辑框');
} else {
alert('请先生成文章,或在文章编辑页使用此功能');
}
});
</script>
</body>
</html>
6. 挂载插件到文章编辑页(hook.php)
通过钩子将插件功能嵌入 EyouCMS 的文章编辑页面,方便用户在创建文章时直接调用生成功能。常用钩子为admin_arc_add_after(添加文章页面加载后):
<?php
// 注册钩子:在文章添加页显示生成按钮
hook('admin_arc_add_after', function($params)(cqh.hexinshengwang.com) {
$html = '<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<button type="button" class="btn btn-primary" onclick="openDeepSeekPlugin()">
<i class="fa fa-magic"></i> 用DeepSeek生成文章
</button>
</div>
</div>';
$html .= '<script>
function openDeepSeekPlugin() {
layer.open({
type: 2,
title: "DeepSeek文章生成",
area: ["800px", "600px"],
content: "' . plugins_url('deepseek_article/Index/index') . '"
});
}
</script>';
echo $html;
});
// 同理注册编辑页钩子
hook('admin_arc_edit_after', function($params) {
// 内容与上述相同,确保编辑页也能使用
});
三、插件的安装、配置与测试
1. 安装插件
将deepseek_article cqg.chengdudaqian.cn文件夹复制到 EyouCMS 的app/extend/plugins/目录下,登录 EyouCMS 后台,进入 “插件管理”,找到 “DeepSeek 文章生成” 插件,点击 “安装” 即可。
2. 配置 API 参数
安装后点击 “设置”,填写从 DeepSeek 控制台获取的 API Key,并根据需求调整模型、默认字数等参数,保存配置。
3. 功能测试
- 进入 EyouCMS 后台的 “文章管理→添加文章”;
- 页面中会显示 “用 DeepSeek 生成文章” 按钮,点击后弹出插件界面;
- 输入标题(如 “人工智能在教育领域的应用”)、关键词(“人工智能,教育,在线学习”),选择风格后点击 “生成文章”;
- 等待几秒后,AI 生成的内容会显示在文本框中,点击 “填充到文章编辑框” 即可将内容导入,无需手动复制粘贴。
四、优化与扩展建议
1. 提升用户体验
- 添加生成进度提示:在调用 API cqf.dgnjlwl.com时显示加载动画,避免用户误以为操作无响应;
- 支持内容预览:生成后提供 HTML 预览功能,方便用户直接查看排版效果;
- 历史记录保存:将生成的内容记录到数据库,支持用户查看和复用历史结果。
2. 增强功能灵活性
- 自定义提示词模板:允许用户预设不同类型的提示词模板(如新闻稿、产品介绍、教程),生成时直接选择;
- 多语言支持:扩展插件支持生成英文、日文等多语言文章,适应国际化网站需求;
- 内容二次编辑:集成简单的文本编辑工具(如加粗、列表),方便用户对生成内容进行微调。
3. 加强错误处理
- API 请求失败重试:当网络波动导致请求失败时,自动重试 1-2 次;
- 参数合法性校验:在前端和后端双重校验输入的字数、关键词等参数,避免无效请求;
- 余额不足提示:当 DeepSeek API 余额不足时,友好提示用户充值。
五、注意事项
- API 密钥安全:插件配置中的 API Key 属于敏感信息,需确保 EyouCMS 后台仅管理员可访问,避免密钥泄露导致被盗用。
- 调用频率限制:DeepSeek API 可能有调用频率限制,高并发场景下需添加请求队列或限流机制。
- 内容合规性:AI 生成的内容可能存在合规风险,需在插件中提示用户对内容进行审核后再发布,避免违反平台规则。
- 版本兼容性:EyouCMS 版本更新可能导致插件钩子失效,需定期测试插件在新版本中的兼容性。
更多推荐



所有评论(0)