Bitrix seo
AI-скиллы для Bitrix Framework (D7): ORM, контроллеры, роутинг, кеш, безопасность. npx skills add bxmaximum/bitrix-framework-skills. Открытый проект сообщества BXMax.
npx -y skills add bxmaximum/bitrix-framework-skills --skill bitrix-seoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Covers SEO module — sitemap generation, robots.txt, webmaster/search-engine engines, keywords/tools orientation; links to iblock IPROPERTY / InheritedProperty for page meta. Applied for crawl maps, Webmaster/Search Console wiring, SEO tooling. Key terms — Sitemap, Generator, Job, RobotsFile, Webmaster, SearchEngine, InheritedProperty, IPROPERTY_TEMPLATES.
SKILL.md
6.1 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
SEO Module (seo)
Baseline: main 23.0+. Verified against kernel module seo in this repo.
\Bitrix\Main\Loader::includeModule('seo');
The seo module covers sitemap generation, robots.txt helpers, search-engine / webmaster integrations, keyword tools, and ads/analytics connectors. It does not replace iblock SEO templates — page title/description for catalog/news live in iblock InheritedProperty (see below and skill bitrix-iblocks).
Sitemap
ORM config: \Bitrix\Seo\Sitemap\Internals\SitemapTable → b_seo_sitemap (SITE_ID, ACTIVE, NAME, DATE_RUN, SETTINGS).
Generation:
| Class | Role |
|---|---|
\Bitrix\Seo\Sitemap\Generator | Multistep build for one sitemap id (run()) |
\Bitrix\Seo\Sitemap\Job | Job/agent orchestration (addJob, markToRegenerate, doJobAgent) |
\Bitrix\Seo\Sitemap\Type\Step | Step constants for the generator |
\Bitrix\Seo\Sitemap\Source\Iblock | Iblock URL source during generation |
\Bitrix\Seo\Sitemap\File\* | XML file writers |
use Bitrix\Seo\Sitemap\Internals\SitemapTable;
use Bitrix\Seo\Sitemap\Job;
use Bitrix\Seo\Sitemap\Generator;
$row = SitemapTable::getById($sitemapId)->fetch();
// SETTINGS is serialized array (dirs, iblocks, file mask, …)
// prepare via SitemapTable::prepareSettings($arSettings) when saving from forms
// Queue background regeneration (agent-driven)
Job::markToRegenerate($sitemapId);
// Or drive steps in-process (admin/stepper style)
$generator = new Generator($sitemapId);
$done = $generator->run(); // false while more steps remain
Job::addJob($sitemapId) registers a row; Job::doJobAgent($sitemapId) is the agent entry. Statuses: Job::STATUS_REGISTER|PROCESS|FINISH|ERROR.
Admin UI: /bitrix/admin/seo_sitemap.php, seo_sitemap_edit.php. Prefer Job/Generator over reimplementing XML writers.
robots.txt
\Bitrix\Seo\RobotsFile extends Bitrix\Main\IO\File for site document root robots.txt.
use Bitrix\Seo\RobotsFile;
$robots = new RobotsFile($siteId); // SITE_ID like 's1'
$robots->addRule(['Sitemap', 'https://example.com/sitemap.xml']);
// SECTION_RULE = 'User-Agent', SITEMAP_RULE = 'Sitemap'
Useful when sitemap generation should register a Sitemap line. Admin: seo_robots.php.
Webmaster / Search Engines
Engine registry: \Bitrix\Seo\SearchEngineTable (b_seo_search_engine, field CODE).
Concrete engines under \Bitrix\Seo\Engine\:
\Bitrix\Seo\Engine\Yandex— Yandex Webmaster API (ENGINE_ID = 'yandex')\Bitrix\Seo\Engine\Google— Google Search Console oriented client- Bases:
YandexBase, shared\Bitrix\Seo\Engine/IEngine
Webmaster service facade:
use Bitrix\Seo\Webmaster\Service;
// GROUP = 'webmaster', TYPE_GOOGLE = 'google'
$sites = Service::getSites(); // host => binded/verified flags or error
OAuth / client callback uses \Bitrix\Seo\Service::REDIRECT_URI (/bitrix/tools/seo_client.php) — OAuth redirect, not HTTP 301 SEO redirects.
Domain helpers: \CSeoUtils::getDomainsList(), getDirStructure() (autoloaded from classes/general/seo_utils.php).
Keywords and Page Tools
Legacy helpers (still in module):
\CSeoKeywords— keywords by URL (Add/Update/GetByURL)\CSeoPageChecker— page SEO check used by admin tools- Panel hooks:
CSeoEventHandlersonmain/fileman
Admin entry points: seo_tools.php, seo_search_yandex.php, seo_search_google.php.
“Redirects” Boundary (no invented API)
There is no seo DataManager for SEO HTTP 301/302 rules in this kernel.
| Concern | Where it lives |
|---|---|
| Crawl allow/deny + sitemap URL | RobotsFile, sitemap SETTINGS |
| OAuth callback URL | Bitrix\Seo\Service::REDIRECT_URI |
| Open-redirect allowlist | security — CSecurityRedirect, \Bitrix\Security\RedirectRuleTable |
| App/page redirects | Routing / web server / LocalRedirect — not seo |
Do not invent SeoRedirectTable. After URL changes: update content URLs, regenerate sitemap (Job::markToRegenerate), adjust robots if needed.
Iblock Meta (cross-ref bitrix-iblocks)
Catalog/section/element title, description, and related SEO strings are not stored in seo module tables. Use InheritedProperty:
\Bitrix\Main\Loader::includeModule('iblock');
// Resolved values for an element
$values = (new \Bitrix\Iblock\InheritedProperty\ElementValues($iblockId, $elementId))
->getValues();
// e.g. ELEMENT_META_TITLE, ELEMENT_META_DESCRIPTION, …
// Templates (IPROPERTY_TEMPLATES) when saving element/section/iblock
$templates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($iblockId, $elementId);
$templates->set([
'ELEMENT_META_TITLE' => '{=this.Name}',
// …
]);
Related: SectionValues / SectionTemplates, IblockTemplates, ORM \Bitrix\Iblock\InheritedPropertyTable. Sitemap generation reads URLs from iblocks via Sitemap\Source\Iblock; meta tags still come from InheritedProperty / page components.
Landing-page counters/meta use Landing hooks (YaCounter, MetaMain, …) — skill bitrix-landing — not seo Sitemap.
Analytics / Ads (orientation only)
Same module hosts retargeting/ads/analytics namespaces (Bitrix\Seo\Analytics\, Retargeting\, LeadAds\, …). Use when wiring ad cabinets; not required for classic sitemap/robots tasks.
Checklist
-
Loader::includeModule('seo')for Sitemap/Robots/Engine classes. - Persist sitemap rows via
SitemapTable; regenerate viaJob/Generator. - Register Sitemap in robots with
RobotsFilewhen appropriate. - Element/section meta via InheritedProperty — not custom columns in
b_seo_*. - Do not invent SEO redirect CRUD in
seo; use server/routing or document the real module. - Webmaster OAuth callback ≠ SEO URL redirect.
Gives 1 of the 12 instructions most seo skills give in ~1.6k tokens
Counted across 454 of the 460 authors here whose files we hold, read 2026-08-06
- implement structured data using JSON-LDin 30 of 454, across 26 files
- write unique meta descriptions under 160 charactersin 27 of 454, across 20 files
- verify one H1 exists per pagein 24 of 454, across 15 files
- maintain a single h1 per pagein 24 of 454, across 15 files
- use JSON-LD format for all schema markupin 23 of 454, across 15 files
- use descriptive anchor text for internal linksin 21 of 454, across 16 files
- add descriptive alt text to imagesin 19 of 454, across 15 files
- read product marketing context before auditingin 19 of 454, across 10 files
- write unique title tags under 60 charactersin 19 of 454, across 14 files
- add unique title and meta description per pagein 19 of 454, across 17 files
- Reference the sitemap in robots.txthere, and in 19 of 454, across 18 files
- verify core web vitals meet thresholdsin 17 of 454, across 9 files
Said here and by no other author read
- include the seo module
- persist sitemaps via sitemap table
- regenerate sitemaps via job or generator
- set element meta via inherited property
- do not invent seo redirect crud
- use server or routing for redirects
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.