### Run the free core demo Source: https://docs.rankbeam.dev/guide/demo Clones the example repository and starts the demo application using Docker Compose. ```bash git clone https://github.com/rankbeam/rankbeam-examples cd rankbeam-examples/demo docker compose up --build ``` -------------------------------- ### Manual Installation Steps Source: https://docs.rankbeam.dev/pro/installation Perform the installation steps manually by publishing assets and running migrations individually. ```bash php artisan vendor:publish --tag=seo-pro-config php artisan vendor:publish --tag=seo-pro-migrations php artisan migrate ``` -------------------------------- ### Install Optional Sitemap Support Source: https://docs.rankbeam.dev/guide/installation Install the spatie/laravel-sitemap package to enable sitemap generation features. ```bash composer require spatie/laravel-sitemap ``` -------------------------------- ### Install and Configure Package Source: https://docs.rankbeam.dev/guide/installation Run these commands to install the package, publish the configuration file, and execute necessary database migrations. ```bash composer require rankbeam/laravel-seo php artisan vendor:publish --tag=seo-config php artisan migrate ``` -------------------------------- ### Install Browsershot dependency Source: https://docs.rankbeam.dev/guide/og-image Install the required PHP package to enable headless browser functionality. ```bash composer require spatie/browsershot ``` -------------------------------- ### Install Filament UI Packages Source: https://docs.rankbeam.dev/pro/installation Install the required Filament and Rankbeam SEO Filament packages to enable the dashboard UI. ```bash composer require filament/filament rankbeam/laravel-seo-filament ``` -------------------------------- ### Run the Pro Installer Source: https://docs.rankbeam.dev/pro/installation Execute the artisan command to publish configuration files and run necessary database migrations. ```bash php artisan seo-pro:install ``` -------------------------------- ### Verify Installation Source: https://docs.rankbeam.dev/pro/broken-links Use the doctor command to validate the configuration, database tables, and queue connection. ```bash php artisan seo:doctor ``` -------------------------------- ### Installing the RankBeam Laravel SEO Package Source: https://docs.rankbeam.dev/blog/json-ld-schema-graphs-in-laravel Install the required package via Composer to begin implementing schema graphs. ```bash composer require rankbeam/laravel-seo ``` -------------------------------- ### Publish Migrations and Verify Setup Source: https://docs.rankbeam.dev/pro/search-console Run artisan commands to publish the token migration table and verify the current configuration status. ```bash php artisan vendor:publish --tag=seo-pro-migrations php artisan migrate ``` -------------------------------- ### Install and Configure Rankbeam Source: https://docs.rankbeam.dev/blog/replaced-rank-math-with-a-laravel-package Commands to install the package and publish necessary configuration and migration files. ```bash composer require rankbeam/laravel-seo php artisan vendor:publish --tag=seo-config php artisan vendor:publish --tag=seo-migrations php artisan migrate ``` -------------------------------- ### Install SEO Filament Package Source: https://docs.rankbeam.dev/guide/filament Run this command in your terminal to add the SEO package to your Laravel project. ```bash composer require rankbeam/laravel-seo-filament ``` -------------------------------- ### Swap the package via Composer Source: https://docs.rankbeam.dev/guide/upgrade-from-v1 Remove the old package and install the new version to begin the migration. ```bash composer remove fibonoir/laravel-seo composer require rankbeam/laravel-seo ``` -------------------------------- ### Run Pro MCP Server Source: https://docs.rankbeam.dev/blog/replaced-rank-math-with-a-laravel-package Starts the Model Context Protocol server to allow AI tools like Claude or Cursor to interact with site SEO data. ```bash php artisan seo-pro:mcp ``` -------------------------------- ### Install Puppeteer runtime Source: https://docs.rankbeam.dev/guide/og-image Install the Puppeteer node package in the application root to provide the browser runtime. ```bash npm install puppeteer ``` -------------------------------- ### Configure Repository and Require Package Source: https://docs.rankbeam.dev/pro/installation Add the private repository to your composer configuration and install the package. Composer will prompt for your license credentials. ```bash composer config repositories.rankbeam-pro composer https://laravel-seo-pro.composer.sh composer require rankbeam/laravel-seo-pro ``` -------------------------------- ### Enable OG Image Generation Source: https://docs.rankbeam.dev/guide/og-image Configure the SEO package to enable OG image generation. Requires spatie/browsershot and Chrome installed. ```php // config/seo.php 'og_image' => [ 'enabled' => true, // requires spatie/browsershot + Chrome ], ``` -------------------------------- ### Request Examples for Markdown Content Source: https://docs.rankbeam.dev/guide/markdown-for-bots Examples of how requests trigger markdown responses versus standard HTML responses. ```text GET /blog/my-post → text/html (your normal page) GET /blog/my-post?format=md → text/markdown GET /blog/my-post (Accept: text/markdown) → text/markdown ``` -------------------------------- ### Verify installation with seo:doctor Source: https://docs.rankbeam.dev/pro/installation Run the doctor command to check the health of the SEO installation, including database tables, scan targets, and queue configuration. ```bash php artisan seo:doctor ``` ```text Rankbeam SEO — health check Application ✓ app.url is https://shop.example.com Database (core) ✓ Core tables present (seo_meta, seo_defaults) Database (Pro) ✓ Pro tables present (redirects, 404 logs, scan runs/issues/results) Scanning ✓ Scan targets registered: posts, static Queue ! Queue connection is 'sync' ↳ Scans run inline on the dispatching request/CLI. Use a real queue … ✓ Scan queue: default (seo-pro.scan.queue unset) Broken links ✓ Broken-link crawler is off (optional) AI assist ✓ AI assist is off (optional) Search Console ✓ Search Console is off (optional) ! Healthy with warnings — 1 warning(s), 8 passed. ``` -------------------------------- ### Example llms.txt Markdown Structure Source: https://docs.rankbeam.dev/blog/answer-engine-optimization-for-laravel A sample format for an llms.txt file containing a site header and a list of key content links. ```markdown # Acme Blog > Engineering notes from the Acme team. ## Posts - [Shipping fast without breaking SEO](https://acme.test/posts/shipping): how we deploy 20×/day. - [Our JSON-LD entity graph](https://acme.test/posts/schema) ``` -------------------------------- ### Audit Output Example Source: https://docs.rankbeam.dev/blog/answer-engine-optimization-for-laravel Example output showing warnings for missing author or date signals in article structured data. ```text ⚠ aeo_missing_author article structured data has no author entity ⚠ aeo_article_missing_date article has no datePublished / dateModified ``` -------------------------------- ### Example JSON-LD Output Source: https://docs.rankbeam.dev/blog/json-ld-schema-graphs-in-laravel A sample of the generated JSON-LD graph showing cross-node references via @id. ```json [ { "@context": "https://schema.org", "@id": "https://example.com#organization", "@type": "Organization", "name": "Merchant Demo", "url": "https://example.com" }, { "@context": "https://schema.org", "@id": "https://example.com#website", "@type": "WebSite", "publisher": { "@id": "https://example.com#organization" } }, { "@context": "https://schema.org", "@id": "https://example.com/blog/seo-best-practices#webpage", "@type": "WebPage", "name": "10 SEO Best Practices That Still Work in 2026", "datePublished": "2026-06-10T11:19:29+00:00", "isPartOf": { "@id": "https://example.com#website" }, "about": { "@id": "https://example.com#organization" } } ] ``` -------------------------------- ### View generated robots.txt for guarded environments Source: https://docs.rankbeam.dev/guide/indexing-guard Example of the robots.txt content automatically generated when the indexing guard is active in a restricted environment. ```text # robots.txt — managed by Rankbeam # Indexing guard ACTIVE: this app is running in the "staging" environment, # which is not in seo.indexing_guard.allowed_environments. Every crawler is # disallowed so this non-production site stays out of search results. # https://rankbeam.dev/guide/indexing-guard User-agent: * Disallow: / ``` -------------------------------- ### Initialize SchemaGraph Source: https://docs.rankbeam.dev/guide/schema Create a schema graph and add organization, website, and webpage nodes. ```php use Rankbeam\Seo\Facades\SEO; use Rankbeam\Seo\Services\Schema\SchemaCollection; use Rankbeam\Seo\Services\Schema\SchemaGraph; $seo = SEO::resolve($post); $graph = new SchemaGraph(); $schemas = SchemaCollection::make() ->add($graph->organization()) // @id: {app_url}#organization ->add($graph->webSite()) // @id: {app_url}#website, publisher → #organization ->add($graph->webPage($seo)); // @id: {page_url}#webpage, isPartOf → #website ``` -------------------------------- ### Malicious Input Example Source: https://docs.rankbeam.dev/blog/json-ld-schema-graphs-in-laravel An example of a string that would terminate a script tag prematurely if not properly escaped. ```text My post ``` -------------------------------- ### Run the demo with Pro features Source: https://docs.rankbeam.dev/guide/demo Configures authentication credentials and enables the Pro flag to run the audit features during the Docker build process. ```bash export COMPOSER_AUTH='{"http-basic":{"laravel-seo-pro.composer.sh":{"username":"you@example.com","password":"YOUR-LICENSE-KEY"}}}' WITH_PRO=true docker compose up --build ``` -------------------------------- ### Run SEO and Readability Checklist Source: https://docs.rankbeam.dev/blog/answer-engine-optimization-for-laravel Executes a CLI command to evaluate a specific model instance against keyword and readability standards. ```bash php artisan seo-pro:checklist "App\Models\Post" 42 # keyword + readability, pass/warn/fail ``` -------------------------------- ### Run SEO explanation commands Source: https://docs.rankbeam.dev/guide/explain Use these commands to debug SEO resolution for specific models or routes. The model must implement the HasSEO trait. ```bash # Explain a specific record php artisan seo:explain "App\Models\Post" 42 # Explain the first record of a model php artisan seo:explain "App\Models\Post" # With a route-defaults layer and a locale php artisan seo:explain "App\Models\Post" 42 --route=posts.show --locale=de # Machine-readable php artisan seo:explain "App\Models\Post" 42 --json ``` -------------------------------- ### Verify Migration Readiness Source: https://docs.rankbeam.dev/guide/wordpress-migration-runbook Checklist of commands and conditions to validate before removing legacy WordPress packages or tables. ```bash php artisan seo:audit --strict ``` ```bash php artisan seo:doctor ``` -------------------------------- ### Explicit SEO Meta Save Source: https://docs.rankbeam.dev/concepts/resolver-precedence Example of setting robots meta data directly on a model instance. ```php $page->saveSEO(['robots' => 'noindex,follow']) ``` -------------------------------- ### Running SEO Checklist via Artisan Source: https://docs.rankbeam.dev/pro/on-page-checklist Execute SEO checks from the command line for specific models. Supports JSON output and strict mode for CI/CD pipelines. ```bash php artisan seo-pro:checklist "App\Models\Post" 42 php artisan seo-pro:checklist "App\Models\Post" 42 --json # machine-readable php artisan seo-pro:checklist "App\Models\Post" 42 --strict # non-zero exit on any failure (CI) php artisan seo-pro:checklist "App\Models\Post" 42 --locale=it ``` -------------------------------- ### Register sitemap sources Source: https://docs.rankbeam.dev/guide/sitemaps Register models, closures, or static URLs in a service provider's boot method. ```php use App\Models\Post; use Rankbeam\Seo\Facades\SEO; // A model class — every (indexable) record's getUrlForSEO() SEO::sitemaps()->register('posts', Post::class); // A closure returning URLs SEO::sitemaps()->register('pages', fn () => ['/about', '/contact']); // Any iterable of URLs SEO::sitemaps()->register('legal', ['/imprint', '/privacy']); ``` -------------------------------- ### Enable Markdown for Bots in Configuration Source: https://docs.rankbeam.dev/guide/markdown-for-bots Add this setting to your configuration file to activate the markdown serving feature. ```bash # config/seo.php 'markdown_for_bots' => [ 'enabled' => true ], ``` -------------------------------- ### Generate sitemaps via CLI Source: https://docs.rankbeam.dev/guide/sitemaps Execute the artisan command to generate sitemap files on disk. ```bash php artisan seo:sitemap ``` -------------------------------- ### Artisan Command: seo-pro:checklist Source: https://docs.rankbeam.dev/pro/on-page-checklist CLI command to run the SEO checklist for a specific model record. ```APIDOC ## php artisan seo-pro:checklist {model} {id} ### Description Runs the SEO checklist for a specific model record via the command line. ### Arguments - **model** (string) - Required - The fully qualified class name of the model (e.g., "App\Models\Post"). - **id** (int) - Required - The ID of the record. ### Options - **--json**: Output the results in a machine-readable JSON format. - **--strict**: Return a non-zero exit code if any failures are detected (useful for CI). - **--locale**: Specify the locale for the check. ``` -------------------------------- ### Start Dedicated Worker Source: https://docs.rankbeam.dev/pro/broken-links Launch a worker specifically for the seo-broken-links queue to process crawl jobs without blocking user-facing tasks. ```bash # --tries=1: a dead job is reclaimed by the next continuation, so queue-level # retries are unnecessary. --timeout must exceed the batch's hard time budget # (seo-pro.broken_links.batch.hard_time_budget_seconds, default 180) plus the # HTTP timeout, so a batch is never killed mid-bookkeeping. php artisan queue:work --queue=seo-broken-links --tries=1 --timeout=240 ``` -------------------------------- ### Configure AI Provider Environment Variables Source: https://docs.rankbeam.dev/pro/ai-assist Set these variables in your .env file to enable and configure the AI provider. Ensure the API key is a pay-as-you-go key, as subscription-only accounts will fail. ```dotenv SEO_PRO_AI_ENABLED=true SEO_PRO_AI_PROVIDER=local SEO_PRO_AI_MODEL=llama3.1 # a model the server has pulled SEO_PRO_AI_LOCAL_BASE_URL=http://localhost:11434/v1 SEO_PRO_AI_LOCAL_ALLOW_PRIVATE=true # required for a localhost server # no API key needed for a local server ``` ```dotenv SEO_PRO_AI_ENABLED=true SEO_PRO_AI_PROVIDER=openai SEO_PRO_AI_API_KEY=sk-... # optional: SEO_PRO_AI_MODEL=gpt-5.4-mini (default: gpt-5.5) ``` ```dotenv SEO_PRO_AI_ENABLED=true SEO_PRO_AI_PROVIDER=anthropic SEO_PRO_AI_API_KEY=sk-ant-... # optional: SEO_PRO_AI_MODEL=claude-haiku-4-5 (default: claude-opus-4-8) ``` ```dotenv SEO_PRO_AI_ENABLED=true SEO_PRO_AI_PROVIDER=google SEO_PRO_AI_API_KEY=AIza... # AI Studio key: aistudio.google.com/apikey # use a paid (billing-enabled) key for real use — the free tier is heavily rate-limited # optional: SEO_PRO_AI_MODEL=gemma-3-12b-it (default: gemini-2.5-flash) ``` -------------------------------- ### Configure sitemap sources Source: https://docs.rankbeam.dev/guide/sitemaps Define models and static URLs in the configuration file. ```php 'sitemap' => [ 'models' => [ \App\Models\Post::class => ['priority' => 0.8, 'changefreq' => 'weekly'], ], 'static_urls' => [ ['url' => '/', 'priority' => 1.0, 'changefreq' => 'daily'], ], ], ``` -------------------------------- ### Example MCP Server Card JSON response Source: https://docs.rankbeam.dev/pro/mcp The JSON structure returned by the server card endpoint, detailing server metadata and available tools. ```json { "$schema": "https://modelcontextprotocol.io/schemas/draft/server-card.json", "name": "com.example/rankbeam-seo", "version": "1.0.0", "title": "Rankbeam SEO MCP server", "description": "Read — and optionally edit — this site's SEO over the Model Context Protocol…", "_meta": { "io.rankbeam.seo/transport": "stdio", "io.rankbeam.seo/launch": "php artisan seo-pro:mcp", "io.rankbeam.seo/tool_count": 10, "io.rankbeam.seo/tools": [ { "name": "seo_resolve", "description": "…" } ] } } ``` -------------------------------- ### Define hreflang link tags Source: https://docs.rankbeam.dev/blog/hreflang-done-right-in-laravel Example of HTML link tags used to declare alternate language versions of a page, including the x-default fallback. ```html ``` -------------------------------- ### Import SEO Data via Artisan Source: https://docs.rankbeam.dev/blog/replaced-rank-math-with-a-laravel-package Run the import command to migrate SEO data from ralphjsmit/laravel-seo, using the --dry-run flag to preview changes. ```bash php artisan seo:import-from ralphjsmit --dry-run # preview php artisan seo:import-from ralphjsmit # then for real ``` -------------------------------- ### Use Wildcards for Environment Matching Source: https://docs.rankbeam.dev/guide/indexing-guard Use wildcards in the configuration array to match multiple environment names. ```php 'allowed_environments' => ['prod*'], ``` -------------------------------- ### Run CSV Import Command Source: https://docs.rankbeam.dev/guide/migrate-from-wordpress Commands to preview or execute the SEO data import from a CSV file. ```bash # Preview first — writes nothing php artisan seo:import-from wordpress-csv \ --file=storage/migrations/seo-export.csv \ --model="App\Models\Post" \ --dry-run # Then import for real php artisan seo:import-from wordpress-csv \ --file=storage/migrations/seo-export.csv \ --model="App\Models\Post" ``` -------------------------------- ### Pre-generate OG Images Source: https://docs.rankbeam.dev/guide/og-image Run the artisan command to generate cards for configured models. ```bash php artisan seo:og-images ``` -------------------------------- ### Configure JSON-LD Schema Source: https://docs.rankbeam.dev/reference/configuration Sets up global organization, publisher, and website metadata for structured data. ```php 'schema' => [ 'organization' => [ 'name' => env('APP_NAME'), 'url' => env('APP_URL'), 'logo' => env('SEO_ORGANIZATION_LOGO'), // 'sameAs' => [], // social profile URLs ], 'publisher' => [ 'name' => env('APP_NAME'), 'logo' => env('SEO_PUBLISHER_LOGO'), ], 'website' => [ 'name' => env('APP_NAME'), 'url' => env('APP_URL'), // 'potentialAction' => [], // SearchAction for sitelinks search box ], ], ``` -------------------------------- ### Register Rankbeam SEO with Claude Code Source: https://docs.rankbeam.dev/pro/mcp Use the CLI to add the MCP server. Ensure the command is run from the application root. ```bash claude mcp add rankbeam-seo -- php artisan seo-pro:mcp ``` ```bash claude mcp list # rankbeam-seo: php artisan seo-pro:mcp - ✔ Connected ``` ```bash claude mcp add rankbeam-seo -- "C:\Users\you\.config\herd\bin\php84\php.exe" "C:\path\to\app\artisan" seo-pro:mcp ``` -------------------------------- ### Generate AI SEO Suggestions via CLI Source: https://docs.rankbeam.dev/pro/ai-assist Use these commands to generate metadata suggestions, explain scan issues, or build schema.org JSON-LD for specific models. ```bash # title + description suggestions for a model php artisan seo-pro:ai-suggest "App\Models\Post" 42 # one field only php artisan seo-pro:ai-suggest "App\Models\Post" 42 --field=description # explain a scan issue (IDs from seo-pro:scan-status) php artisan seo-pro:ai-suggest --issue=17 # suggest a schema.org type + built, validated JSON-LD for a model php artisan seo-pro:suggest-schema "App\Models\Post" 42 ``` -------------------------------- ### CLI IndexNow Submission Source: https://docs.rankbeam.dev/pro/indexnow Submit URLs or sitemaps directly from the command line using the artisan command. Use the --sync flag to run the submission process inline. ```bash php artisan seo-pro:indexnow https://example.com/a https://example.com/b php artisan seo-pro:indexnow --sitemap # submit every URL in the sitemap registry php artisan seo-pro:indexnow --sitemap --sync # run inline instead of queuing ``` -------------------------------- ### Configure IndexNow environment variables Source: https://docs.rankbeam.dev/pro/indexnow Enable IndexNow and set the required ownership key in your environment configuration. ```dotenv SEO_PRO_INDEXNOW_ENABLED=true SEO_PRO_INDEXNOW_KEY=0123456789abcdef0123456789abcdef ``` -------------------------------- ### Verify SEO metadata import Source: https://docs.rankbeam.dev/guide/migrate-from-other-packages Run the audit command to confirm that the imported metadata is correctly mapped and formatted. ```bash php artisan seo:audit # confirm the imported metadata looks right ``` -------------------------------- ### Run Database Import Command Source: https://docs.rankbeam.dev/guide/migrate-from-wordpress Commands to import SEO data directly from Yoast or Rank Math WordPress database tables. ```bash # Yoast SEO php artisan seo:import-from yoast \ --connection=wordpress --model="App\Models\Post" --dry-run # Rank Math php artisan seo:import-from rank-math \ --connection=wordpress --model="App\Models\Post" --table=wp_ ``` -------------------------------- ### Import SEO Metadata with Dry Run Source: https://docs.rankbeam.dev/guide/wordpress-migration-runbook Executes a dry run to verify metadata import from various sources without modifying the database. ```bash # Yoast, from the live WordPress database (configure the connection first) php artisan seo:import-from yoast \ --connection=wordpress \ --model="App\Models\Post" \ --redirects-csv=storage/app/redirects.csv \ --dry-run # Rank Math is identical — just swap the source key php artisan seo:import-from rank-math --connection=wordpress --model="App\Models\Post" --dry-run # From a CSV export instead of the live DB php artisan seo:import-from wordpress-csv --file=storage/app/wp-export.csv --model="App\Models\Post" --dry-run ``` -------------------------------- ### Configure Allowed Environments Source: https://docs.rankbeam.dev/guide/indexing-guard Define which environments are permitted to index using environment variables or the configuration file. ```dotenv # Let a public preview environment index too SEO_INDEXING_GUARD_ALLOWED="production,prod-eu" ``` ```php 'indexing_guard' => [ 'enabled' => env('SEO_INDEXING_GUARD', false), 'allowed_environments' => ['production', 'prod-eu'], ], ``` -------------------------------- ### Apply SEO Metadata Import Source: https://docs.rankbeam.dev/guide/wordpress-migration-runbook Executes the actual import of SEO metadata into the database by removing the dry-run flag. ```bash php artisan seo:import-from yoast --connection=wordpress --model="App\Models\Post" --redirects-csv=storage/app/redirects.csv ``` -------------------------------- ### Configure Horizon Environments Source: https://docs.rankbeam.dev/pro/production Define workload environments in config/horizon.php to allow Horizon to manage queue processes. ```php 'environments' => [ 'production' => [ 'default' => ['connection' => 'redis', 'queue' => ['default'], 'maxProcesses' => 6], 'seo' => ['connection' => 'redis', 'queue' => ['seo'], 'maxProcesses' => 2, 'timeout' => 360], 'crawler' => ['connection' => 'redis', 'queue' => ['broken_links'], 'maxProcesses' => 1, 'timeout' => 240, 'tries' => 1], ], ], ``` -------------------------------- ### Bulk-fill Metadata via Facade Source: https://docs.rankbeam.dev/pro/ai-assist Programmatically trigger the AI fill process using the SeoPro facade. This method returns a summary of processed, filled, and failed records. ```php use Rankbeam\Seo\Pro\Facades\SeoPro; $summary = SeoPro::aiFill()->fill([\App\Models\Post::class], 'all', limit: 50, apply: true); // ['processed' => 120, 'filled' => 18, 'skipped' => 102, 'failed' => 0, 'resumed' => 0, 'errors' => [], 'records' => [...]] // On a provider failure, 'errors' maps each distinct error code to its human // message (e.g. 'quota_exceeded' => 'OpenAI: the provider account is out of // credit or quota…'), and the seo-pro:ai-fill command prints those reasons — // so a run never fails silently. ``` -------------------------------- ### Configure Cursor for MCP Source: https://docs.rankbeam.dev/pro/mcp Define the MCP server in the project-specific or global .cursor/mcp.json file. ```json { "mcpServers": { "rankbeam-seo": { "command": "php", "args": ["/absolute/path/to/your/app/artisan", "seo-pro:mcp"] } } } ``` -------------------------------- ### Import SEO metadata by content type Source: https://docs.rankbeam.dev/guide/migrate-from-wordpress Run the importer separately for different content types to ensure correct model mapping. ```bash php artisan seo:import-from yoast --model="App\Models\Post" --post-type=post php artisan seo:import-from yoast --model="App\Models\Page" --post-type=page ``` -------------------------------- ### Configure Claude Desktop for MCP Source: https://docs.rankbeam.dev/pro/mcp Add the server configuration to the Claude Desktop JSON config file. Windows users must double-escape backslashes in paths. ```json { "mcpServers": { "rankbeam-seo": { "command": "php", "args": ["/absolute/path/to/your/app/artisan", "seo-pro:mcp"] } } } ``` ```json { "mcpServers": { "rankbeam-seo": { "command": "C:\\Users\\you\\.config\\herd\\bin\\php84\\php.exe", "args": ["C:\\path\\to\\app\\artisan", "seo-pro:mcp"] } } } ``` -------------------------------- ### Advanced SEO Report CLI Options Source: https://docs.rankbeam.dev/pro/reports Commands for specifying output paths, email recipients, previewing without storage, and generating JSON summaries. ```bash # Write to a specific file or directory php artisan seo-pro:report --output=/tmp/acme-october.pdf # E-mail it to one or more recipients (the PDF is attached) php artisan seo-pro:report --email=client@acme.com --email=pm@agency.com # One-off preview that does NOT store a snapshot (deltas won't advance) php artisan seo-pro:report --no-store --output=/tmp/preview.pdf # Machine-readable summary php artisan seo-pro:report --json ``` -------------------------------- ### Enable Sitemap Extensions Source: https://docs.rankbeam.dev/guide/sitemaps Enable image and hreflang extensions in the configuration file to include additional metadata in the sitemap. ```php 'sitemap' => [ 'images' => true, // per URL 'alternates' => true, // per URL ], ``` -------------------------------- ### Import SEO Data from Rank Math Source: https://docs.rankbeam.dev/blog/replaced-rank-math-with-a-laravel-package Commands to import SEO metadata from a WordPress database, including a dry-run option for verification. ```bash # Rank Math, reading the live WordPress database php artisan seo:import-from rank-math \ --connection=wordpress --model="App\Models\Post" --dry-run # Looks right? Drop the flag and import for real php artisan seo:import-from rank-math \ --connection=wordpress --model="App\Models\Post" ``` -------------------------------- ### Generate robots.txt and ai.txt files Source: https://docs.rankbeam.dev/guide/ai-crawlers Writes the full robots.txt file and optionally the ai.txt file to the public directory. ```bash php artisan seo:robots-txt # writes public/robots.txt php artisan seo:robots-txt --ai-txt # also write public/ai.txt ``` -------------------------------- ### Register scan targets in a service provider Source: https://docs.rankbeam.dev/pro/installation Use the SeoPro facade within the boot method to register models, routes, or sitemaps for scanning. ```php use Rankbeam\Seo\Pro\Facades\SeoPro; public function boot(): void { SeoPro::targets()->register('posts', Post::class); SeoPro::targets()->registerRoutes('static', ['home', 'pricing']); // or: SeoPro::targets()->fromSitemaps(); } ``` -------------------------------- ### Introspect and register MCP tools Source: https://docs.rankbeam.dev/pro/mcp Use the SeoPro facade to access the tool registry for listing enabled tools or adding custom implementations. ```php use Rankbeam\Seo\Pro\Facades\SeoPro; SeoPro::mcp()->all(); // enabled tools, keyed by name SeoPro::mcp()->register($myCustomTool); // any Rankbeam\Seo\Pro\Mcp\McpTool ``` -------------------------------- ### Re-publish configuration Source: https://docs.rankbeam.dev/guide/upgrade-from-v1 After deleting the stale config file, use this command to publish the new v2 configuration. ```bash php artisan vendor:publish --tag=seo-config ``` -------------------------------- ### Resolve 404 with redirect Source: https://docs.rankbeam.dev/pro/headless Create a redirect rule and mark a 404 log entry as resolved in one step using the --from-404 flag. ```bash php artisan seo-pro:404-list # ID | Path | Hits | Status | ... # 1 | /old-pricing | 41 | new php artisan seo-pro:redirect-create /old-pricing /pricing --from-404=/old-pricing # Redirect #1 created: /old-pricing → /pricing (301). # 404 log #1 (/old-pricing) marked redirected. ``` -------------------------------- ### Enable MCP Write Access Source: https://docs.rankbeam.dev/pro/mcp Set allow_edits to true in the configuration to enable the seo_save_meta tool. Defaults to false for security. ```php // config/seo-pro.php 'mcp' => [ 'allow_edits' => true, // default: false ], ``` -------------------------------- ### Enable focus keywords in configuration Source: https://docs.rankbeam.dev/guide/audit Set the enabled flag to true in the SEO configuration file to activate the focus-keyword workflow. ```php // config/seo.php 'keywords' => [ 'enabled' => true, ], ``` -------------------------------- ### Run the ralphjsmit importer Source: https://docs.rankbeam.dev/guide/migrate-from-other-packages Execute the importer to migrate data from the ralphjsmit package. Use the dry-run flag to preview changes before applying them. ```bash # Preview first — writes nothing php artisan seo:import-from ralphjsmit --dry-run # Then import for real php artisan seo:import-from ralphjsmit ``` -------------------------------- ### Enable AI-bot monitoring Source: https://docs.rankbeam.dev/pro/ai-bot-monitor Add this configuration to your seo-pro.php file to enable the global middleware for recording crawler activity. ```php // config/seo-pro.php 'ai_bots' => [ 'enabled' => true, ], ``` -------------------------------- ### Implement ProvidesSeoMarkdown Contract Source: https://docs.rankbeam.dev/guide/markdown-for-bots Define a custom markdown output for a model by implementing the ProvidesSeoMarkdown contract. ```php use Rankbeam amesp class Post extends Model implements ProvidesSeoMarkdown { use HasSEO; public function toSeoMarkdown(): ?string { return $this->body_markdown; // your already-clean markdown } } ```