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 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 余额不足时,友好提示用户充值。

五、注意事项

  1. API 密钥安全:插件配置中的 API Key 属于敏感信息,需确保 EyouCMS 后台仅管理员可访问,避免密钥泄露导致被盗用。
  1. 调用频率限制:DeepSeek API 可能有调用频率限制,高并发场景下需添加请求队列或限流机制。
  1. 内容合规性:AI 生成的内容可能存在合规风险,需在插件中提示用户对内容进行审核后再发布,避免违反平台规则。
  1. 版本兼容性:EyouCMS 版本更新可能导致插件钩子失效,需定期测试插件在新版本中的兼容性。
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐