tfd / statamic-aida
Statamic 插件,利用人工智能自动生成图像 alt 文本,以最小的努力提升网站可访问性和 SEO。
Requires
- openai-php/client: ^0.10.1
- statamic/cms: ^5.0
Requires (Dev)
- captainhook/captainhook: ^5.22
- captainhook/hook-installer: ^1.0
- larastan/larastan: ^2.0
- laravel/pint: ^1.14
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.34
- ramsey/conventional-commits: ^1.5
This package is auto-updated.
Last update: 2024-09-30 09:28:30 UTC
README
A.I.D.A - AI-Driven Alt-text Assistant
通过使用 Statamic 5 的 AI 生成 alt 文本来提升网站可访问性和 SEO。
A.I.D.A 是 Statamic 5 的插件,利用 AI 自动为图像生成描述性 alt 文本。通过简化这一过程,A.I.D.A 帮助使网站内容更容易为视障用户访问,增强 SEO,并支持多语言内容。
功能
- AI 驱动:利用 AI 创建有意义的、上下文相关的 alt 文本。
- 网站可访问性:通过提供描述性图像文本,提高视障用户的可访问性。
- SEO 增强:通过使搜索引擎更好地理解和索引网站图像来提高 SEO。
- 多语言支持:对单语言和多语言网站都同样有效。
- 效率:通过减少编写 alt 文本所需的手动工作,节省时间和资源。
入门
安装
-
使用 Composer 安装插件
composer require tfd/statamic-aida
配置
要设置和自定义 A.I.D.A 插件,请按照以下步骤操作
-
发布配置文件:首先,通过在终端运行以下命令将插件的配置文件发布以使其可编辑
php artisan vendor:publish --tag="aida-config"
这将复制默认配置文件到您的应用程序的
config
目录,允许您自定义插件设置。 -
设置 OpenAI API 密钥:A.I.D.A 使用 OpenAI 来生成 alt 文本。您必须提供您的 OpenAI API 密钥以使服务正常工作。出于安全原因,建议您在应用程序的
.env
文件中设置此密钥,而不是直接在aida.php
配置文件中将以下行添加到您的
.env
文件中OPEN_AI_API_KEY=your_openai_api_key_here
这确保了您的 API 密钥保持安全,并且不会在您的版本控制文件中硬编码。
-
配置队列:为了管理和高效处理多个 alt 文本生成请求,建议使用队列连接,例如 Redis。队列允许异步处理,从而提高用户体验和系统性能。
首先,确保您已经根据 Laravel 文档 设置了您的队列系统。然后,通过在
.env
文件中添加以下行来指定 A.I.D.A 的队列连接GENERATE_ALT_TEXT_QUEUE=redis
这将告诉 A.I.D.A 使用
redis
队列连接来处理 alt 文本生成作业。 -
生成器配置:默认的 OpenAI 生成器已配置为具有合理的默认值。您可以调整这些值以更好地满足您的需求。
以下选项可以通过
.env
文件进行配置# Define the model that is used to process the images and generate alt texts. Only gtp-4 models are supported. OPEN_AI_MODEL=gpt-4o-mini # Limit the number of tokens that are used in the response. OPEN_AI_MAX_TOKENS=200 # Adjust the value to balance image understanding quality with performance and cost. OPEN_AI_IMAGE_DETAIL=low
有关更多信息,请参阅
config/aida.php
文件。 -
上传时自动生成:默认情况下,插件不会在上传图像时自动生成 alt 文本以避免不必要的处理。但是,您可以启用此功能,以便在上传图像时立即生成 alt 文本。
要启用上传时的自动 alt 文本生成,请将以下行添加到您的
.env
文件中GENERATE_ALT_TEXT_ON_UPLOAD=true
启用此设置后,每个新上传的图像将自动生成 alt 文本,以最小的努力增强可访问性和 SEO。
示例配置
无自定义 alt 字段的单站
- 带有处理
en
的单站 - 资产 alt 字段具有默认处理
alt
// config/statamic/aida.php <?php return [ // No configuration necessary 'alt_field_mapping' => [] ];
具有自定义 alt 字段的单站
- 带有处理
en
的单站 - 资产 alt 字段具有自定义处理
my_custom_alt
// config/statamic/aida.php <?php return [ // Custom configuration necessary due to custom alt field handle 'alt_field_mapping' => [ 'en' => 'my_custom_alt' ] ];
多站(1)
- 包含处理程序
en
、fr
、de
的多个站点 - 每个语言都有自定义的 alt 字段
alt_en
alt_fr
alt_de
// config/statamic/aida.php <?php return [ /** * No configuration necessary; the addon automatically matches all availables site handles * to a field `alt_<handle>`, e. g. `alt_en` or `alt_fr`. */ 'alt_field_mapping' => [] ];
多站点(2)
- 包含处理程序
en
、fr
、de
的多个站点 - 每个语言都有自定义的 alt 字段
alt_english
alt_french
alt_german
// config/statamic/aida.php <?php return [ /** * Custom configuration is necessary, because the alt field handles differ from the ones the addon assumes */ 'alt_field_mapping' => [ 'en' => 'alt_english', 'fr' => 'alt_french', 'de' => 'alt_german', ] ];
多站点(3)
- 包含处理程序
en
、fr
、de
的多个站点 - 资产只为部分语言提供 alt 字段
alt_en
alt_de
// config/statamic/aida.php <?php return [ /** * Custom configuration defines, for which languages the alt text is being generated. */ 'alt_field_mapping' => [ 'en' => 'alt_en', 'de' => 'alt_de', ] ];
更新
更新插件后,请检查 config/aida.php
文件以了解新的配置值。您可能希望将它们添加到应用程序发布的配置文件中。
使用方法
手动生成:使用资产浏览器中的 生成 alt 文本 操作来生成所选图像的 alt 文本。此选项允许您决定是否覆盖现有的 alt 文本。
定制
自定义生成器:您可以通过实现 TFD\AIDA\Generator\Generator
接口来用自己的生成器替换默认的基于 OpenAI 的生成器。
- 创建一个自定义生成器类,例如
/app/Generator/MyAltTextGenerator.php
。
// app/Generator/MyAltTextGenerator.php <?php namespace App\Generator; use \Statamic\Assets\Asset; use TFD\AIDA\Generator\Generator; class MyAltTextGenerator implements Generator { /** * @param Asset $asset * @param string $language * @return string */ public function generate($asset, $locale = 'en') { /** * Use some other service to get the alt text from the asset. * Depending on the service, you might have to transform the asset object * and use its url or base64 encoded string. */ $altText = SomeApi::get($asset, $locale); /** * You might want to sanitize the altText with `htmlspecialchars($altText, ENT_QUOTES, 'UTF-8')` to prevent invalid HTML code. * Alternatively you can use the `sanitize` modifier in your view files. */ return $altText; } }
- 实现
generate
方法以利用您首选的服务生成 alt 文本。 - 更新
aida.php
配置文件以使用您的自定义生成器类。
// config/statamic/aida.php <?php use App\Generator\MyAltTextGenerator; return [ // ... 'generator' => MyAltTextGenerator::class, // ... ];
致谢
此项目由 21st digital 维护。我们感谢社区的贡献,这使得本项目更加完善。