Skip to content

netresearch/t3x-cowriter

TYPO3 Extension: t3_cowriter

CI codecov

OpenSSF Scorecard OpenSSF Best Practices SLSA 3

PHPStan PHP 8.2+ TYPO3 v13 TYPO3 v14 License: GPL v3 Latest Release Contributor Covenant

Composer Downloads Extension Stability TYPO3 Version

AI-powered content assistant for TYPO3 CKEditor - write better content with help from AI.

TYPO3 AI cowriter

Features

  • CKEditor Integration: Seamless toolbar button in TYPO3's rich text editor
  • Multi-Provider Support: Works with all LLM providers supported by nr-llm (OpenAI, Claude, Gemini, etc.)
  • Secure Backend Proxy: API keys never exposed to frontend - all requests proxied through TYPO3 backend
  • Model Override: Use #cw:model-name prefix to request specific models
  • XSS Protection: All LLM output is HTML-escaped for defense in depth

Requirements

Installation

Install via Composer:

composer require netresearch/t3-cowriter

Configuration

1. Configure nr-llm Extension

First, set up at least one LLM provider in the nr-llm extension:

  1. Navigate to Admin Tools → LLM Management
  2. Add a provider (e.g., OpenAI with your API key)
  3. Create a model configuration
  4. Create an LLM configuration and set it as default

2. Add CKEditor Preset

Option A: Use the included preset

Add the cowriter preset to your Page TSconfig:

RTE.default.preset = cowriter

Option B: Extend your existing preset

Add to your RTE configuration YAML:

editor:
  config:
    importModules:
      - { module: '@netresearch/t3_cowriter/cowriter', exports: ['Cowriter'] }
    toolbar:
      items:
        - cowriter

Usage

  1. Select text in the CKEditor
  2. Click the Cowriter button in the toolbar
  3. The selected text is sent to the LLM with a system prompt to improve it
  4. The improved text replaces your selection

Model Override

Prefix your prompt with #cw:model-name to use a specific model:

#cw:gpt-5.2-thinking Improve this text
#cw:claude-opus-4-5 Make this more professional

Architecture

[CKEditor Button] → [AIService.js] → [TYPO3 AJAX]
                                         ↓
                                    [AjaxController]
                                         ↓
                              [LlmServiceManagerInterface]
                                         ↓
                                   [nr-llm Provider]
                                         ↓
                                   [External LLM API]

All LLM requests are proxied through the TYPO3 backend. API keys are stored encrypted and never exposed to the browser.

Development

Prerequisites

  • DDEV for local development
  • PHP 8.2+ with required extensions

Setup

ddev start
ddev composer install
ddev install-v14

Testing

# Run all quality checks (lint, phpstan, rector, code style)
make ci

# Run all tests (unit, functional, integration, e2e)
make test

# Individual test suites
make test-unit           # Unit tests
make test-functional     # Functional tests
make test-integration    # Integration tests
make test-e2e            # End-to-end tests

# Code quality
make lint               # PHP-CS-Fixer
make phpstan            # PHPStan level 10

Test Coverage

Target: >80% code coverage

make test-coverage
open var/coverage/unit/index.html

Security

  • API keys stored in nr-llm with sodium encryption
  • All backend AJAX endpoints require TYPO3 authentication
  • LLM output HTML-escaped to prevent XSS
  • TYPO3 backend route authentication with nonce-based URL tokens
  • Content Security Policy (CSP) compatible

Migration to v4.x

Version 4.0 requires TYPO3 v13.4+ and PHP 8.2+. It removes the frontend-only architecture and uses the nr-llm extension for provider-agnostic LLM access. API keys are no longer stored in extension settings.

See CHANGELOG.md for migration details.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Contributing

See CONTRIBUTING.md for contribution guidelines.

Contact

Netresearch DTT GmbH - Your TYPO3 and eCommerce experts.

Twitter | LinkedIn | GitHub

About

TYPO3 extension for AI-powered content creation in CKEditor - by Netresearch

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors