PHPackages                             mohsinqk/ai-filemetadata - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. mohsinqk/ai-filemetadata

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

mohsinqk/ai-filemetadata
========================

Automatically generates FAL metadata for files by means of public LLMs (Fork with custom changes)

v1.0.0(3mo ago)019GPL-3.0-or-laterPHPPHP &gt;=8.2

Since Jan 20Pushed 3mo agoCompare

[ Source](https://github.com/MohsinQK/ai-filemetadata)[ Packagist](https://packagist.org/packages/mohsinqk/ai-filemetadata)[ RSS](/packages/mohsinqk-ai-filemetadata/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (3)Used By (0)

ai\_filemetadata
================

[](#ai_filemetadata)

Automatically generates FAL metadata (alternative texts, for the time being) for files by means of public LLMs.

This extension helps you to **automate the process of generating such alternative texts** for images. It serves as a preparation for **EU Directive 2019/882** on the accessibility requirements for products and services (German: Barrierefreiheitsstärkungsgesetz (BFSG)).

The extension generates descriptive text for images, making them accessible to visually impaired individuals, e.g. when using screen reader software. It is not intended to create SEO-related texts.

    ai\_filemetadata.mp4    Video about this extension (in German) is available on Youtube:

[Read more](https://www.marketing-factory.com/services/programming-and-development/custom-development/ai-filemetdadata/)

Important
---------

[](#important)

**This extension is processing images from your TYPO3 installation via external AI services. You should check your privacy and data protection policies if the usage of the services for the image data is allowed! Please keep an eye on the license terms of your images, too, as some of them might be restricted from certain applications such as the use of LLM or AI technology.**

Prerequisites
-------------

[](#prerequisites)

- TYPO3 &gt;= v12
- PHP &gt;= 8.2
- OpenAI API key (*not to be confused with "ChatGPT Teams" or "ChatGPT Enterprise"*)

Installation
------------

[](#installation)

`composer require mfd/ai-filemetadata`

Configuration
-------------

[](#configuration)

Acquire the [OpenAI API key from Open-AI](https://platform.openai.com/docs/quickstart) and place the key in extension configuration. Model for openAI gpt-4o-mini but can be changed to any other modell which supports imageprocessing.

Alternatively [setup AI hosting in the mittwald cloud and add the AI Base URL (API) to the configuration and select an active modell](https://www.marketing-factory.com/blog/using-our-typo3-extension-ai-filemetadata-with-mittwalds-ai-hosting/)

### Custom AI Prompt

[](#custom-ai-prompt)

You can customize the prompt sent to the AI model to generate alternative texts. This allows you to tailor the output to your specific needs or language requirements.

The prompt can be configured in the extension configuration under **Alt Text Prompt**. The default prompt is:

```
Create an alternative text for this image to be used on websites for visually impaired people who cannot see the image.
Focus on the image's main content and ignore all elements in the image not relevant to understand its message.
The text should not exceed 50 words.

```

To customize the prompt:

1. Go to **Admin Tools &gt; Settings &gt; Extension Configuration**
2. Select **ai\_filemetadata**
3. Modify the **Alt Text Prompt** field
4. Use `\n` for line breaks in your custom prompt

**Note:** The extension automatically appends language-specific instructions when processing images in different languages based on your language mapping configuration.

### Language Mapping

[](#language-mapping)

Since folder do not have a relation to any of the sites default languages you might want to define a mapping for certain folders of your storages. You can do so by add this to your `system/settings.php`:

```
    'EXTCONF' => [
        'ai_filemetadata' => [
            'falLanguageMappings' => [
                '1:/site-a/' => [0 => 'en_EN.utf-8', 1 => 'de_DE.utf-8'],
                '1:/site-b/' => [0 => 'fr_FR.utf-8', 2 => 'en_EN.utf-8'],
                '1:/site-c/' => [0 => 'de_CH.utf-8', 3 => 'it_CH.utf-8', 4 => 'fr_CH.utf-8'],
            ],
        ],
    ],
```

This defines the locales being used for each `sys_language_uid` per folder.

### Exclude folders

[](#exclude-folders)

To exclude certain folders you can use this in your `system/settings.php`:

```
   'EXTCONF' => [
        'ai_filemetadata' => [
            'falExcludedPrefixes' => [
                '1:/site-a/nudes/',
            ],
        ],
    ],
```

### Resize images for LLM processing

[](#resize-images-for-llm-processing)

Sending large images to OpenAI language models can consume an extremely large number of tokens leading to higher costs, see . In most cases, an image size of no more than 512x512px is perfectly adequate for image analysis.

```
   'EXTENSIONS' => [
        'ai_filemetadata' => [
            'imageResizing' => '512',
        ],
    ],
```

CLI command
-----------

[](#cli-command)

```
bin/typo3 ai:generate-alt-texts --path="1:site-a/my-subfolder/" [--overwrite] [--limit=1]
```

This generates alt texts for all files within the given `--path` for all available languages. To avoid loading unnecessary translations you might want set a language mapping for certain folders. See chapter above.

Support
-------

[](#support)

Free Support is available via [Github Issue Tracker](https://github.com/marketing-factory/ai-filemetadata/issues)For commercial support, please contact us at

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance79

Regular maintenance activity

Popularity8

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

109d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f28608f884670883b39ab5ce3947325f6ba9604c7fdb5d243144e3da19b6ec65?d=identicon)[MohsinQK](/maintainers/MohsinQK)

---

Top Contributors

[![ischmittis](https://avatars.githubusercontent.com/u/904789?v=4)](https://github.com/ischmittis "ischmittis (26 commits)")[![tehplague](https://avatars.githubusercontent.com/u/1062568?v=4)](https://github.com/tehplague "tehplague (24 commits)")[![kitzberger](https://avatars.githubusercontent.com/u/1405149?v=4)](https://github.com/kitzberger "kitzberger (4 commits)")[![MohsinQK](https://avatars.githubusercontent.com/u/1622975?v=4)](https://github.com/MohsinQK "MohsinQK (4 commits)")[![sfroemkenjw](https://avatars.githubusercontent.com/u/123929835?v=4)](https://github.com/sfroemkenjw "sfroemkenjw (2 commits)")[![idleworks](https://avatars.githubusercontent.com/u/6685173?v=4)](https://github.com/idleworks "idleworks (2 commits)")[![hloens](https://avatars.githubusercontent.com/u/96468052?v=4)](https://github.com/hloens "hloens (1 commits)")[![hmccloy](https://avatars.githubusercontent.com/u/1900080?v=4)](https://github.com/hmccloy "hmccloy (1 commits)")[![bm1-phillip](https://avatars.githubusercontent.com/u/5550674?v=4)](https://github.com/bm1-phillip "bm1-phillip (1 commits)")

---

Tags

aiextensionTYPO3 CMSfal

### Embed Badge

![Health badge](/badges/mohsinqk-ai-filemetadata/health.svg)

```
[![Health](https://phpackages.com/badges/mohsinqk-ai-filemetadata/health.svg)](https://phpackages.com/packages/mohsinqk-ai-filemetadata)
```

###  Alternatives

[mfd/ai-filemetadata

Automatically generates FAL metadata for files by means of public LLMs

1142.1k](/packages/mfd-ai-filemetadata)[causal/extractor

This extension detects and extracts metadata (EXIF / IPTC / XMP / ...) from potentially thousand different file types (such as MS Word/Powerpoint/Excel documents, PDF and images) and bring them automatically and natively to TYPO3 when uploading assets. Works with built-in PHP functions but takes advantage of Apache Tika and other external tools for enhanced metadata extraction.

16244.5k](/packages/causal-extractor)[ichhabrecht/core-upgrader

Run upgrade wizards for multiple TYPO3 versions at once

2732.0k](/packages/ichhabrecht-core-upgrader)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
