Skip to main content

Capell uses essential storage for sessions, security, and interface preferences. Analytics and marketing storage stay off unless you accept them.

Cookie Policy
SEO Suite marketplace hero artwork.

SEO Suite

SEO Suite adds metadata panels, structured data, broken link tracking, search insight, content briefs, and publish checks.

Overview

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.

/ 06
6 captures Visual gallery
Install

Install on your Capell site in three steps.

Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.

Support
First-party Capell support for active marketplace customers.
Data access
Reads and writes Capell content structures required by the package; public output receives rendered content only.
  1. 01

    Require the package

    composer require capell-app/seo-suite
  2. 02

    Register the extension

    php artisan capell:extension:enable capell-app-seo-suite
  3. 03

    Clear schema cache

    php artisan capell:admin:clear-schemas-cache
Works well with this

Related extensions

Browse the packages that usually pair with SEO Suite or buy the suite it belongs to.

Included in suites
Marketing launch

Growth Campaign Suite

Launch measurable campaigns in Capell with landing pages, form capture, SEO readiness, site search, and redirect recovery in one buyer path.

Campaign Studio Form Builder SEO Suite Site Search URL Manager
Search and speed

Search & Performance Suite

Improve discovery and page speed together with SEO output, site search, URL recovery, and frontend asset optimization for public Capell pages.

SEO Suite Site Search URL Manager Frontend Optimizer
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, optional llms-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 SeoCheckKeyEnum check: metadata, canonical, robots, schema, social image, image alt text, internal links, broken links, redirects, translation coverage, sitemap URL availability, llms.txt eligibility, 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

Prism PHP GitHub preview

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-suite in the host Capell application.
  • Install and migrate hard dependencies first: capell-app/insights and capell-app/site-discovery.
  • Run php artisan capell:seo-suite-install in 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 return 404 before the Laravel front controller can run.
  • In this repository, verify package changes with vendor/bin/pest; do not use php 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-doctor checks 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}.md unless 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 .txt or .md before 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.txt from 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.txt or 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_events or insights_visits tables will break NotFoundUrlsPage and 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 means capell:seo-suite-install did 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

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 Data classes 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.txt eligibility, 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, optional llms-full.txt, per-page Markdown views, robots.txt AI 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.txt is generated per active site and language from public discoverable pages.
  • llms-full.txt is opt-in per site/language and is bounded by page count and byte limits.
  • Page Markdown output is available at index.md and {url}.md; the controller can use the active frontend context or resolve the site/language from the request URL.
  • Accept: text/markdown rendering is separate from .md routes and must be enabled with the site/language accept_markdown_enabled control.
  • robots.txt includes 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 the ai_discovery_crawler_policy setting, 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: SeoAuditPage with a seeded page_seo_snapshots row.
  • broken-links-page.png: BrokenLinksPage with a seeded broken_links row.
  • translation-coverage-page.png: TranslationCoveragePage with 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 seeded search_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-install must 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 NotFoundUrlsPage and dashboard widgets. In a disposable app, install and migrate capell-app/insights before 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).
History

Downloads and releases

Total downloads
0
Last downloaded
No downloads yet

Version history

1 release
  1. v1.0.0
    May 3, 2026
Write a review

Write your comment here. If you are not logged in, you will be asked to log in or create an account before it can be submitted.

Login or create an account is required before the review is saved.

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.