コンテンツへ移動

ヘッドレスでの利用

スキャン、リダイレクト、404ログなど、すべてのPro機能はヘッドレスで実行できます。機能はエンジンにあり、Filamentは不要です。パネルは管理UIであり、以下のコマンドがヘッドレスでの操作手段になります。

コマンドリファレンス

セットアップとヘルスチェック

コマンド動作
seo-pro:installconfig/seo-pro.phpとProのマイグレーションを公開して実行し、次の手順を表示します(--no-migrate--force)。
seo:doctorアプリURL、CoreとProのテーブル、スキャン対象、サイトマップ、処理別のキュー、任意の機能、運用状態を一括確認します。警告には具体的な修正方法を表示します(監視には--json)。

seo-pro:installが、このドキュメントで案内するセットアップ手順です。Proのマイグレーションは公開して使う方式で、パッケージが自動ロードすることはありません。そのため、composer requireだけで終わらず、インストーラーを使って動作するスキーマを用意します。冪等なので、いつでも再実行できます。

seo:doctorはネットワーク通信を行わず、シークレットの値も表示しません。AIのチェックでは、設定したキー変数が設定済みかどうかだけを報告します。設定と最近の実行履歴を検証しますが、外部のcronやワーカーが実際に動いていることは証明できません。必須テーブルの欠落という致命的な失敗の場合だけ、0以外で終了します。そのため、警告のあるlocalhost開発環境でも正常終了します。--jsonでは、各チェックに安定したidが付くので、識別に使えます。インストール直後とCIで実行してください。

スキャン

コマンド動作
seo-pro:scan登録済みの全対象の完全なスキャンをキューに投入します。--syncで同期実行できます。CIチェック用の--fail-on-error--fail-on-warning--report=--format=json|md|htmlには--syncが必要です。
seo-pro:scan-status最新実行の概要と未解決の問題を、重大度の高い順に表示します(--limit=20--severity=critical|warning|notice)。
seo-pro:scan-recoverキューワーカーの停止で放置された実行を失敗として記録します。
seo-pro:scan-prune保持期間を過ぎた完了済みの実行と、その問題を削除します。

デフォルトでは無効です。seo-pro.broken_links.enabledを有効にし、2つのテーブルをマイグレーションしてください。seo-pro:installで公開できます。クロールは処理量に上限を設けた複数のキュージョブで実行されるため、そのキュー専用のワーカーを動かしてください。調整方法は本番環境の設定を参照してください。

コマンド動作
seo-pro:broken-links-scan範囲を制限した再開可能なクロールをキューに投入します(--scope=internal_only|internal_and_external、追加の開始URLは--url=*)。
seo-pro:broken-links-status最新クロールの概要、未解決の検出事項、今回の種別付き検査を表示します。CIチェックにも使えます(--fail-on-error--fail-on-warning--report=--format=)。
seo-pro:broken-links-cancel実行中または待機中のクロールをキャンセルします({run?}。デフォルトは最新のアクティブな実行)。
seo-pro:broken-links-recoverワーカー停止で放置されたクロールを、期限切れリースに基づいて失敗にします。
seo-pro:broken-links-pruneクローラーの保持ポリシーを適用します(古い実行と解決済みの検出事項)。

リダイレクトと404

コマンド動作
seo-pro:redirect-create {source} {target}リダイレクトルールを作成します(--code=301--regex--no-preserve-query--note=)。
seo-pro:404-list記録された404をアクセス数の多い順に表示します(--status=new|ignored|redirected|all--limit=20)。
seo-pro:redirects-flush-hitsredirects.hits.flush_immediately=falseの場合、キャッシュにまとめたリダイレクトのアクセス数をデータベースに書き込みます。
seo-pro:404-prune古い404項目を削除し、行数の上限を適用します。

ページ内チェックリスト

コマンド動作
seo-pro:checklist {model} {id}1つのモデルについて、キーワードを考慮したpass/warn/failチェックリストを表示します(--json--strict--locale=)。ページ内チェックリストを参照してください。

同じチェックリストをSeoPro::checklistFor($model)でも利用できます。キーワードの配置、長さ、画像、内部リンクを見直す編集作業向けであり、SEOスコアではありません

Search Console(読み取り専用)

コマンド動作
seo-pro:search-console未解決の問題検索流入の両方があるページを、改善機会の優先度が高い順に表示します(--view=attentionがデフォルト)。
seo-pro:search-console --view=pages表示回数、クリック数、CTR、掲載順位による上位ページを表示します。
seo-pro:search-console --view=queries上位クエリを表示します(--days=--limit=--json)。

同じ指標をSeoPro::searchConsole()でも利用できます。Search Consoleを参照してください。デフォルトでは無効で、読み取り専用です。

AIアシスト

コマンド動作
seo-pro:ai-suggest {model} {id}タイトル・ディスクリプションの提案をJSONで出力します(--field=title|description|all)。AIアシストを参照してください。
seo-pro:ai-suggest --issue={id}スキャンで検出した問題の修正方法を、分かりやすい文章を含むJSONで出力します。

404を1つの手順で解決する

--from-404={path}は、404監視のワンクリック操作リダイレクトを作成のヘッドレス版です。ルールを作成すると同時に、一致するログ項目をリダイレクト済みにし、新しいルールと関連付けます。

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.

Filamentのフォームと同じバリデーターを使い、不正な正規表現、大きすぎる値、許可リスト外の外部転送先は、何も書き込む前に拒否します。

php
use Illuminate\Support\Facades\Schedule;

// Only needed when seo-pro.redirects.hits.flush_immediately=false.
Schedule::command('seo-pro:redirects-flush-hits')->everyFiveMinutes();

// Keep the 404 log within retention and the row cap.
Schedule::command('seo-pro:404-prune')->daily();

// Scan cadence: weekly suits most sites; go daily when content
// changes fast. Scans are queued jobs - pair with a queue worker.
Schedule::command('seo-pro:scan')->weekly();

// Housekeeping for the scan pipeline.
Schedule::command('seo-pro:scan-recover')->hourly();
Schedule::command('seo-pro:scan-prune')->daily();

// Broken-link crawler (only when enabled). Run a dedicated worker for
// its queue so a long crawl never starves user-facing jobs.
Schedule::command('seo-pro:broken-links-scan')->weekly();
Schedule::command('seo-pro:broken-links-recover')->hourly();
Schedule::command('seo-pro:broken-links-prune')->daily();

上記の各定期コマンドの推奨頻度は、本番環境の設定ガイドに記載しています。キュー構成、ワーカー設定、再試行・復旧ポリシー、保持期間、各実行の完了時に出力する構造化テレメトリー(取得ページ数、検査リンク数、拒否URL数、所要時間、キュー待ち時間)も扱っています。

Filament UIが必要な機能は何ですか?

機能面では何もありません。スキャンパイプライン、問題追跡、リダイレクト照合、404ログ、削除、復旧を含むエンジン全体は、Filamentの有無にかかわらず同じです。パネルが追加するのは表示と操作の画面です。スキャンの進捗や重大度別の統計を表示するダッシュボード、フィルターとページ別モーダルでの問題閲覧、無視・再開ボタン、リダイレクトの作成・閲覧・更新・削除フォーム、ワンクリック操作付きの404表が含まれます。問題の無視・再開には現在、専用コマンドがありません。パネルを使うか、tinkerまたは独自コードでSEOScanIssueモデルのmarkIgnored() / reopen()を呼び出してください。

rankbeam/laravel-seoはMITライセンスで公開されています。