---
title: "Editor manual"
manual: "AI Content Quality Assistant"
version: "main"
permalink: "https://docs.typo3.org/permalink/woit/t3-content-quality:editor-manual@main"
source: "EditorManual/Index.rst"
rendered: "2026-09-29T16:45:18+00:00"
---

# Editor manual {#editor-manual}

-   [Quality panel in the page module](https://docs.typo3.org/permalink/woit/t3-content-quality:quality-panel-in-the-page-module@main)
-   [Fixing issues with AI](https://docs.typo3.org/permalink/woit/t3-content-quality:fixing-issues-with-ai@main)
-   [Content Quality module](https://docs.typo3.org/permalink/woit/t3-content-quality:content-quality-module@main)
-   [Schema.org advisor](https://docs.typo3.org/permalink/woit/t3-content-quality:schema-org-advisor@main)
-   [AI text generator in the rich-text editor](https://docs.typo3.org/permalink/woit/t3-content-quality:ai-text-generator-in-the-rich-text-editor@main)
-   [AI metadata for images in the file list](https://docs.typo3.org/permalink/woit/t3-content-quality:ai-metadata-for-images-in-the-file-list@main)

## Quality panel in the page module {#editor-page-module-panel}

When you open a page in **Content > Layout**, the
**Content Quality** panel is shown above the page content.

![Content Quality panel in the page module with scores, SERP preview and accessibility issues](../Images/PageModulePanel.png)

A page is not analysed automatically. If the page has never been analysed,
the panel shows **Not analysed yet.** Click **Analyse Page**
to run the checks. Later, click **Reanalyse** after you have changed
the page.

After an analysis the panel shows:

-   the overall score and the scores for accessibility, SEO, readability and
    schema,
-   a **SERP Preview** of the title and meta description with
    character counters (60 characters for the title, 160 for the
    description),
-   an accessibility breakdown,
-   the **Flesch Reading Ease** bar,
-   the list of issues with category, severity, message and suggestion,
-   AI suggestions, if an AI provider is configured.

Issues that the AI can fix have a **✨ Fix** button in the last
column. See [Fixing issues with AI](https://docs.typo3.org/permalink/woit/t3-content-quality:editor-ai-fixes@main).

### How scores are calculated {#editor-scores}

Every issue has a severity. Each category starts at 100 and loses points per
issue:

| Severity | Points deducted |
| --- | --- |
| error | 20 |
| warning | 10 |
| info | 3 |

A category score never drops below 0. The **overall score** is the average
of the accessibility, SEO and readability scores.

The **schema score** is calculated separately and is not part of the overall
score: it starts at 100 and loses 25 points for every missing required
schema.org property and 5 points for every missing recommended property.

### What is checked {#editor-checks}

-   **Accessibility**

    -   Images without ALT text, or with a generic ALT text such as "image",
        "photo", "bild" or "foto".
    -   No headings, no H1, more than one H1, skipped heading levels
        (for example H2 followed by H4).
    -   Generic link texts such as "click here", "read more", "more",
        "hier klicken" or "mehr erfahren".

    Headings are read from the rendered frontend page when it can be
    fetched. Otherwise they are derived from the content elements' header
    fields.

-   **SEO**

    -   Page title missing (error), shorter than 10 or longer than 70
        characters (warning).
    -   Meta description missing (error), shorter than 70 or longer than 160
        characters (warning).
    -   No links on the page (info).
    -   Title or meta description at least 85 % similar to another page
        (warning).

-   **Readability**

    -   Flesch Reading Ease (Amstad formula for German texts): below 30 is a
        warning, below 60 is an info.
    -   Sentences longer than 25 words: info, or warning if there are more
        than five.
    -   Less than 50 words of text (info).
    -   The estimated reading time is shown (200 words per minute).

## Fixing issues with AI {#editor-ai-fixes}

The AI can propose a new **page title**, a new **meta description** and
**ALT texts** for images without one.

1.  Click **✨ Fix** next to an issue in the page module panel, or
    **Fix: Page Title**, **Fix: Meta Description** or
    **Fix: Image ALT Text** in the Content Quality module.
1.  The AI generates a proposal. Nothing is written to the page yet.
1.  The proposal appears under **✨ AI Suggested Changes (not saved
    yet)** in the panel, or **Pending AI Changes** in the module,
    with the old and the new value side by side.
1.  Click **Apply** to write the change, or **Discard** to
    delete the proposal. In the module you can apply or discard all or only
    selected changes.
1.  After applying, the page is analysed again.

ALT texts are written to the image reference of the content element
(`sys_file_reference`), not to the file's global metadata. Up to ten images
are handled in one request.

> [!NOTE]
> Check the proposals before you apply them. AI output can be wrong or
> unsuitable for your audience.

## Content Quality module {#editor-quality-module}

Open **Content > Content Quality** and select a page in the page
tree.

### Page view {#editor-quality-module-page}

![Content Quality module showing the overall score, category scores, score trend and issue list](../Images/ModulePageView.png)

The page view shows everything from the panel in more detail, plus:

-   ****Score Trend****

    The scores of the previous analysis runs of this page.

-   ****Heading Map****

    The heading structure of the page. Missing levels and duplicate H1
    headings are marked.

-   ****Link Check****

    Click **Check Links** to test the links on the page (internal
    and external, without anchors, `mailto:` and `tel:` links). Up to 30
    links are checked with a `HEAD` request and a timeout of five seconds.
    Links that answer with status 400 or higher are reported as broken.

-   ****Suggested Internal Links****

    If AI is enabled, the AI suggests related pages of the same site that
    this page could link to.

-   ****Structured Data (Schema.org)****

    The schema.org advisor, see [Schema.org advisor](https://docs.typo3.org/permalink/woit/t3-content-quality:editor-schema-advisor@main).

Click **Run Analysis Again** to refresh the result.

### All pages overview {#editor-quality-module-overview}

Click **All Pages Overview** to list all analysed pages of the
default language, worst score first.

![All pages overview listing analysed pages with scores and the batch fix controls](../Images/AllPagesOverview.png)

have not been analysed yet. Analyse them individually to include them.

To fix several pages at once:

1.  Select the pages in the list.
1.  Choose the fix type: page title, meta description or image ALT text.
1.  Click **Generate Fixes for Selected (max 15)**.
1.  Review the proposals in **Review Batch AI Changes** and apply or
    discard them.

If more than 15 pages are selected, only the first 15 are processed. Run the
action again for the rest.

## Schema.org advisor {#editor-schema-advisor}

The schema.org advisor describes the page for search engines using
[JSON-LD](https://json-ld.org/).

![Schema.org advisor with detected type, schema score and editable JSON-LD preview](../Images/SchemaAdvisor.png)

-   **Detected type**

    The type is determined in this order:

    1.  The **Schema Type (Structured Data)** field in the page
        properties, if set.
    1.  Content elements of known extensions on the page, for example
        `tx_news` (`NewsArticle`), event extensions (`Event`) or job
        extensions (`JobPosting`).
    1.  Keywords in the title, meta description and abstract, for example
        "FAQ" (`FAQPage`), "Veranstaltung" or "event" (`Event`),
        "Museum" (`TouristAttraction`), "Öffnungszeiten" or "opening
        hours" (`LocalBusiness`).
    1.  Otherwise `WebPage`.

    The label shows whether the type was set manually, detected by rules
    (**Rule-based**) or by the AI (**AI-detected**).

-   **Mapped fields and validation**

    The schema.org properties filled from the page, the missing required and
    recommended properties, and structural errors in the JSON-LD.

-   ****Detect with AI****

    Lets the AI choose the type and fill the properties from the page
    content.

-   ****JSON-LD Preview (editable before approving)****

    The generated JSON-LD. You can edit it before approving.

-   ****Approve & Activate****

    Saves the JSON-LD. From now on it is included in the frontend output of
    this page (**Approved & Live**).

-   ****Remove Approved Schema****

    Deletes the approved JSON-LD. It is no longer included in the frontend.

-   ****Export Audit CSV****

    Downloads a CSV file with page ID, detected type, schema score, overall
    score, approval status and analysis date for all analysed pages.

### Overriding the schema type {#editor-schema-override}

1.  Open the page properties and switch to the **Metadata** tab.
1.  Select a type in **Schema Type (Structured Data)**.
1.  Save the page.
1.  Analyse the page again and approve the new JSON-LD.

## AI text generator in the rich-text editor {#editor-ckeditor}

If your integrator has added it (see [AI button in the rich-text editor](https://docs.typo3.org/permalink/woit/t3-content-quality:configuration-ckeditor@main)), the
rich-text editor toolbar contains a **✦ AI** button.

![AI text generator dialog with prompt, tone, language, format and length options](../Images/AiTextGenerator.png)

1.  Place the cursor where the text should go.
1.  Click **✦ AI**.
1.  Describe the text you want, for example *"Two sentences introducing our
    summer workshop for children"*.
1.  Choose the options:

    -   **Tone**

        Neutral, Formal, Friendly or Professional.

    -   **Language**

        Auto-detect, German, English, French or Spanish. With
        *Auto-detect*, the language of the record being edited is used.

    -   **Format**

        Paragraph(s), Bullet points or Headline only.

    -   **Maximum length**

        50 to 3000 characters (default 500). The limit is passed to the AI
        as an instruction; the answer is not cut off.
1.  Click **Generate** and wait for the result.
1.  Click **Insert into editor** to insert the text, or
    **Cancel** to close the dialog.

## AI metadata for images in the file list {#filelist-ai-metadata}

In **Media > Filelist**, image files that miss one of the metadata
fields **Alternative text**, **Title**,
**Description** or **Caption** get an additional button. Its
tooltip lists the missing fields. The button disappears once all four
fields are filled.

![File list rows with the AI metadata button as first control](../Images/FilelistButton.png)

The button is only shown if you may edit the file's metadata.

What happens when you click it:

1.  **Embedded metadata is read first.** No AI is used for this step.

    | Embedded field | Metadata field |
    | --- | --- |
    | EXIF `Artist`, IPTC By-line (2#080) | Creator |
    | EXIF `Copyright`, IPTC Copyright Notice (2#116) | Copyright |
    | EXIF `ImageDescription`, IPTC Caption/Abstract (2#120) | Description |
    | EXIF `DocumentName`, IPTC Object Name (2#005), IPTC Headline (2#105) | Title |
    | EXIF `Software` | Creator tool |
    | IPTC Keywords (2#025) | Keywords |

    Existing values are never overwritten. The download name is set to the
    file name without extension if it is empty.
1.  **The AI describes the image.** Alternative text, title, description
    and caption that are still empty are generated by the AI from the image
    content, in German.
1.  **You review the result.** The metadata form of the file opens with the
    new values. Check them and save.

> [!IMPORTANT]
> Creator, publisher, source and copyright can not be recognised from the
> image. Fill them in yourself if the file does not contain them.

Limits:

-   The AI is only used for JPEG, PNG, GIF and WebP files up to 5 MB.
    Embedded metadata is read for all image files.
-   With Ollama, the configured model must support images (for example
    `llava`), see [ollamaModel](https://docs.typo3.org/permalink/woit/t3-content-quality:confval-t3cq-ollamamodel@main).
