passionweb / ai-seo-helper
使用AI根据内容生成SEO元数据。目前可以通过EXT:news的对应输入字段旁边的额外按钮生成EXT:news的页面和文章的多个元数据。
Requires
- typo3/cms-backend: ^10.4 | ^11.5 | ^12.4
- typo3/cms-core: ^10.4 | ^11.5 | ^12.4
Replaces
- typo3-ter/ai-seo-helper: 0.6.2
README
使用AI根据页面内容生成SEO元数据。目前,可以生成页面属性的元描述、关键词、页面标题、Open Graph和Twitter数据(标题和描述)。
此外,还可以为EXT:news的文章生成替代标题建议、描述建议和关键词。
通过在对应输入字段旁边的额外按钮,您可以生成特定的建议/数据。
安装
通过composer添加
composer require "passionweb/ai-seo-helper"
- 通过composer安装扩展
- 刷新TYPO3和PHP缓存
- 在开始使用扩展之前,将您的OpenAI密钥添加到扩展配置中
通过TER添加
如果您想通过TER安装扩展,可以在此处找到详细说明here.
- 通过TER安装扩展
- 刷新TYPO3和PHP缓存
- 在开始使用扩展之前,将您的OpenAI密钥添加到扩展配置中
更多信息
有关安装扩展的不同方式和附加详细信息的说明,请参阅此处.
需求
您需要一个OpenAI账户和API密钥。如果您还没有创建账户或密钥,您可以使用以下链接进行创建。
来源:创建OpenAI账户
来源:创建API密钥
关于数据生成的通用信息
当前扩展支持GPT-3.5模型和GPT-4模型。不支持模型快照。请注意,“GPT-4”模型使用时可能存在限制(见使用GPT-4模型时可能存在的限制)。
根据您的具体需求,不同的模型可能会导致不同的结果(包括质量方面)。此外,还可以修改其他参数来进一步指定OpenAI请求。您可以在扩展设置中调整不同的模型以及大多数支持的请求参数(详细说明请在此处找到)。
为页面属性生成数据
生成元描述(建议)
在元描述文本框旁边添加了一个额外的按钮。当您点击此按钮时,所选页面的(文本)内容将被生成,并且您将获得AI辅助的元描述建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备元描述建议。如果您更改提示前缀且没有返回项目符号列表,则可能在此处出现显示问题。如果您在扩展程序配置中将选项showRawMetaDescriptionSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的元描述。
有时AI会返回超出元描述允许的最大长度的文本。为了额外检查元描述的长度,可以使用例如“Yoast SEO for TYPO3”扩展程序或各种在线工具。
生成关键词
在关键词文本框旁边添加了一个额外的按钮。当您点击此按钮时,所选页面的(文本)内容将被生成,并且AI辅助创建尽可能合适的关键词。目前,页面在后台不能被禁用。根据页面大小,此过程可能需要几秒钟。然而,使用通知显示适当的信息。
生成页面标题(建议)
在SEO标题文本框旁边添加了一个额外的按钮。当您点击此按钮时,所选页面的(文本)内容将被生成,并且您将获得AI辅助的页面标题建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备页面标题建议。如果您更改提示前缀且没有返回项目符号列表,则可能在此处出现显示问题。如果您在扩展程序配置中将选项showRawPageTitleSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的页面标题。
生成Open Graph标题(建议)
在Open Graph标题文本框旁边添加了一个额外的按钮。当您点击此按钮时,所选页面的(文本)内容将被生成,并且您将获得AI辅助的Open Graph标题建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备Open Graph标题建议。如果您更改提示前缀且没有返回项目符号列表,则可能在此处出现显示问题。如果您在扩展程序配置中将选项showRawOgTitleSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的Open Graph标题。
生成Open Graph描述(建议)
在Open Graph描述文本框旁边添加了一个额外的按钮。当您点击此按钮时,所选页面的(文本)内容将被生成,并且您将获得AI辅助的Open Graph描述建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备Open Graph描述建议。如果您更改提示前缀且没有返回项目符号列表,则可能在此处出现显示问题。如果您在扩展程序配置中将选项showRawOgDescriptionSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的Open Graph描述。
生成Twitter标题(建议)
在Twitter标题文本字段旁边添加了一个额外的按钮。点击此按钮后,将生成所选页面的(文本)内容,并借助AI获得Twitter标题建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备Twitter标题建议。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。如果您在扩展程序配置中将选项showRawTwitterTitleSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的Twitter标题。
生成Twitter描述(建议)
在Twitter描述文本字段旁边添加了一个额外的按钮。点击此按钮后,将生成所选页面的(文本)内容,并借助AI获得Twitter描述建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备Twitter描述建议。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。如果您在扩展程序配置中将选项showRawTwitterDescriptionSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的Twitter描述。
使用页面标题建议作为Open Graph和Twitter标题
自版本0.5.0起,您可以将所选页面标题建议复制到Open Graph和Twitter标题字段(可在“社交媒体”选项卡中找到)。因此,您必须在扩展程序设置中启用选项pageTitleForOgAndTwitter
。如果选择页面标题,内容也将复制到字段og_title
和twitter_title
中。
使用元描述建议作为Open Graph和Twitter描述
自版本0.5.0起,您可以将所选元描述建议复制到Open Graph和Twitter描述字段(可在“社交媒体”选项卡中找到)。因此,您必须在扩展程序设置中启用选项metaDescriptionForOgAndTwitter
。如果选择元描述,内容也将复制到字段og_description
和twitter_description
中。
为EXT:news文章生成数据
自版本0.6.0起,增加了与EXT:news的兼容性。目前,可以生成以下元数据
生成元描述(建议)
在元描述文本字段旁边添加了一个额外的按钮。点击此按钮后,将生成所选新闻文章的(文本)内容,并借助AI获得元描述建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备元描述建议。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。如果您在扩展程序配置中将选项showRawNewsMetaDescriptionSuggestions
设置为true,则可以输出原始内容并通过复制/粘贴选择您喜欢的元描述。
有时AI会返回超出元描述允许的最大长度的文本。为了额外检查元描述的长度,可以使用例如“Yoast SEO for TYPO3”扩展程序或各种在线工具。
生成关键词
在关键词文本字段旁边添加了一个额外的按钮。点击此按钮后,将生成所选新闻文章的(文本)内容,并借助AI创建尽可能合适的关键词。目前,页面必须在后台未禁用。根据页面大小,该过程可能需要几秒钟。但是,将使用通知来显示适当的信息。
生成替代标题(建议)
在替代标题文本字段旁边添加了一个额外的按钮。当您点击此按钮时,将生成所选新闻文章的(文本)内容,并借助AI获得替代标题建议。默认情况下,扩展程序以可通过单选按钮选择的方式准备替代标题建议。如果您更改提示前缀且没有返回项目符号列表,则可能会出现显示问题。如果将扩展程序配置中的 showRawNewsAlternativeTitleSuggestions
设置为 true,则可以输出原始内容并通过复制/粘贴选择您最喜欢的页面标题。
以两种不同的方式获取结果
从版本 0.3.0 开始,您有两种不同的选项来生成所需的数据。这两种变体都添加了一个 "语言后缀",以获得分析页面/内容的语言响应。
根据文本分析页面内容
如前所述,此选项主要受 OpenAI 请求允许的字符长度的限制。此外,使用此方法需要相对较多的令牌。
以下设置是必要的
- 在扩展程序设置中禁用
useUrlForRequest
选项 - 检查语言配置的 ISO 代码是否存在于预定义字段中(如果不存在,可以添加自定义语言,见 "添加自定义语言")。
- 英文中对应提示的定义。
然后,将整个提示从提示前缀(来自扩展程序设置)、页面 URL 和语言后缀(根据页面使用的语言)组合而成。例如,页面标题建议的生成提示如下(对于德语网站)
1. Suggest page title ideas in bullet point list for the following text (content from extension setting `openAiPromptPrefixPageTitle`)
2. in German (language suffix based on the language used on the page)
3. Here comes the page content
Complete:
Suggest page title ideas in bullet point list for the following text in German:
Here comes the page content
通过 URL 分析页面内容
与基于文本的变体相比,此选项使用页面的 URL 来分析所需数据。如果想要使用此变体,则需要以下设置
- 在扩展程序设置中启用
useUrlForRequest
选项 - 检查语言配置的 ISO 代码是否存在于预定义字段中(如果不存在,可以添加自定义语言,见 "添加自定义语言")。
- 英文中对应提示的定义。
然后,将整个提示从提示前缀(来自扩展程序设置)、页面 URL 和语言后缀(根据页面使用的语言)组合而成。例如,页面标题建议的生成提示如下(对于德语网站)
1. Suggest page title ideas in bullet point list for (content from extension setting `openAiPromptPrefixPageTitle`)
2. https://www.example.de/ (page url)
3. in German (language suffix based on the language used on the page)
Complete:
Suggest page title ideas in bullet point list for https://www.example.de/ in German
要求页面是公开可访问的(隐藏页面失败,本地环境中的页面导致结果不佳)。
一个主要优势是,此变体可以节省相当多的 OpenAI 令牌(从而节省成本),因为只需将 URL 发送到 OpenAI 而不是整个页面内容。
扩展程序设置
您可以根据个人需求调整以下参数。在第一次测试后,最佳结果是在预定义值下实现的。然而,这并不能保证这些值也会为您实现最佳结果。
API 密钥
openAiApiKey
# cat=API Key; type=string; label=OpenAI Secret Key
openAiApiKey = YOUR_API_KEY
输入您生成的 OpenAI API 密钥。
基本请求设置
openAiModel
# cat=basic request settings; type=string; label=OpenAI Model
openAiModel = gpt-3.5-turbo
将生成完成的模型的 ID。有关可用的模型概述,请参阅 模型概述。
openAiTemperature
# cat=basic request settings; type=double+; label=OpenAI Temperature
openAiTemperature = 0.5
使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)会使输出更加随机,而较低的值(如 0.2)会使输出更加集中且确定。
openAiMaxTokens
# cat=basic request settings; type=int+; label=OpenAI Max-Tokens
openAiMaxTokens = 275
提示(什么是令牌以及如何计数)的计数加上 max_tokens 不应超过模型的上下文长度。大多数模型的上下文长度为 2048 个令牌(除非是最新型号,它们支持 4096)。
openAiTopP
# cat=basic request settings; type=int+; label=OpenAI Top-P
openAiTopP = 1
温度采样的一种替代方案,称为核采样,其中模型考虑具有最高_p概率质量的标记的结果。因此,0.1表示仅考虑占概率质量前10%的标记。
openAiFrequencyPenalty
# cat=basic request settings; type=double; label=OpenAI Frequency Penalty
openAiFrequencyPenalty = 0.8
介于-2.0和2.0之间的数字。正值根据文本中到目前为止的新标记的现有频率对其进行处罚,降低模型重复相同行文字的可能性。
openAiPresencePenalty
# cat=basic request settings; type=double; label=OpenAI Presence Penalty
openAiPresencePenalty = 0
介于-2.0和2.0之间的数字。正值根据新标记是否出现在文本中对其进行处罚,增加模型谈论新主题的可能性。
useUrlForRequest
# cat=basic request settings; type=boolean; label=Use always URL for requests
useUrlForRequest = 1
元描述
openAiPromptPrefixMetaDescription
# cat=meta description; type=string; label=Prompt-Prefix for meta description suggestions generation
openAiPromptPrefixMetaDescription = Extract five seo meta descriptions in a bullet point list, each seo meta description in one short sentence and with a maximum of 150 characters or less, for the content of
输入您的生成元描述建议的指令。由于OpenAI默认按标记计算内容的长度(有关将标记转换为字符和句子的解释,请参阅此处),我们必须明确告诉AI所需的总体长度和预期的创作类型。
showRawMetaDescriptionSuggestions
#cat=page title; type=boolean; label=Show raw response content of meta description suggestions
showRawMetaDescriptionSuggestions = 0
默认情况下,扩展程序以这种方式准备元描述建议,以便可以通过单选按钮选择。如果您更改提示前缀且未返回项目符号列表,则可能发生显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的元描述。
关键词
openAiPromptPrefixKeywords
# cat=keywords; type=string; label=Prompt-Prefix for keywords generation
openAiPromptPrefixKeywords = Extract seo keywords from this text. Return the result in a comma separated list.
输入您的生成关键词的指令。
replaceTextKeywords
# cat=keywords; type=string; label=Replace first part of generated keywords
replaceTextKeywords = SEO keywords:
OpenAI生成的内容通常附加一个简短介绍。在此,您可以定义应从生成内容中删除的部分。
页面标题
openAiPromptPrefixPageTitle
#cat=page title; type=string; label=Prompt-Prefix for page title suggestions generation
openAiPromptPrefixPageTitle = Suggest page title ideas in bullet point list for this text
输入您的生成页面标题建议的指令(重要:响应必须为项目符号列表,因为那样处理返回结果)。
showRawPageTitleSuggestions
#cat=page title; type=boolean; label=Show raw response content of page title suggestions
showRawPageTitleSuggestions = 0
默认情况下,扩展程序以这种方式准备页面标题建议,以便可以通过单选按钮选择。如果您更改提示前缀且未返回项目符号列表,则可能发生显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的页面标题。
Twitter和OpenGraph
openAiPromptPrefixOgTitle
#cat=open graph; type=string; label=Prompt-Prefix for Open Graph title suggestions generation
openAiPromptPrefixOgTitle = Suggest Open Graph title ideas in bullet point list for this text
输入您的生成Open Graph标题建议的指令(重要:响应必须为项目符号列表,因为那样处理返回结果)。
showRawOgTitleSuggestions
#cat=open graph; type=boolean; label=Show raw response content of Open Graph title suggestions
showRawOgTitleSuggestions = 0
默认情况下,扩展程序以这种方式准备Open Graph标题建议,以便可以通过单选按钮选择。如果您更改提示前缀且未返回项目符号列表,则可能发生显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的Open Graph标题。
openAiPromptPrefixOgDescription
# cat=open graph; type=string; label=Prompt-Prefix for Open Graph description suggestions generation
openAiPromptPrefixOgDescription = Extract five Open Graph descriptions in a bullet point list, each Open Graph description in one short sentence and with a maximum of 150 characters or less, for the content of
输入您的生成Open Graph描述建议的指令。由于OpenAI默认按标记计算内容的长度(有关将标记转换为字符和句子的解释,请参阅此处),我们必须明确告诉AI所需的总体长度和预期的创作类型。
showRawOgDescriptionSuggestions
#cat=open graph; type=boolean; label=Show raw response content of Open Graph description suggestions
showRawOgDescriptionSuggestions = 0
默认情况下,扩展程序以这种方式准备Open Graph描述建议,以便可以通过单选按钮选择。如果您更改提示前缀且未返回项目符号列表,则可能发生显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的Open Graph描述。
openAiPromptPrefixTwitterTitle
#cat=twitter; type=string; label=Prompt-Prefix for Twitter title suggestions generation
openAiPromptPrefixTwitterTitle = Suggest Twitter title ideas in bullet point list for this text
输入您的生成Twitter标题建议的指令(重要:响应必须为项目符号列表,因为那样处理返回结果)。
显示原始Twitter标题建议
#cat=twitter; type=boolean; label=Show raw response content of Twitter title suggestions
showRawTwitterTitleSuggestions = 0
默认情况下,该扩展程序以这种方式准备Twitter标题建议,以便可以通过单选按钮进行选择。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的Twitter标题。
openAiPromptPrefixTwitterDescription
# cat=twitter; type=string; label=Prompt-Prefix for Twitter description suggestions generation
openAiPromptPrefixTwitterDescription = Extract five Twitter descriptions in a bullet point list, each Twitter description in one short sentence and with a maximum of 150 characters or less, for the content of
输入您用于生成Twitter描述建议的指令。由于OpenAI默认使用标记(有关将标记转换为字符和句子的解释,请参阅此处),我们必须明确告诉AI所需的总体长度和预期的创建类型。
显示原始Twitter描述建议
#cat=twitter; type=boolean; label=Show raw response content of Twitter description suggestions
showRawTwitterDescriptionSuggestions = 0
默认情况下,该扩展程序以这种方式准备Twitter描述建议,以便可以通过单选按钮进行选择。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的Twitter描述。
pageTitleForOgAndTwitter
#cat=open graph & twitter; type=boolean; label=Fill Open Graph and Twitter titles
pageTitleForOgAndTwitter = 0
使用所选页面标题建议作为Open Graph和Twitter标题
metaDescriptionForOgAndTwitter
#cat=open graph & twitter; type=boolean; label=Fill Open Graph and Twitter descriptions
metaDescriptionForOgAndTwitter = 0
使用所选元描述建议作为Open Graph和Twitter描述
EXT:news元数据
单条新闻显示页面
# cat=news; type=string; label=Enter the ID of one page that is used as a detail view for news articles of the news extension
singleNewsDisplayPage =
输入用作EXT:news新闻文章详细视图的一个页面的ID。此页面将用于生成BackendPreviewUrl
。
openAiPromptPrefixNewsMetaDescription
# cat=news; type=string; label=Prompt-Prefix for meta description suggestions generation of news article
openAiPromptPrefixNewsMetaDescription = Extract five seo meta descriptions in a bullet point list, each seo meta description in one short sentence and with a maximum of 150 characters or less, for the content of
输入您的生成元描述建议的指令。由于OpenAI默认按标记计算内容的长度(有关将标记转换为字符和句子的解释,请参阅此处),我们必须明确告诉AI所需的总体长度和预期的创作类型。
显示原始新闻元描述建议
# cat=news; type=boolean; label=Show raw response content for meta description suggestions of news article
showRawNewsMetaDescriptionSuggestions = 0
默认情况下,扩展程序以这种方式准备元描述建议,以便可以通过单选按钮选择。如果您更改提示前缀且未返回项目符号列表,则可能发生显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的元描述。
openAiPromptPrefixNewsKeywords
# cat=news; type=string; label=Prompt-Prefix for keywords generation of news article
openAiPromptPrefixKeywords = Extract seo keywords from this news article. Return the result in a comma separated list.
输入您的生成关键词的指令。
替换文本新闻关键词
# cat=news; type=string; label=Replace first part of generated keywords of news article
replaceTextNewsKeywords = SEO keywords:
OpenAI生成的内容通常附加一个简短介绍。在此,您可以定义应从生成内容中删除的部分。
openAiPromptPrefixNewsAlternativeTitle
# cat=news; type=string; label=Prompt-Prefix for alternative title suggestions generation
openAiPromptPrefixNewsAlternativeTitle = Suggest page title ideas in bullet point list for this text
输入您用于生成替代标题建议的指令(重要:响应必须是项目符号列表,因为返回就是这样处理的)。
显示原始新闻替代标题建议
# cat=news; type=boolean; label=Show raw response content of alternative title suggestions of news article
showRawNewsAlternativeTitleSuggestions = 0
默认情况下,该扩展程序以这种方式准备替代标题建议,以便可以通过单选按钮进行选择。如果您更改提示前缀并且没有返回项目符号列表,则此处可能会出现显示问题。使用此选项,您可以输出原始内容并通过复制/粘贴选择您喜欢的替代标题。
使用此选项,您可以使用页面对应的URL进行所有分析。结果,您必须使用更少的标记来执行相应的分析。重要:页面必须公开可访问(隐藏页面会失败,本地环境中的页面会导致结果不佳)
语言后缀是如何确定的?
确定要分析的页面的根页面。基于此,确定使用的ISO代码(来自`config.yaml`相应语言的iso-639-1
字段)。对于传统的ISO代码,已经创建了相应的语言。以下ISO代码和语言已经存储
- 'en' => 'English',
- 'us' => 'English',
- 'gb' => 'English',
- 'de' => 'German',
- 'at' => 'German',
- 'ch' => 'German',
- 'fr' => 'French',
- 'nl' => 'Dutch',
- 'be' => 'Belgian',
- 'es' => 'Spanish',
- 'pl' => 'Polish',
- 'cz' => 'Czech',
- 'sk' => 'Slovak',
- 'si' => 'Slovenian',
- 'ro' => 'Romanian',
- 'ua' => 'Ukrainian',
- 'it' => 'Italian',
- 'se' => 'Swedish',
- 'no' => 'Norwegian',
- 'fi' => 'Finnish',
- 'dk' => 'Danish',
- 'jp' => 'Japanese',
- 'cn' => 'Chinese'
添加自定义语言
如果所需的ISO代码和语言不存在,则可以使用数据记录“自定义语言”创建。用户定义的语言将自动添加(已存在的语言将被用户定义的语言替换)。
扩展逻辑到其他字段
当然,该功能也可以转移到其他目前未考虑到的页面属性上。以下步骤适用于所有文本输入和textarea字段。对于其他字段(例如图片字段)或内容元素内的字段,需要进行额外的调整。
请不要直接在扩展中进行更改!请创建自己的扩展以进行个别调整,或将更改添加到您的站点包扩展中,并添加/编辑以下文件
以下占位符被使用
- FIELD_IDENTIFIER:字段的标识符(例如twitter_title),
- FIELD_IDENTIFIER_UPPER_CAMELCASE:字段的大驼峰标识符(例如TwitterTitle),
- NODE_IDENTIFIER:NodeFactory的字段类型标识符(例如aiSeoTwitterTitle)
- TIMESTAMP:作为唯一标识符的当前时间戳
- \Vendor\Package:用您自己的供应商和包名称替换此内容
将TCA配置添加到Configuration/TCA/Overrides/pages.php
$GLOBALS['TCA']['pages']['columns']['FIELD_IDENTIFIER']['config'] = array_merge_recursive(
$GLOBALS['TCA']['pages']['columns']['FIELD_IDENTIFIER']['config'],
[
'fieldControl' => [
'importControl' => [
'renderType' => 'NODE_IDENTIFIER'
]
]
]
);
添加FormEngine字段控制(例如,到Classes/FormEngine/FieldControl/AiSeoFIELD_IDENTIFIER_UPPER_CAMELCASE.php)
class AiSeoFIELD_IDENTIFIER_UPPER_CAMELCASE extends AbstractNode
{
public function render(): array
{
$resultArray = [
'iconIdentifier' => 'actions-document-synchronize',
'title' => 'Your custom title',
'linkAttributes' => [
'id' => 'FIELD_IDENTIFIER_generation',
'class' => 'ai-seo-helper-suggestions-generation-btn',
'data-page-id' => $this->data['databaseRow']['uid'],
'data-field-name' => 'FIELD_IDENTIFIER'
]
];
$javaScriptModuleService = GeneralUtility::makeInstance(JavaScriptModuleService::class);
return array_merge($resultArray, $javaScriptModuleService->addModules());
}
}
在ext_localconf.php中添加NodeFactory的注册
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][TIMESTAMP] = [
'nodeName' => 'NODE_IDENTIFIER',
'priority' => 30,
'class' => \Vendor\Package\FormEngine\FieldControl\AiSeoFIELD_IDENTIFIER_UPPER_CAMELCASE::class
];
将进一步的配置设置添加到ext_conf_template.txt
#cat=custom category; type=string; label=Your custom title
openAiPromptPrefixFIELD_IDENTIFIER_UPPER_CAMELCASE = Your custom prompt
在控制器中添加功能(例如,到Classes/Controller/Ajax/AiController.php)
public function generateFIELD_IDENTIFIER_UPPER_CAMELCASEAction(ServerRequestInterface $request): ResponseInterface
{
return $this->generateSuggestions($request, 'FIELD_IDENTIFIER_UPPER_CAMELCASE');
}
可以从\Passionweb\AiSeoHelper\Service\ContentService
使用generateSuggestions()函数
将ajax路由添加到Configuration/Backend/AjaxRoutes.php
return [
'FIELD_IDENTIFIER_generation' => [
'path' => 'CUSTOM_PATH',
'target' => \Vendor\Package\Controller\Ajax\AiController::class . '::generateFIELD_IDENTIFIER_UPPER_CAMELCASEAction'
],
];
完成所有调整后,刷新TYPO3和PHP缓存,并测试是否按预期工作。
故障排除和日志记录
如果某项操作不符合预期,请首先查看日志文件。每个问题都会记录到TYPO3日志中(通常位于var/log/typo3_*.log
)
注意事项
就像这个扩展一样,OpenAI仍然处于开发模式,并且尚未完全成熟。因此,我们强烈建议您在保存之前检查所有生成的文本的正确性,并进行必要的调整!
对超长文本的限制
OpenAI API(目前)根据使用的模型限制每个请求的令牌最大数量(目前使用gpt-4-32k
模型时,最大可能的令牌数是32,768)。您可以在此处找到模型和最大令牌数的详细概述
https://platform.openai.com/docs/models/
根据扩展的当前状态,遗憾的是,目前无法分析较长的文本。
使用GPT-4模型时可能存在的限制
在版本0.6.0发布时,只有账户中至少有一次支付成功的1美元或以上的用户才能访问GPT-4模型。根据OpenAI的说法,这种情况应该很快就会改变。
如果您尝试使用没有访问权限的GPT-4模型,您目前会收到一个404错误消息,这可能会有些令人困惑。
共同努力或反馈、反馈、反馈
我对任何反馈都表示感谢!无论是改进建议、扩展请求,还是对扩展的好坏(建设性的)反馈。
请随时通过service@passionweb.de或在Slack上联系我发送您的反馈