nowo-tech / generative-seo-kit-bundle
Symfony Generative Engine Optimization kit (not geolocation): AI crawler robots policy via SeoKit, llms.txt, citation index and audit for FrankenPHP, php-fpm and Nginx.
Package info
github.com/nowo-tech/GenerativeSeoKitBundle
Type:symfony-bundle
pkg:composer/nowo-tech/generative-seo-kit-bundle
Requires
- php: >=8.2 <8.6
- nowo-tech/seo-kit-bundle: ^1.11
- symfony/config: ^7.4 || ^8.0
- symfony/console: ^7.4 || ^8.0
- symfony/dependency-injection: ^7.4 || ^8.0
- symfony/http-foundation: ^7.4 || ^8.0
- symfony/http-kernel: ^7.4 || ^8.0
- symfony/routing: ^7.4 || ^8.0
- symfony/yaml: ^7.4 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- igor-php/igor-php: ^0.10.1
- nowo-tech/phpstan-frankenphp: ^1.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^10.0
- rector/rector: ^2.0
- symfony/framework-bundle: ^7.4 || ^8.0
Suggests
- symfony/flex: For automatic recipe installation (config and bundles.php)
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-06 12:24:30 UTC
README
⭐ Found this useful? Give it a star on GitHub! It helps us maintain and improve the project.
Symfony Generative Engine Optimization kit (not geolocation): AI crawler robots.txt groups via SeoKitBundle, /llms.txt, citation index, and nowo:generative-seo:audit for FrankenPHP, php-fpm and Nginx.
This bundle is FrankenPHP worker mode friendly.
Table of contents
- Features
- Installation
- Requirements
- Documentation
- Version information
- Demos
- Tests and coverage
- License
Features
- ✅ Depends on SeoKit — does not fork head tags, sitemap, or canonical; implements
GeoRobotsGroupsProviderInterface - ✅ AI crawler policy — default allow for inference/search bots (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot); default disallow for training-oriented agents (Google-Extended, Applebot-Extended, CCBot, Bytespider, anthropic-ai)
- ✅ llms.txt —
/llms.txtand/.well-known/llms.txtastext/plain; optional sections,## Optional, and opt-in/llms-full.txt - ✅ Citation index — YAML
citations,citation_routes, plus taggedCitationSourceProviderInterface - ✅ Audit CLI —
nowo:generative-seo:audit(--lenientfor warn-only) - ✅ FrankenPHP-ready demo — single-container Symfony 8 demo
FrankenPHP: Demos use a single PHP service (FrankenPHP, no nginx). With APP_ENV=dev (default), the Docker entrypoint swaps in Caddyfile.dev when FRANKENPHP_MODE=classic. The baked-in production Caddyfile can use worker mode (FRANKENPHP_MODE=worker, default); see docs/DEMO-FRANKENPHP.md. Access the demo at http://localhost:PORT (see demo/README.md and .env.example).
Installation
composer require nowo-tech/generative-seo-kit-bundle
Register the bundle in config/bundles.php (Flex does this automatically). SeoKitBundle must also be registered:
Nowo\SeoKitBundle\SeoKitBundle::class => ['all' => true], Nowo\GenerativeSeoKitBundle\GenerativeSeoKitBundle::class => ['all' => true],
Requirements
- PHP >= 8.2, < 8.6
- Symfony 7.4+ or 8.x
nowo-tech/seo-kit-bundle^1.11
Documentation
- Installation
- Configuration
- PSR evaluation (REQ-CS-007)
- Usage
- Contributing
- Code of Conduct
- Changelog
- Roadmap
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
Additional documentation
- Demo with FrankenPHP (includes worker mode)
- FrankenPHP worker audit
- Server cookbook (Nginx, php-fpm, FrankenPHP)
- GitHub Actions CI requirements
Version information
| Version | PHP | Symfony | Status |
|---|---|---|---|
| 1.2.x | >= 8.2 | 7.4 – 8.1+ | Current |
| 1.1.x | >= 8.2 | 7.4 – 8.1+ | Maintained |
| 1.0.x | >= 8.2 | 7.4 – 8.1+ | Initial |
Demos
make -C demo up-symfony8 # http://localhost:8070 (default PORT)
![]() |
Tests and coverage
make test
make test-coverage
- Tests: PHPUnit (unit + integration)
- PHP: 100% lines (
make test-coverage)
License
MIT — see LICENSE.

