SEO Suite
SEO Suite adds metadata panels, structured data, broken link tracking, search insight, content briefs, and publish checks.
What SEO Suite provides
SEO Suite adds metadata panels, structured data, broken link tracking, search insight, content briefs, and publish checks.
It is built for teams that need SEO work to happen inside the publishing workflow, not after pages go live.
Editors can review search metadata and content readiness before publishing.
Developers get package-owned SEO output and diagnostics instead of theme-specific shortcuts.
Use it when organic visibility needs operational support inside Capell.
Install on your Capell site in three steps.
Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.
-
01
Require the package
composer require capell-app/seo-suite -
02
Register the extension
php artisan capell:extension:enable capell-app-seo-suite -
03
Clear schema cache
php artisan capell:admin:clear-schemas-cache
Related extensions
Browse the packages that usually pair with SEO Suite or buy the suite it belongs to.
Capell Core
Capell Core gives Laravel teams the shared CMS model for sites, languages, pages, URLs, layouts, themes, media...
Capell Admin
Capell Admin gives editors a Filament workspace for managing structured content, settings, roles, publishing,...
Capell Installer
Capell Installer guides Laravel teams through bootstrapping a Capell site, choosing packages, preparing the fi...
Growth Campaign Suite
Launch measurable campaigns in Capell with landing pages, form capture, SEO readiness, site search, and redirect recovery in one buyer path.
Search & Performance Suite
Improve discovery and page speed together with SEO output, site search, URL recovery, and frontend asset optimization for public Capell pages.
Package README Install impact, package shape, common pitfalls, and maintenance notes. Open
SEO Suite
SEO Suite adds metadata panels, structured data, broken link tracking, Search Console insights, AI-assisted content briefs, AI Discovery output, crawler policy controls, publish checks, and generated-output diagnostics.
At A Glance
- Package:
capell-app/seo-suite - Namespace:
Capell\SeoSuite\ - Surfaces: Filament admin, console, HTTP, database
- Service providers:
packages/seo-suite/src/Providers/SeoSuiteServiceProvider.php - Capell dependencies:
capell-app/admin,capell-app/frontend,capell-app/insights,capell-app/site-discovery - Third-party dependencies:
prism-php/prism
Why It Helps Your Capell Workflow
- Adds metadata panels, structured data, broken-link tracking, Search Console insights, AI content briefs, generated-output diagnostics, and publish checks.
- Helps owners improve discoverability while giving editors concrete readiness signals before publishing.
- Gives developers schema, sitemap, AI, and publish-gate extension points without mixing SEO behavior into core pages.
Best Used With
What It Adds
SEO Suite adds metadata panels, structured data, broken link tracking, Search Console insights, AI-assisted content briefs, AI Discovery output, crawler policy controls, generated-output diagnostics, and publish checks.
- Page and site SEO schema extenders.
- SEO audit, AI Discovery, broken links, not-found URLs, and translation coverage pages.
- AI creator actions for briefs, images, layouts, metadata suggestions, and draft application.
- AI Discovery for
llms.txt, optionalllms-full.txt, page Markdown URLs,Accept: text/markdown, configurable AI crawler rules, and page-readiness audits. - Search Console sync and dashboard reports.
- Page SEO reports account for every
SeoCheckKeyEnumcheck: metadata, canonical, robots, schema, social image, image alt text, internal links, broken links, redirects, translation coverage, sitemap URL availability,llms.txteligibility, and Search Console status. - Diagnostics for route ownership, generated document content types, sitemap quality, crawler policy, public-output leaks, and stale AI Discovery snapshots.
Why It Matters
For developers: Exposes SEO work as actions, contracts, data objects, settings schemas, and extenders that connect to core pages, sites, translations, routes, and optional AI providers.
For teams: Gives editors and site operators practical checks before publishing and operational dashboard reports after launch.
Built With
This package makes its Composer dependencies visible because they are part of the value proposition, not just plumbing. When an upstream package has a public repository, its linked preview card points readers back to the maintainers so their work gets proper credit.
Capell packages used here
Open-source packages used here
- Prism PHP - AI provider abstraction used by SEO Suite for assisted content and metadata workflows.
Linked package previews
Screens And Workflow
Screenshots are generated from docs/screenshots.json during package deployment.
- Page SEO panel.
- SEO audit page.
- Broken links page.
- Search Console insights panel.
- AI Creator action modal.
- Sitemap page.
- Translation coverage page.
AI Discovery, SEO settings, not-found URLs, and public text-output captures remain optional until the runner has the required seeded state and plain-text response support.
- Translation coverage page.
- AI Discovery page.
- SEO Suite settings modal on the Extensions page.
- Search Console insights panel.
- Public AI Discovery outputs:
/llms.txt,/robots.txt, and/index.md.
Technical Shape
- SeoSuiteServiceProvider registers settings, pages, extenders, commands, routes, and views.
- The manifest declares SEO Suite settings classes, admin permissions, PageSpeed capabilities, supported Blog/Publishing Studio/URL Manager integrations, and AI Discovery cache invalidation sources.
- Config files: capell-seo-suite.php and exchanger.php.
- Migrations create broken links, page SEO snapshots, Search Console metrics, AI creator contexts, AI histories, AI sessions, AI Discovery profiles, crawler rules, and generated-output snapshots.
- Commands cover install, setup, AI cache, AI usage, and OpenAI connection testing.
- Controllers: LlmsTxtController, LlmsFullTxtController, PageMarkdownController, RobotsTxtController.
Code Map
| Area | Path | Purpose |
|---|---|---|
| Actions | packages/seo-suite/src/Actions |
Domain operations. Test these directly where possible. |
| Data | packages/seo-suite/src/Data |
Structured payloads, form state, view models, and integration data. |
| Enums | packages/seo-suite/src/Enums |
Persisted states and Filament option values. |
| Models | packages/seo-suite/src/Models |
Eloquent records owned by the package. |
| Filament | packages/seo-suite/src/Filament |
Admin resources, pages, widgets, and settings UI. |
| Livewire | packages/seo-suite/src/Livewire |
Interactive frontend or admin components. |
| HTTP | packages/seo-suite/src/Http |
Controllers, middleware, and request handling. |
| Providers | packages/seo-suite/src/Providers |
Registration, extension hooks, routes, migrations, and resources. |
| Resources | packages/seo-suite/resources |
Views, translations, assets, and package resources. |
| Config | packages/seo-suite/config |
Package configuration and publishable config. |
| Database | packages/seo-suite/database |
Migrations, seeders, and settings migrations. |
| Tests | packages/seo-suite/tests |
Package-level Pest coverage. |
Admin Surface
- Pages:
AiDiscoveryPage,AiDiscoveryTable,BrokenLinksPage,BrokenLinksTable,ListPageSeoAuditWidget,NotFoundUrlsPage,SeoAuditPage,SeoAuditTable,TranslationCoveragePage,TranslationCoverageTable. - Widgets:
AiMetricsWidgetAbstract,AiUsageWidget,EditPageSeoAuditWidget,ListPageSeoAuditWidget. - Settings:
AIOrchestratorSettings,SeoSuiteSettings.
Runtime Surface
- Controllers:
LlmsFullTxtController,LlmsTxtController,PageMarkdownController,RobotsTxtController.
Commands
capell:admin-clear-ai-cache(packages/seo-suite/src/Console/Commands/ClearAiCacheCommand.php)capell:admin-monitor-ai-usage(packages/seo-suite/src/Console/Commands/MonitorAiUsageCommand.php)capell:admin-test-openai(packages/seo-suite/src/Console/Commands/TestOpenAiConnectionCommand.php)capell:seo-suite-install(packages/seo-suite/src/Console/Commands/InstallCommand.php)capell:seo-suite-setup(packages/seo-suite/src/Console/Commands/SetupCommand.php)
Data And Persistence
-
broken_links stores page, target URL, HTTP status, and last check time.
-
page_seo_snapshots store page SEO report state.
-
search_console_url_metrics store imported Search Console values.
-
ai_creator_contexts, ai_generation_histories, and ai_creator_sessions store AI workflow state.
-
ai_discovery_site_profiles, ai_discovery_page_profiles, ai_discovery_crawler_rules, and ai_discovery_snapshots store AI Discovery configuration, robots controls, and generated document state.
-
SEO data connects to sites, pages, languages, users, and publishing-studio.
-
Models:
AIGenerationHistory,AiCreatorContext,AiCreatorSession,AiDiscoveryCrawlerRule,AiDiscoveryPageProfile,AiDiscoverySiteProfile,AiDiscoverySnapshot,BrokenLink,PageSeoSnapshot,SearchConsoleUrlMetric. -
Migrations:
2026_05_10_190870_01_create_ai_creator_contexts_table.php,2026_05_10_190870_02_create_ai_generation_histories_table.php,2026_05_10_190870_03_create_ai_creator_sessions_table.php,2026_05_10_190870_04_create_ai_discovery_crawler_rules_table.php,2026_05_10_190870_05_create_ai_discovery_page_profiles_table.php,2026_05_10_190870_06_create_ai_discovery_site_profiles_table.php,2026_05_10_190870_07_create_ai_discovery_snapshots_table.php,2026_05_10_190870_08_create_broken_links_table.php,2026_05_10_190870_09_create_page_seo_snapshots_table.php,2026_05_10_190870_10_create_search_console_url_metrics_table.php,2026_05_10_190870_11_remove_redirect_opportunities_count_from_page_seo_snapshots_table.php. -
Config:
packages/seo-suite/config/capell-seo-suite.php,packages/seo-suite/config/exchanger.php. -
Data objects live in
src/Data/; use them for payloads, form state, and view models.
Extension Points
- Contracts:
ActionContract,AiActionContextInterface,ContentTargetContract,ExchangerInterface,SchemaTemplate,SearchConsoleClientInterface,SearchMetaDataSectionExtender,SearchMetaDataSectionExtenderResolverInterface,SeoPublishReportProvider. - Events:
AiGenerationCompleted,AiGenerationFailed,AiGenerationStarted. - Listeners:
ClearAiDiscoveryCacheOnPageDeleted,ClearAiDiscoveryCacheOnPageSaved,LogAiGeneration,NotifyAiFailure,RecordBrokenLink,SeedAiCrawlerRulesOnSiteCreated. - Register Capell extension points, routes, migrations, settings, render hooks, and resources from service providers.
Install Impact
- Adds SEO and AI-related tables/settings.
- Extends page and site admin form-builder.
- Adds SEO admin pages and widgets.
- Adds llms.txt, llms-full.txt, robots.txt, and page Markdown frontend output.
- Requires Site Discovery for public page discovery and sitemap outputs.
- Adds config for AI provider/model, image model, Search Console, publish gates, and prompts.
Install And Setup
- Install with
composer require capell-app/seo-suitein the host Capell application. - Install and migrate hard dependencies first:
capell-app/insightsandcapell-app/site-discovery. - Run
php artisan capell:seo-suite-installin the host app after Composer install. The command publishes all SEO Suite schema migrations and settings migrations. - Regenerate Filament Shield permissions in demo/admin apps after installation:
php artisan shield:generate --all --panel=admin. - Run migrations through the host application package install flow.
- Make sure the web server routes generated discovery documents through Laravel. SEO Suite owns
/llms.txt,/llms-full.txt,/robots.txt,/index.md, and/{url}.md; do not let a static-file rule return404before the Laravel front controller can run. - In this repository, verify package changes with
vendor/bin/pest; do not usephp artisan.
Web Server Routing
The default Laravel Apache .htaccess works because it rewrites any missing file to public/index.php. Custom Apache or nginx configs often add static-file shortcuts for .txt, .xml, or .md; those shortcuts must exclude SEO Suite routes.
For nginx, put exact discovery routes before generic static-asset locations:
location = /robots.txt { try_files /__missing__ /index.php$is_args$args; }
location = /llms.txt { try_files /__missing__ /index.php$is_args$args; }
location = /llms-full.txt { try_files /__missing__ /index.php$is_args$args; }
location = /index.md { try_files /__missing__ /index.php$is_args$args; }
location ~ ^/.+\.md$ { try_files $uri /__missing__ /index.php$is_args$args; }
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
For Apache, keep Laravel's front-controller rewrite active for missing files:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
If a vhost has explicit static handlers for *.txt or *.md, add exceptions for /robots.txt, /llms.txt, /llms-full.txt, /index.md, and generated page Markdown URLs before those static handlers.
Approved Improvement Roadmap
These items are approved product direction for the package. Keep implementation in Actions, console commands, typed Data objects, package settings, and Filament pages rather than embedding SEO behavior in host applications.
Diagnostics And Install Safety
capell:seo-suite-doctorchecks route registration, route collisions, installed package state, AI Discovery settings, generated document responses, redirects, content types, public cache headers, sitemap XML, public-output leak markers, and web-server interception symptoms.- The edit-page integration contributes
EditPageAuditTabsWidget, a lazy tabbed SEO/PageSpeed audit surface with lightweight issue-count badges so editors do not load both audit bodies up front. - SEO Suite owns
/robots.txt,/llms.txt,/llms-full.txt,/index.md, and/{url}.mdunless a host app intentionally overrides those routes and delegates to SEO Suite generators. - Add install/setup diagnostics that warn when generated Markdown is returned with HTTP
404, when a static vhost block handles.txtor.mdbefore Laravel, or when the package is installed without Site Discovery outputs available.
AI Discovery Quality
- Expand the AI Discovery admin page into a coverage dashboard that shows included pages, excluded pages with reasons, missing summaries, duplicate entity names, stale snapshots, unavailable Markdown views, and sitemap-visible pages missing from AI Discovery.
- Add stale-cache controls and a regenerate action for AI Discovery outputs so editors can refresh
llms.txt,llms-full.txt, robots, and page Markdown after content or policy changes. - Keep crawler policy presets explicit: search-visible/training-restricted, open, restrictive, and private or staging lockdown. Render
robots.txtfrom policy objects and override rows rather than one-off strings.
Public Output Auditing
- Add a public-output leak scanner that crawls generated sitemap, AI Discovery, Markdown, and robots outputs and fails if it finds admin URLs, signed URLs, model IDs, field paths, Livewire internals, unpublished content, or editor-only metadata.
- Add a structured data audit surface that previews each page graph and flags missing required fields, duplicate/conflicting entities, invalid URLs, stale marketplace pricing or rating values, and JSON-LD validation failures.
Integration With Site Discovery
- Consume a unified Site Discovery URL registry as the canonical source for public URLs, canonical status, robots directives, site/language scope, source package, last modified state, and output eligibility.
- Compare AI Discovery coverage against sitemap coverage so public indexable pages do not silently drop out of
llms.txtor page Markdown output.
Admin And Access
-
BrokenLinksPage (packages/seo-suite/src/Filament/Pages/BrokenLinksPage.php, slug
broken-links) -
NotFoundUrlsPage (packages/seo-suite/src/Filament/Pages/NotFoundUrlsPage.php, slug
missing-pages) -
SeoAuditPage (packages/seo-suite/src/Filament/Pages/SeoAuditPage.php, slug
seo-audit) -
AiDiscoveryPage (packages/seo-suite/src/Filament/Pages/AiDiscoveryPage.php, slug
ai-discovery) -
TranslationCoveragePage (packages/seo-suite/src/Filament/Pages/TranslationCoveragePage.php, slug
translation-coverage) -
Policy: AiCreatorPolicy (packages/seo-suite/src/Policies/AiCreatorPolicy.php)
-
Gate: AiMetricsWidgetAbstract:
developer,admin,super_admin -
Gate: BrokenLinksPage: Filament Shield page permissions
-
Gate: NotFoundUrlsPage: Filament Shield page permissions
-
Gate: SeoAuditPage: Filament Shield page permissions
-
Gate: AiDiscoveryPage: Filament Shield page permissions
-
Gate: TranslationCoveragePage: Filament Shield page permissions
Common Pitfalls
- Missing
insights_eventsorinsights_visitstables will breakNotFoundUrlsPageand some dashboard widgets. That means the Insights dependency has not been migrated in the host app. - Missing
broken_links,page_seo_snapshots,search_console_url_metrics, or AI creator tables meanscapell:seo-suite-installdid not publish the full SEO Suite schema. - Do not enable AI creator without checking provider credentials and review workflow.
- Search Console requires credentials and property URL.
- Publish gates can block publishing when required metadata is missing.
- Prism AI telemetry is defensive around missing usage data, and the circuit breaker is scoped per configured provider so one provider outage does not disable every AI provider.
- PageSpeed digest default recipients resolve through the user role relation when available rather than loading every user into memory.
- Site Discovery owns sitemap output and public URL discovery; SEO Suite consumes that public discovery boundary for AI Discovery.
- Review AI Discovery summaries, Markdown previews, and crawler policy before launching a site that should be visible to AI search and answer engines.
Docs
- docs index
- ai-discovery.md
- credits-and-acknowledgements.md
- extending-seo-suite.md
- overview.md
- publish-gates.md
- schema-templates.md
- search-console.md
- seo-intelligence.md
- seo-meta-and-discoverability.md
- sitemaps.md
Testing
Run package tests from the repository root:
vendor/bin/pest packages/seo-suite/tests --configuration=phpunit.xml
Focused install and Filament render checks:
vendor/bin/pest packages/seo-suite/tests/Feature/AiDiscovery/AiDiscoveryMigrationTest.php packages/seo-suite/tests/Feature/Filament/Pages/BrokenLinksPageTest.php --configuration=phpunit.xml
Maintenance Notes
- Put behaviour changes in
src/Actions/; UI classes, commands, and controllers should call actions instead of owning domain logic. - Use package
Dataclasses at boundaries instead of passing anonymous arrays between layers. - Use backed enums for persisted values and enum labels for Filament options.
Overview A shorter package overview for marketplace and account review. Open
SEO Suite
Status: Available, schema-owning · Kind: package · Tier: premium · Bundle: search-seo · Contexts: admin, frontend, console · Product group: Capell Search & SEO
This page is the consolidated implementation overview for the SEO Suite package. It is extracted from the package README, service providers, migrations, config files, routes, resources, models, actions, and the shared Capell ERD notes where available.
What This Package Adds
SEO Suite adds metadata panels, AI Discovery outputs, structured data, broken link tracking, Search Console insights, AI-assisted content briefs, generated-output diagnostics, and publish checks.
- Page and site SEO schema extenders, including the page editor SEO settings tab, report-backed edit audit widget, and Pages-list audit overview widget.
- Page SEO reports cover every enum-backed check: metadata, canonical URL, robots, schema, social image, image alt text, internal links, broken links, redirect opportunities, translation coverage, sitemap URL availability,
llms.txteligibility, and Search Console status. - SEO audit, AI Discovery, broken links, not-found URLs, and translation coverage pages.
- AI creator actions for briefs, images, layouts, metadata suggestions, and draft application.
- AI Discovery generation for
llms.txt, optionalllms-full.txt, per-page Markdown views,robots.txtAI crawler rules, and page-readiness audit signals. - AI Discovery admin management for browsing pages, filling summaries, toggling page inclusion, previewing Markdown, and reviewing readiness issue counts.
- Search Console sync and dashboard reports.
- Generated-output diagnostics, route ownership checks, AI Discovery coverage, sitemap parity, public-output leak scanning, structured data reporting, and stale-output regeneration controls.
Developer Notes
Exposes SEO work as actions, contracts, data objects, settings schemas, and extenders that connect to core pages, sites, translations, routes, and optional AI providers.
- SeoSuiteServiceProvider registers settings, pages, extenders, commands, routes, and views.
- Config files: capell-seo-suite.php and exchanger.php.
- Migrations create broken links, page SEO snapshots, Search Console metrics, AI creator contexts, AI histories, AI sessions, AI Discovery site profiles, page profiles, crawler rules, and snapshots.
- Commands cover install, setup, AI cache, AI usage, and OpenAI connection testing.
- Controllers: LlmsTxtController, LlmsFullTxtController, PageMarkdownController.
AI Discovery
AI Discovery is an optional SEO Suite surface for AI-readable public content. It uses Capell's page, translation, URL, Site Discovery, robots, and SEO metadata rather than reverse-converting anonymous frontend HTML.
llms.txtis generated per active site and language from public discoverable pages.llms-full.txtis opt-in per site/language and is bounded by page count and byte limits.- Page Markdown output is available at
index.mdand{url}.md; the controller can use the active frontend context or resolve the site/language from the request URL. Accept: text/markdownrendering is separate from.mdroutes and must be enabled with the site/languageaccept_markdown_enabledcontrol.robots.txtincludes configurable AI crawler rules. Site-specific rows override global rows with the same provider, user-agent, and path, including disabling a global default for one site.- Site profiles control
llms.txt,llms-full.txt, Markdown pages, default include behavior, cache TTL, default section, limits, intro Markdown, and enabled/disabled state. - Page profiles control include/exclude, summary, section, priority, optional Markdown override, generated Markdown state, and exclusion reason.
- Page editor quick-fill fields live in the SEO settings tab under AI Discovery and sync into page profiles.
- Site/language quick-fill fields live in site translation SEO metadata under AI Discovery and sync into site profiles.
- Snapshot records track generated output hashes, byte sizes, cache keys, expiry, status, and page/site context.
- Cache invalidation marks snapshots stale and forgets cached documents on page save/delete events and AI Discovery profile changes.
- Crawler rules seed from
capell-seo-suite.ai_discovery.default_crawler_rules, can be shaped by theai_discovery_crawler_policysetting, and render robots snippets for OAI-SearchBot, GPTBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Google-Extended, and CCBot. - Full implementation notes live in AI Discovery.
Operational Notes
Gives editors and site operators practical checks before publishing and operational dashboard reports after launch.
- Adds SEO and AI-related tables/settings.
- Extends page and site admin form-builder; page-level SEO fields live in this package rather than the core admin sidebar settings.
- Adds SEO admin pages and widgets, including the Pages-list overview widget through
PageResourceWidgetExtender. - Adds
llms.txt,llms-full.txt,robots.txt, and page Markdown frontend output. - Requires Site Discovery for public page discovery and sitemap outputs.
- Adds config for AI provider/model, image model, Search Console, publish gates, and prompts.
- Manifest metadata declares the SEO Suite settings classes, admin permissions, PageSpeed audit/digest capabilities, supported Blog/Publishing Studio/URL Manager integrations, and cache invalidation sources for generated AI Discovery output.
Diagnostics
capell:seo-suite-doctor verifies route ownership, installed dependencies, generated document status codes, content types, cache headers, crawler policy, Site Discovery availability, and common web-server interception symptoms.
The doctor and dashboard actions expose AI Discovery coverage, excluded reasons, missing summaries, stale snapshots, Markdown availability, noindex conflicts, public-output leak scanning, sitemap XML validity, unsafe sitemap URLs, structured data reports, stale Markdown regeneration controls, and crawler previews for sitemap XML, robots, llms.txt, llms-full.txt, page Markdown, and schema output.
Structured data reporting also includes marketplace freshness warnings for Product/Offer prices and AggregateRating metadata, including missing or expired priceValidUntil values and stale or undated rating data.
Edit Page Audits
The package contributes one edit-page header widget, EditPageAuditTabsWidget, which groups the SEO audit and PageSpeed audit into lazy tabs. Lightweight Livewire badges show current issue counts for each tab, while the heavier audit bodies load only for the active tab. The original standalone SEO and PageSpeed widgets still render as full Filament widget sections when used outside the tab container.
Remaining Roadmap
- Build a dedicated crawler-preview diagnostics tab if the existing doctor and AI Discovery admin surfaces need a richer UI.
- Add the next tier of scored content analysis: focus keyword grading, heading structure, readability, and bulk metadata workflows.
Data And Retention
- broken_links stores page, target URL, HTTP status, and last check time.
- page_seo_snapshots store page SEO report state.
- search_console_url_metrics store imported Search Console values.
- ai_creator_contexts, ai_generation_histories, and ai_creator_sessions store AI workflow state.
- ai_discovery_site_profiles, ai_discovery_page_profiles, ai_discovery_crawler_rules, and ai_discovery_snapshots store AI Discovery configuration, robots controls, and generated document state.
- SEO data connects to sites, pages, languages, users, and publishing-studio.
Content Graph
SEO Suite contributes content graph edges from page SEO snapshots and broken-link records back to their pages. SEO snapshots use weak DescribesPage edges, and broken links use weak FoundOnPage edges. These records show up in impact previews and diagnostics without blocking ordinary page deletes as strong dependencies.
Screenshot Plan
seo-audit-page.png:SeoAuditPagewith a seededpage_seo_snapshotsrow.broken-links-page.png:BrokenLinksPagewith a seededbroken_linksrow.translation-coverage-page.png:TranslationCoveragePagewith seeded site/page/language data.page-seo-panel.png: core Page edit screen with the SEO Suite tab/panel.search-console-insights-panel.png: admin dashboard with seededsearch_console_url_metrics.ai-creator-action-modal.png: core Page edit screen with the SEO Suite AI Creator action modal.sitemap-page.png: sitemap coverage surface with seeded URL state.
Optional follow-up captures remain declared in docs/screenshots.json but are not promoted until the runner has the needed fixture support: not-found-urls-page.png, ai-discovery-page.png, seo-settings-page.png, llms-txt-output.png, robots-txt-output.png, and page-markdown-output.png.
Current marketplace media promotes only the strongest SEO audit and sitemap captures. Generic dashboard/settings captures and duplicate Site Health screens were demoted back to runner evidence until recaptured as their labelled SEO Suite workflows.
Screenshots
Pitfalls
capell:seo-suite-installmust publish all SEO Suite schema migrations. The screenshot pass caught missing AI creator, broken link, page snapshot, and Search Console tables; the install command now publishes the complete set.- SEO Suite depends on Insights for
NotFoundUrlsPageand dashboard widgets. In a disposable app, install and migratecapell-app/insightsbefore capturing those surfaces. - Regenerate Filament Shield permissions after installing SEO Suite in a demo app:
php artisan shield:generate --all --panel=admin. - Do not enable AI creator without checking provider credentials and review workflow.
- Search Console requires credentials and property URL.
- Publish gates can block publishing when required metadata is missing.
- Site Discovery owns sitemap output; regenerate it after route or content changes.
- Keep AI Discovery page summaries specific. Thin summaries, duplicate entity names, no canonical URL, no schema, no server-rendered text, disabled Markdown views, and noindex pages are reported by the AI-readiness audit action.
- Review crawler defaults before publishing robots output; search crawlers and training crawlers are deliberately configurable separately.
- Use the SEO Suite settings crawler policy as the default posture, then use crawler rule rows when a site needs a provider-specific override.
- Prism provider telemetry treats missing usage data as zero tokens, and the circuit breaker is scoped by configured provider.
- PageSpeed digest default recipients use the user role relation when available instead of loading all users into memory.
Verification
- Run
vendor/bin/pest packages/seo-suite/tests --configuration=phpunit.xml. - Run the relevant host-app migration or package install flow in a disposable database.
- Open the listed admin or frontend surface and compare it with the screenshot plan.
Package Manifest
- Composer name:
capell-app/seo-suite - Product group: Capell Search & SEO
- Kind: package
- Tier: premium
- Bundle: search-seo
- Contexts:
admin,frontend,console - Requires:
capell-app/admin,capell-app/frontend,capell-app/insights,capell-app/site-discovery - Optional dependencies: None listed.
SEO Suite relies on Site Discovery for public page discovery and sitemap outputs.
Admin Surfaces
- BrokenLinksPage (packages/seo-suite/src/Filament/Pages/BrokenLinksPage.php, slug
broken-links) - AiDiscoveryPage (packages/seo-suite/src/Filament/Pages/AiDiscoveryPage.php, slug
ai-discovery) - NotFoundUrlsPage (packages/seo-suite/src/Filament/Pages/NotFoundUrlsPage.php, slug
missing-pages) - SeoAuditPage (packages/seo-suite/src/Filament/Pages/SeoAuditPage.php, slug
seo-audit) - TranslationCoveragePage (packages/seo-suite/src/Filament/Pages/TranslationCoveragePage.php, slug
translation-coverage)
Commands
capell:admin-clear-ai-cache(packages/seo-suite/src/Console/Commands/ClearAiCacheCommand.php)capell:seo-suite-install(packages/seo-suite/src/Console/Commands/InstallCommand.php)capell:admin-monitor-ai-usage(packages/seo-suite/src/Console/Commands/MonitorAiUsageCommand.php)capell:seo-suite-setup(packages/seo-suite/src/Console/Commands/SetupCommand.php)capell:admin-test-openai(packages/seo-suite/src/Console/Commands/TestOpenAiConnectionCommand.php)
Routes And Config
- Config: packages/seo-suite/config/capell-seo-suite.php
- Config: packages/seo-suite/config/exchanger.php
Permissions And Gates
- Policy: AiCreatorPolicy (packages/seo-suite/src/Policies/AiCreatorPolicy.php)
- Gate: AiMetricsWidgetAbstract:
developer,admin,super_admin - Gate: BrokenLinksPage: Filament Shield page permissions
- Gate: AiDiscoveryPage: Filament Shield page permissions
- Gate: NotFoundUrlsPage: Filament Shield page permissions
- Gate: SeoAuditPage: Filament Shield page permissions
- Gate: TranslationCoveragePage: Filament Shield page permissions
Migrations
- Migration: 2026_04_18_000002_create_ai_creator_contexts_table.php
- Migration: 2026_04_18_000003_create_ai_generation_histories_table.php
- Migration: 2026_04_18_000004_create_ai_creator_sessions_table.php
- Migration: create_ai_discovery_crawler_rules_table.php
- Migration: create_ai_discovery_page_profiles_table.php
- Migration: create_ai_discovery_site_profiles_table.php
- Migration: create_ai_discovery_snapshots_table.php
- Migration: create_broken_links_table.php
- Migration: create_page_seo_snapshots_table.php
- Migration: create_search_console_url_metrics_table.php
- Settings migration: 2026_04_18_000001_update_ai-orchestrator_settings_add_ai_creator.php
- Settings migration: create_ai-orchestrator_settings.php
ERD Excerpt
erDiagram
SITES ||--o{ BROKEN_LINKS : scans
PAGES ||--o{ BROKEN_LINKS : contains
SITES ||--o{ AI_CREATOR_CONTEXTS : scopes
SITES ||--o{ AI_CREATOR_SESSIONS : scopes
USERS ||--o{ AI_CREATOR_SESSIONS : runs
AI_GENERATION_HISTORIES ||--o{ AI_CREATOR_SESSIONS : supports
AI_CREATOR_SESSIONS ||--o{ AI_GENERATION_HISTORIES : produces
LANGUAGES ||--o{ AI_GENERATION_HISTORIES : localizes
PAGES ||..o{ AI_GENERATION_HISTORIES : pageable_context
BROKEN_LINKS {
bigint id PK
bigint page_id FK
string target_url
int http_status
timestamp last_checked_at
}
AI_CREATOR_SESSIONS {
bigint id PK
bigint site_id FK
bigint user_id FK
bigint ai_history_id FK
bigint workspace_id FK
string status
json generated_output
}
Screenshot Automation
Deployment should read screenshots.json, install the package with demo data, resolve each admin surface or frontend URL, and write images to packages/seo-suite/docs/screenshots.
- Page SEO panel.
- SEO audit page.
- Broken links page.
- AI Creator action modal.
- Sitemap page.
- Translation coverage page.
- Search Console insights panel.
- Optional follow-up captures: AI Discovery page, SEO Suite settings page, not-found URLs, and public AI Discovery outputs (
/llms.txt,/robots.txt, and/index.md).
Downloads and releases
- Total downloads
- 0
- Last downloaded
- No downloads yet
Version history
1 release-
v1.0.0May 3, 2026
No approved reviews yet. Reviews from eligible customers appear here after marketplace review.
Payment and licences
How marketplace purchases work
Capell keeps payment, account ownership, package receipts, and install access separate so a failed step can be recovered without guessing where the licence lives.
Who takes the payment?
Paid marketplace checkouts are sent to Stripe. Capell does not collect card details inside your CMS; Stripe confirms the payment and Capell activates the matching marketplace licence for the Capell account that approved the install.
How is the licence attached?
The licence is created against the signed-in Capell account first. When the hosted install flow returns to your CMS, Capell binds that licence to the requesting site and sends back the install authorization needed to continue.
Where does Anystack fit?
Anystack can be the package commerce and distribution surface for marketplace products. Capell still records the account licence and installed receipt, then relays later Anystack product or licence events only to connected sites that already have the package installed.
What happens if checkout is cancelled or expires?
No licence is created until Stripe confirms payment. If checkout is cancelled, start it again from the same review screen. If the quote expires, return to the marketplace in your CMS and start a fresh install flow so pricing and package metadata are recalculated.
What should I do if something looks wrong?
Keep the support reference shown on the review screen or receipt, then contact support before retrying with a different account. For missing licences, failed returns, or Anystack receipt mismatches, Capell can reconcile the Stripe session, Capell account, package receipt, and connected site from that reference.