netresearch / nr-landingpage
TYPO3 Landing Page Generator powered by LLM
Package info
github.com/netresearch/nr-landingpage
Type:typo3-cms-extension
pkg:composer/netresearch/nr-landingpage
Requires
- php: ^8.2
- netresearch/nr-llm: ^0.34 || ^0.35 || ^0.36 || ^0.37 || ^0.38
- typo3/cms-backend: ^13.4 || ^14.3
- typo3/cms-core: ^13.4 || ^14.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpat/phpat: ^0.11 || ^0.12
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.5 || ^11.0
- rector/rector: ^2.0
- saschaegerer/phpstan-typo3: ^2.0 || ^3.0
- typo3/testing-framework: ^8.0 || ^9.0
Suggests
- typo3/cms-workspaces: Workspace support for generated pages
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v0.3.16
- v0.3.15
- v0.3.14
- v0.3.13
- v0.3.12
- v0.3.11
- v0.3.10
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-chore/openssf-best-practices
- dev-release/v0.3.16
- dev-fix/wizard-focus-after-next
- dev-docs/current-module-screenshots
- dev-fix/strip-css-from-structured-sections
- dev-release/0.3.5
- dev-fix/wizard-first-step-empty
- dev-fix/root-css-as-visible-content
- dev-ci/use-shared-e2e
- dev-fix/export-ignore
- dev-release/0.3.4
- dev-ci/run-e2e-suite
- dev-fix/lint-excludes-build
- dev-release/0.3.3
- dev-fix/modal-state-reset
- dev-release/0.3.2
- dev-fix/json-object-array-contract
- dev-release/0.3.1
- dev-build/require-nr-llm-0-28
- dev-feat/nrllm-0.22
- dev-fix/nr-llm-version-constraint
- dev-fix/nr-llm-constraint-clean
- dev-fix/harden-github-actions
- dev-feature/gsap-animation-integration
This package is auto-updated.
Last update: 2026-09-30 16:55:45 UTC
README
TYPO3 Landing Page Generator (nr_landingpage)
A TYPO3 extension that generates landing pages via LLM using an interactive step-by-step backend wizard. Editors select a template, answer optional briefing questions, review AI-generated content, and publish -- all without leaving the TYPO3 backend.
Requirements
| Dependency | Version |
|---|---|
| PHP | ^8.2 |
| TYPO3 | 13.4 LTS / 14.3 LTS |
| netresearch/nr-llm | >=0.34 <0.39 |
Installation
composer require netresearch/nr-landingpage
Activate the extension in the TYPO3 Extension Manager or via CLI:
vendor/bin/typo3 extension:activate nr_landingpage
Configuration
Templates
Templates are managed as TCA records (tx_nrlandingpage_domain_model_template) and define:
- Title / Identifier -- human-readable name and machine identifier
- System Prompt -- the LLM prompt used for content generation
- Allowed CTypes -- which content element types the template may produce
- Page Fields -- which page-level fields (e.g.
og:title,description) are generated - Reference Pages -- existing pages named as references; the prompt optimizer lists their UIDs in its request, and their content is not sent to the LLM
- Briefing Mode --
required,optional, ornone - Publish Mode -- whether pages are created hidden or visible
- Backend User Groups -- restrict template visibility to specific groups
LLM Configuration
The extension relies on netresearch/nr-llm for LLM interaction.
Configure your LLM backend (OpenAI, Azure OpenAI, etc.) according to the nr-llm documentation.
Each template can optionally reference a specific LLM configuration record.
Usage
Wizard Steps
- Template Selection -- choose from available landing page templates
- Briefing -- answer LLM-generated questions to guide content creation (optional/required per template)
- Page Fields -- review and edit generated SEO and meta fields
- Content Preview -- review generated content sections; regenerate individual sections as needed
- Placement & Save -- choose parent page, set title/slug, and create the landing page
Context Menu
Right-click any page in the page tree and select "Create Landing Page" to launch the wizard with that page pre-selected as the parent.
PSR-14 Events
The extension dispatches events that allow customization:
BeforePageCreationEvent-- modify page data before the page record is writtenAfterContentGenerationEvent-- react after the page and its content elements were created (receives the template, the page UID and the content element UIDs)
Development
Setup
git clone <repository-url> composer install
Local TYPO3 Environment (DDEV)
A DDEV configuration is included for local development with a full TYPO3 installation:
ddev start ddev install-v14
This installs TYPO3 v14 with the extension and all dependencies (including nr-llm and nr-vault via Composer).
- Backend: https://v14.nr-landingpage.ddev.site/typo3/
- Credentials: admin / Joh316!!
Traefik users: If ports 80/443 are already in use (e.g. by an external Traefik proxy), DDEV will fall back to alternate ports. You can disable the DDEV router globally (
router: nonein~/.ddev/global_config.yaml) and route traffic through your existing Traefik by adding thetraefiknetwork and labels to.ddev/docker-compose.web.yaml. See the DDEV documentation on router configuration.
Quality Checks
# Run all checks composer ci # Individual checks composer ci:phpstan # PHPStan Level 10 composer ci:cgl # PHP-CS-Fixer (dry-run) composer ci:tests # PHPUnit (unit + architecture tests) # Fix code style composer fix:cgl
Test Suites
| Suite | Directory | Description |
|---|---|---|
| unit | Tests/Unit/ |
Unit tests (mocked services) |
| functional | Tests/Functional/ |
Functional tests (TYPO3 framework) |
| architecture | Tests/Architecture/ |
phpat layer dependency tests |
| e2e | Tests/E2E/ |
Playwright E2E tests (17, run in CI) |
E2E Tests (Playwright)
The suite runs in CI on every pull request via the shared workflow. Locally, from the repository root:
npm ci
npx playwright install chromium
npx playwright test
The npm manifest and playwright.config.ts live at the root because the shared workflow runs npm there; the specs stay in Tests/E2E/, which testDir points at.
Requires a running TYPO3 instance. Set TYPO3_BASE_URL to override the default https://nr-landingpage.ddev.site.
Architecture
Classes/
Controller/Backend/ Wizard controller (AJAX endpoints)
ContextMenu/ Page tree context menu provider
Domain/Model/ Template value object
Event/ PSR-14 events
Service/ Business logic (Template, Briefing, ContentGenerator, ImageSearch, PageCreator)
Configuration/
Backend/ Module + AJAX route registration
TCA/ Template TCA
Resources/
Public/JavaScript/ ES6 wizard modules
Tests/
Unit/ PHPUnit unit tests
Architecture/ phpat architecture tests
E2E/ Playwright E2E test skeleton
Security and Architecture
docs/SECURITY-ASSURANCE.md describes the actors, components and data flows, what the extension guarantees in terms of security and where its limits are. Report vulnerabilities as described in the Netresearch security policy.
Contributing
See CONTRIBUTING.md for guidelines.
License
GPL-2.0-or-later. See LICENSE.