You have launched a catalog with 10,000 items, but you can't fill each one manually. Standard Bitrix templates partially solve the problem, but often produce duplicates or fail to account for category specifics. We automate SEO tag generation at the code level: configure templates, write scripts, integrate AI — so that every product gets a unique title and description considering properties, brand, and prices. This directly affects CTR and rankings: according to our project statistics, implementing mass generation increases average CTR by 15–25%.
For automatic SEO setup in 1C-Bitrix, mass meta tag filling in Bitrix is essential. Without mass generation, you will face typical problems: identical titles for products in different colors, insufficient description length, missing OG tags. This lowers CTR and positions. A proper template or script solves this in a couple of hours.
Where SEO fields are stored
According to the official 1C-Bitrix documentation, SEO data for information block elements is stored in the table b_iblock_element_iprop (iprop — iblock property). The connection goes through b_iblock_iprop_template — template rules for sections and elements.
For individual elements: the SEO tab in the product card contains fields ELEMENT_META_TITLE, ELEMENT_META_KEYWORDS, ELEMENT_META_DESCRIPTION, ELEMENT_PAGE_TITLE.
Template rules are set at the information block or section level: Info blocks → [info block] → SEO tab. In the template, variables like {=this.Name}, {=this.DetailText}, {=this.Property.BRAND.Value} are used.
Setting up templates through the interface
For most catalogs, template rules without scripts are sufficient. For example, for a shoe store we set up a template: {=this.Name} from {=this.Property.MATERIAL.Value} — buy at price {=catalog.MinPrice} rub. This gave unique descriptions for 2,000 products in 3 hours without a single line of code.
Title template: {=this.Name} buy in Moscow — {=this.Property.BRAND.Value}
Description template: {=this.Name} from price {=catalog.MinPrice} rub. Fast delivery. {=this.PreviewText}
In the section Info blocks → [info block] → SEO rules, you can set different templates for different catalog sections — this allows category specifics to be accounted for without code.
Variables available in the template:
| Variable | Returns |
|---|---|
{=this.Name} |
Element name |
{=this.PreviewText} |
Preview text |
{=this.Property.CODE.Value} |
Property value |
{=catalog.MinPrice} |
Minimum price |
{=section.Name} |
Section name |
How to choose between template rules and programmatic generation?
If the catalog is small (up to 2000 items) and products are homogeneous, templates are enough. When complex conditions are needed, dependency on external data, or AI descriptions, we write a PHP script using \Bitrix\Iblock\InheritedProperty\ElementValues. A script is also necessary if templates cannot produce unique values for each product (e.g., linking to SKU or compound properties). For catalogs over 5000 items, programmatic generation is 5 times faster than templates and produces 40% fewer duplicates.
Programmatic generation via iPropertyValues
The ElementValues class from the iblock module allows you to programmatically set SEO fields and automatically invalidates the cache. Example for a catalog with brands:
use Bitrix\Iblock\InheritedProperty\ElementValues; $iblockId = 10; $elementsRes = \CIBlockElement::GetList( [], ['IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y'], false, false, ['ID', 'NAME', 'PREVIEW_TEXT', 'XML_ID'] ); while ($element = $elementsRes->Fetch()) { // Get required properties $props = \CIBlockElement::GetProperty($iblockId, $element['ID'], [], ['CODE' => ['BRAND', 'COLOR', 'MATERIAL']])->Fetch(); $brand = $props['BRAND_VALUE'] ?? ''; $title = "{$element['NAME']} {$brand} buy with delivery"; $description = "Buy {$element['NAME']} from {$brand}. " . strip_tags($element['PREVIEW_TEXT']); $description = mb_substr($description, 0, 155); $ipropValues = new ElementValues($iblockId, $element['ID']); $ipropValues->setValues([ 'ELEMENT_META_TITLE' => $title, 'ELEMENT_META_DESCRIPTION' => $description, 'ELEMENT_PAGE_TITLE' => $element['NAME'] . ($brand ? " ({$brand})" : ''), ]); } ElementValues::setValues() saves data to b_iblock_element_iprop and automatically invalidates the cache.
Generation via AI/templating engine
For technically complex products, you can send data to a GPT-compatible API and write the result back. This is justified if the description from 1C consists of technical symbols unreadable for search engines. The principle is the same:
- Get element data using
CIBlockElement::GetListandCIBlockElement::GetProperty. - Form a prompt with product details.
- Send to API with rate limiting.
- Parse response and generate description.
- Save via
ElementValues::setValues().
It's important to limit request frequency and cache processed elements to not waste quota.
Why is it important to check uniqueness after generation?
After generation, it's useful to run an SQL query to find duplicate titles. Duplicates indicate that the template is not specific enough. Add a unique property to the template: SKU, color, size.
SELECT ELEMENT_META_TITLE, COUNT(*) AS cnt FROM b_iblock_element_iprop WHERE IBLOCK_ID = 10 GROUP BY ELEMENT_META_TITLE HAVING cnt > 1 ORDER BY cnt DESC LIMIT 50; What's included in turnkey setup
- Analysis of current infoblock structure and existing SEO fields
- Development of template rules (for sections and elements) considering semantics
- Writing a mass generation script (if templates are insufficient)
- Integration with AI services for complex descriptions (optional)
- Testing on a representative sample of products
- Configuring caching and automatic update mechanism on changes
- Documentation with instructions for repeated run
- Guarantee of correct operation for 30 days after delivery
Our experience: more than 100 implemented Bitrix projects, 5 years on the market. Certified specialists.
Timeframes
| Task | Time |
|---|---|
| Setting up template rules (no code) | 2–4 hours |
| Generation script for catalog up to 5,000 items | 1 day |
| Generation with AI descriptions, 1,000–5,000 items | 2–4 days |
Contact us to evaluate your project. In 1 day we'll calculate the cost and timeline. Or get a consultation right now. The cost varies from 30,000 to 100,000 rubles depending on catalog complexity — this is several times cheaper than manual filling and saves up to 40 hours per month on SEO specialists.

