tfd/statamic-aida

Statamic 插件,利用人工智能自动生成图像 alt 文本,以最小的努力提升网站可访问性和 SEO。

2.1.0 2024-08-13 10:35 UTC

README

AIDA Logo
A.I.D.A - AI-Driven Alt-text Assistant

Statamic 5.0+ Latest Version

通过使用 Statamic 5 的 AI 生成 alt 文本来提升网站可访问性和 SEO。

A.I.D.A 是 Statamic 5 的插件,利用 AI 自动为图像生成描述性 alt 文本。通过简化这一过程,A.I.D.A 帮助使网站内容更容易为视障用户访问,增强 SEO,并支持多语言内容。

功能

  • AI 驱动:利用 AI 创建有意义的、上下文相关的 alt 文本。
  • 网站可访问性:通过提供描述性图像文本,提高视障用户的可访问性。
  • SEO 增强:通过使搜索引擎更好地理解和索引网站图像来提高 SEO。
  • 多语言支持:对单语言和多语言网站都同样有效。
  • 效率:通过减少编写 alt 文本所需的手动工作,节省时间和资源。

入门

安装

  1. 使用 Composer 安装插件

    composer require tfd/statamic-aida

配置

要设置和自定义 A.I.D.A 插件,请按照以下步骤操作

  1. 发布配置文件:首先,通过在终端运行以下命令将插件的配置文件发布以使其可编辑

    php artisan vendor:publish --tag="aida-config"

    这将复制默认配置文件到您的应用程序的 config 目录,允许您自定义插件设置。

  2. 设置 OpenAI API 密钥:A.I.D.A 使用 OpenAI 来生成 alt 文本。您必须提供您的 OpenAI API 密钥以使服务正常工作。出于安全原因,建议您在应用程序的 .env 文件中设置此密钥,而不是直接在 aida.php 配置文件中

    将以下行添加到您的 .env 文件中

    OPEN_AI_API_KEY=your_openai_api_key_here
    

    这确保了您的 API 密钥保持安全,并且不会在您的版本控制文件中硬编码。

  3. 配置队列:为了管理和高效处理多个 alt 文本生成请求,建议使用队列连接,例如 Redis。队列允许异步处理,从而提高用户体验和系统性能。

    首先,确保您已经根据 Laravel 文档 设置了您的队列系统。然后,通过在 .env 文件中添加以下行来指定 A.I.D.A 的队列连接

    GENERATE_ALT_TEXT_QUEUE=redis
    

    这将告诉 A.I.D.A 使用 redis 队列连接来处理 alt 文本生成作业。

  4. 生成器配置:默认的 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 文件。

  5. 上传时自动生成:默认情况下,插件不会在上传图像时自动生成 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)

  • 包含处理程序 enfrde 的多个站点
  • 每个语言都有自定义的 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)

  • 包含处理程序 enfrde 的多个站点
  • 每个语言都有自定义的 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)

  • 包含处理程序 enfrde 的多个站点
  • 资产只为部分语言提供 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 文本。

Screenshot of Generate Alt Text action

定制

自定义生成器:您可以通过实现 TFD\AIDA\Generator\Generator 接口来用自己的生成器替换默认的基于 OpenAI 的生成器。

  1. 创建一个自定义生成器类,例如 /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;
      }
   }
  1. 实现 generate 方法以利用您首选的服务生成 alt 文本。
  2. 更新 aida.php 配置文件以使用您的自定义生成器类。
// config/statamic/aida.php

<?php

use App\Generator\MyAltTextGenerator;

return [
   // ...

   'generator' => MyAltTextGenerator::class,

   // ...
];

致谢

此项目由 21st digital 维护。我们感谢社区的贡献,这使得本项目更加完善。