bitrix-seo について
Bitrix 開発者向けの SEO モジュールスキルです。サイトマップ生成、robots.txt のルール、検索エンジンのサイト情報を扱います。バックグラウンド処理とコマンドラインでの段階的な生成を説明し、ページメタデータやリダイレクトの担当箇所も示します。
主な機能
- 01バックグラウンドジョブでのサイトマップ生成
- 02サイトマップ生成の段階的な実行
- 03robots.txt ルールの読み書き
- 04検索エンジンのサイト情報の参照
- 05SEO 外でのリダイレクト処理箇所の確認
活用シーン
- 01バックグラウンドジョブでのサイトマップ再生成
- 02robots.txt へのサイトマップ URL 追加
- 03コマンドラインでの生成ステップ実行
- 04ページメタデータを扱うモジュールの特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bxmaximum/ bitrix-framework-skills --skill bitrix-seoインストール後、Claude Code で/bitrix-seoを入力して読み込まれたか確認します。
詳細
SEO モジュール(seo)
ベースライン:main 23.0+ · 検証済み:seo 26.100.0、main 26.800.0
以下のクラスを使用する前に Loader::includeModule('seo') を呼び出してください。iblock コンテンツのページタイトル/説明はここには保存されません:bitrix-iblocks の InheritedProperty(rules/query-seo-perf.md)。ランディングページのカウンター/メタデータについては、bitrix-landing のフックを使用してください。
サイトマップ
| クラス | 役割 |
|---|---|
Bitrix\Seo\Sitemap\Internals\SitemapTable | b_seo_sitemap の行:SITE_ID、ACTIVE、NAME、DATE_RUN、シリアル化された SETTINGS |
Bitrix\Seo\Sitemap\Job | エージェントによるバックグラウンド生成:markToRegenerate()、addJob()、doJobAgent()、STATUS_* |
Bitrix\Seo\Sitemap\Generator | 生成の1ステップ:init($step, $state)、run()、getStep()、getState() |
Bitrix\Seo\Sitemap\Type\Step | ステップの値:Step::STEPS[Step::STEP_INIT] = 0 … Step::STEPS[Step::STEP_INDEX] = 100 |
フォームから保存する設定は、SitemapTable::prepareSettings($settings) を通します。独自の XML ライターを作成しないでください。
バックグラウンド(推奨):Job::markToRegenerate($sitemapId) はジョブとエージェントを作成します(初回は60秒後に実行され、その後は毎秒実行されます)。完了するまで、アクセスごとに1ステップずつ実行します。本番環境では cron と bitrix-background-jobs を設定し、エージェントが実行されるようにしてください。
プロセス内(CLI、ステッパー):run() は約13秒のステップを1つ実行し、エラーの場合にのみ false を返します。getStep() が Step::STEPS[Step::STEP_INDEX] に達すると生成が完了します。Job::doStep() と同様に、ステップごとに新しい Generator を作成し、ステップと状態を引き継いでください。HTTP リクエストをまたぐ場合は、両方を永続化してください。
use Bitrix\Seo\Sitemap\Generator;
use Bitrix\Seo\Sitemap\Type\Step;
$step = Step::getFirstStep();
$state = [];
do {
$generator = (new Generator($sitemapId))->init($step, $state);
if (!$generator->run()) {
throw new \RuntimeException($generator->getStatusMessage());
}
$step = $generator->getStep();
$state = $generator->getState();
} while ($step < Step::STEPS[Step::STEP_INDEX]);
SETTINGS['ROBOTS'] === 'Y' の場合、最後のステップで robots.txt に Sitemap: 行が自動的に追加されます。
管理ページ:/bitrix/admin/seo_sitemap.php、seo_sitemap_edit.php。
robots.txt
use Bitrix\Seo\RobotsFile;
$robots = new RobotsFile('s1'); // site document root robots.txt
$robots->addRule([RobotsFile::SITEMAP_RULE, 'https://example.com/sitemap.xml']);
$sitemaps = $robots->getRules(RobotsFile::SITEMAP_RULE);
RobotsFile は Bitrix\Main\IO\File を継承します。SECTION_RULE = User-Agent。管理画面:seo_robots.php。
ウェブマスターと検索エンジン
- レジストリ:
Bitrix\Seo\SearchEngineTable(b_seo_search_engine、キーはCODE)。 Bitrix\Seo\Engine\のエンジン:Yandex(ENGINE_ID = 'yandex')、Google('google')、YandexDirect、基底クラスのYandexBase。Bitrix\Seo\Webmaster\Service::getSites()— バインド済み/検証済みのフラグを含むホスト。Bitrix\Seo\Service::REDIRECT_URI(/bitrix/tools/seo_client.php)は OAuth コールバックであり、HTTP リダイレクトではありません。- レガシーヘルパー(互換性維持のみ):
CSeoKeywords(Add/Update/GetByURL)、CSeoPageChecker、CSeoUtils::getDomainsList()。管理画面:seo_tools.php、seo_search_yandex.php、seo_search_google.php。 - 広告/リターゲティングの名前空間(
Bitrix\Seo\Retargeting\、LeadAds\、Analytics\)は製品連携用です。サイトマップ/robots の作業では使用しないでください。
リダイレクト:ここに API はありません
カーネルには、301/302 ルール用の seo テーブルはありません。SeoRedirectTable を作らないでください。
| 必要な機能 | 場所 |
|---|---|
| クロールの許可/拒否、サイトマップ URL | RobotsFile、サイトマップの SETTINGS |
| オープンリダイレクトの許可リスト | security モジュール:CSecurityRedirect、Bitrix\Security\RedirectRuleTable |
| ページの移転 | ウェブサーバーのルール、ルート(bitrix-routing)、またはコンポーネント内の LocalRedirect |
URL を変更した後は、コンテンツ内のリンクを修正し、Job::markToRegenerate() を実行して、robots を調整してください。
チェックリスト
- Sitemap/Robots/Engine クラスを使用する前に
Loader::includeModule('seo')を呼び出します。 - サイトマップの行には
SitemapTableを使用します。生成にはJob、またはステップと状態を引き継ぐGeneratorのステップループを使用します。 -
run() === falseは「続きのステップがある」ではなく、エラーとして処理します。 - Iblock のメタデータには InheritedProperty を使用し、独自の
b_seo_*列を作成しません。 -
seoにリダイレクト用の CRUD を作りません。