входим в Топ-20 агентств
Рейтинг Рунета

Генератор правил применения рекомендательных технологий

Если сайт показывает «Вам может понравиться» или персональные подборки, по ст. 10.2-2 149-ФЗ нужны опубликованные правила. Соберите их за пару минут.

  • Бесплатно
  • Без регистрации
  • Данные не уходят на сервер
Генератор Правил применения рекомендательных технологий Обязательно для сайтов с персонализированными лентами
Нужны ли вам правила?

Да, если сайт подбирает материалы или товары на основе сведений о предпочтениях пользователей: «Рекомендуем для вас», «С этим товаром покупают», «Вы смотрели», персональная лента (ст. 10.2-2 149-ФЗ). Фильтры и сортировка каталога, которые пользователь задаёт сам, рекомендательной технологией не считаются.

Ответственность. Ст. 13.56 КоАП РФ (введена 199-ФЗ, действует с 07.07.2026): за неинформирование пользователей и отсутствие на сайте правил, email для юридически значимых сообщений или сведений о владельце — штраф для организаций до 700 000 руб., при повторном нарушении или неисполнении требования Роскомнадзора — до 1,4–2,8 млн руб. Для ИП и граждан суммы ниже.

Правила применения рекомендательных технологий Ст. 10.2-2 149-ФЗ
Шаблон, не юридическая консультация.
\n\n'; } function saveDoc(name, title, body) { saveBlob(name, docFile(title, body), 'application/msword'); } /* Профиль реквизитов: общий для генераторов, хранится в браузере */ var KEY = 'rwt-requisites'; function load() { try { var o = JSON.parse(localStorage.getItem(KEY) || '{}'); return (o && typeof o === 'object') ? o : {}; } catch (e) { return {}; } } function store(o) { try { localStorage.setItem(KEY, JSON.stringify(o)); return true; } catch (e) { return false; } } function forget() { try { localStorage.removeItem(KEY); } catch (e) {} } /* map: {name, inn, ogrn, address, email, phone, site} → id поля; bar — строка «сохраняются · Очистить» */ function profile(map, bar, onChange) { var keys = Object.keys(map), saved = load(); function el(k) { return document.getElementById(map[k]); } keys.forEach(function (k) { var e = el(k); if (e && !e.value && saved[k]) e.value = saved[k]; }); var save = debounce(function () { var o = load(); keys.forEach(function (k) { var e = el(k); if (!e) return; var v = e.value.trim(); if (v) o[k] = v; else delete o[k]; }); store(o); }, 400); keys.forEach(function (k) { var e = el(k); if (e) e.addEventListener('input', save); }); if (bar) profileBar(bar, function () { keys.forEach(function (k) { var e = el(k); if (e) e.value = ''; }); if (onChange) onChange(); }); } function profileBar(bar, onClear) { if (typeof bar === 'string') bar = document.getElementById(bar); if (!bar) return; bar.innerHTML = 'Реквизиты сохраняются в вашем браузере · '; bar.querySelector('button').addEventListener('click', function () { forget(); if (onClear) onClear(); }); } /* Панель экспорта (110 px — запас под закреплённую шапку сайта): на десктопе — в блоке результата, на узком экране — липкая внизу инструмента */ function dock(barEl, home, target, bp) { if (typeof barEl === 'string') barEl = document.getElementById(barEl); if (typeof home === 'string') home = document.getElementById(home); if (typeof target === 'string') target = document.getElementById(target); if (!barEl || !home) return; var root = document.getElementById('rwt-tool') || home.closest('.rwt') || home.parentNode; var mq = window.matchMedia ? window.matchMedia('(max-width: ' + (bp || 900) + 'px)') : null; function place() { if (mq && mq.matches) { if (barEl.parentNode !== root) root.appendChild(barEl); barEl.classList.add('is-float'); } else { if (barEl.parentNode !== home) home.appendChild(barEl); barEl.classList.remove('is-float'); } } place(); if (mq) { if (mq.addEventListener) mq.addEventListener('change', place); else if (mq.addListener) mq.addListener(place); } var show = barEl.querySelector('.rwd-show'); if (show && target) show.addEventListener('click', function () { var y = target.getBoundingClientRect().top + (window.pageYOffset || 0) - 110; window.scrollTo({ top: Math.max(0, y), behavior: 'smooth' }); }); } return { esc: esc, parse: parse, html: html, preview: preview, text: text, splitNotes: splitNotes, showNotes: showNotes, debounce: debounce, saveBlob: saveBlob, docFile: docFile, saveDoc: saveDoc, load: load, store: store, forget: forget, profile: profile, profileBar: profileBar, dock: dock }; })(); /*@rwd-kit-end*/ (function(){ var $ = function(id){ return document.getElementById(id); }; var MONTHS = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря']; function isoToday(){ var d = new Date(); return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2); } function ruDate(iso){ var m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso || ''); if (!m) return ruDate(isoToday()); return (+m[3]) + ' ' + MONTHS[+m[2] - 1] + ' ' + m[1] + ' г.'; } function v(id, def){ var x = ($(id).value || '').trim(); return x || def; } function on(id){ return $(id).checked; } function esc(s){ return String(s).replace(/&/g,'&').replace(//g,'>'); } function pick(map){ var r = []; Object.keys(map).forEach(function(k){ if (on(k)) r.push(map[k]); }); return r; } var DATA = { dataHistory: 'история просмотров страниц и переходов по ссылкам', dataPurchases: 'история покупок и заказов', dataSearch: 'поисковые запросы на Сайте', dataLikes: 'оценки, реакции, добавления в избранное', dataLocation: 'обобщённое местоположение (с точностью до населённого пункта), определяемое по IP-адресу или указанное пользователем', dataDevice: 'тип устройства, браузер, операционная система', dataTime: 'время на Сайте, глубина просмотра', dataDemographic: 'пол и возраст, если пользователь указал их добровольно' }; var SRC = { srcActions: 'действия пользователя на Сайте, фиксируемые автоматически средствами Сайта', srcCookies: 'файлы cookie и аналогичные идентификаторы браузера или устройства', srcProfile: 'сведения, указанные пользователем в учётной записи (профиле)', srcPartners: 'сведения, полученные от партнёров и сервисов веб-аналитики в объёме, разрешённом законом и согласием пользователя' }; var BLOCKS = { blockSimilar: '«Похожие товары» / «Аналоги» — подбор по характеристикам просматриваемого товара', blockAlsoBought: '«С этим товаром покупают» — на основе совместных покупок всех пользователей', blockRecommend: '«Рекомендуем для вас» / «Персональная подборка»', blockViewed: '«Вы смотрели» — ранее просмотренные пользователем позиции', blockPopular: '«Популярное» / «Тренды» — на основе обобщённых действий всех пользователей', blockFeed: 'персональная лента новостей и статей' }; var DISABLE = { both: 'в личном кабинете (переключатель «Персональные рекомендации») или запросом на электронную почту, указанную в настоящих Правилах', cabinet: 'в личном кабинете (переключатель «Персональные рекомендации»)', email: 'запросом на электронную почту, указанную в настоящих Правилах', button: 'кнопкой «Отключить рекомендации» в блоке рекомендаций' }; var md = ''; function syncUi(){ $('disableGroup').style.display = on('useRecoTech') ? '' : 'none'; } $('useRecoTech').addEventListener('change', syncUi); function generateRecoPolicy(){ var site = v('siteName','[Название сайта]'), owner = v('operatorName','[владелец сайта]'); var inn = v('inn',''), ogrn = v('ogrn',''), addr = v('opAddress',''); var email = v('adminEmail','[email]'); var date = ruDate($('policyDate').value); var personal = on('useRecoTech'); var data = pick(DATA), src = pick(SRC), blocks = pick(BLOCKS); var method = $('disableMethod').value; var out = [], sn = 0, pn = 0; function H(t){ sn++; pn = 0; out.push('## ' + sn + '. ' + t); return sn; } function P(t){ pn++; out.push(sn + '.' + pn + '. ' + t); } function L(a){ out.push(a.map(function(x){ return '- ' + x; }).join('\n')); } out.push('# Правила применения рекомендательных технологий'); out.push('**Редакция от ' + date + '**'); H('Общие положения'); P('Настоящие Правила определяют порядок применения рекомендательных технологий на сайте ' + site + ' (далее — Сайт) в соответствии со ст. 10.2-2 Федерального закона от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации».'); var req = []; if (inn) req.push('ИНН ' + inn); if (ogrn) req.push('ОГРН/ОГРНИП ' + ogrn); P('Владелец Сайта: ' + owner + (req.length ? ' (' + req.join(', ') + ')' : '') + (addr ? ', почтовый адрес: ' + addr : '') + '. Адрес электронной почты для направления юридически значимых сообщений: ' + email + '.'); P('Рекомендательные технологии — информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети «Интернет», находящихся на территории РФ.'); P('Пользователи информируются о применении рекомендательных технологий уведомлением на Сайте и публикацией настоящих Правил в свободном доступе.'); H('Где применяются рекомендательные технологии'); P('Рекомендации отображаются в следующих блоках Сайта:'); L(blocks.length ? blocks : ['блоки с подборками материалов (товаров) на страницах Сайта']); if (!personal) P('Рекомендации формируются на основе обобщённых (агрегированных) сведений о действиях всех пользователей и характеристик материалов и не учитывают действия конкретного пользователя.'); H('Виды сведений и источники их получения'); P('Для формирования рекомендаций используются следующие виды сведений, относящихся к предпочтениям пользователей:'); L(data.length ? data : ['[укажите виды сведений]']); P('Источники получения сведений:'); L(src.length ? src : ['[укажите источники сведений]']); if (on('dataLocation')) P('Сведения о местоположении используются только в обобщённом виде; точная геолокация устройства без отдельного разрешения пользователя не запрашивается.'); P('Если сведения относятся к персональным данным, их обработка осуществляется в соответствии с Федеральным законом от 27.07.2006 № 152-ФЗ «О персональных данных» и Политикой обработки персональных данных, размещённой на Сайте, на основании согласия пользователя или иного законного основания.'); H('Процессы и методы сбора, систематизации и анализа сведений'); P('Сбор: сведения фиксируются автоматически при взаимодействии пользователя с Сайтом' + (on('srcCookies') ? ' и связываются с идентификатором браузера (cookie)' : '') + (on('srcProfile') ? ' или с учётной записью авторизованного пользователя' : '') + '.'); P('Систематизация: сведения группируются по пользователю (идентификатору), по товарам (материалам) и категориям и хранятся в течение срока, необходимого для формирования рекомендаций.'); P('Анализ: применяются методы ' + (personal ? 'фильтрации по содержанию (сходство характеристик материалов), коллаборативной фильтрации (сходство интересов пользователей) и ранжирования по популярности' : 'ранжирования по популярности и сходству характеристик материалов') + '.' + (on('useML') ? ' Для ранжирования используются модели машинного обучения, обученные на обезличенных (агрегированных) данных.' : '')); P('Предоставление: по результатам анализа пользователю показываются материалы (товары) с наибольшей оценкой релевантности. Рекомендательные технологии не используются для принятия решений, порождающих юридические последствия для пользователя.'); if (personal){ H('Отказ от персонализированных рекомендаций'); P('Пользователь вправе отказаться от персонализированных рекомендаций ' + DISABLE[method] + '. После отказа показываются неперсонализированные подборки (например, «Популярное», «Новинки»).'); if (method === 'email' || method === 'both') P('Запрос, направленный по электронной почте, исполняется в течение 5 рабочих дней с момента получения.'); P('Отказ не ограничивает доступ к основным функциям Сайта. Персонализацию можно включить снова тем же способом.'); } H('Ограничения'); P('Рекомендательные технологии не применяются с нарушением прав и законных интересов граждан и организаций и для предоставления информации с нарушением законодательства РФ.'); if (on('adultOnly')) P('Сайт предназначен для лиц старше 18 лет; рекомендательные технологии не применяются в отношении пользователей, которые сообщили о возрасте младше 18 лет.'); P('Сведения, используемые для рекомендаций, не передаются третьим лицам, за исключением лиц, обрабатывающих их по поручению владельца Сайта, и случаев, предусмотренных законом.'); var add = v('additionalInfo',''); if (add){ H('Дополнительная информация'); out.push(add); } H('Изменение Правил и обратная связь'); P('Владелец Сайта вправе изменять Правила. Новая редакция вступает в силу с момента публикации на Сайте.'); P('Вопросы о работе рекомендательных технологий и юридически значимые сообщения направляются на ' + email + (addr ? ' или по почтовому адресу: ' + addr : '') + '. Срок ответа — до 10 рабочих дней.'); out.push('---'); out.push('*Шаблон документа, не юридическая консультация.*'); md = out.join('\n\n'); $('resultArea').innerHTML = RWD.preview(RWD.html(md)); } var DEFAULT_ON = ['useRecoTech','dataHistory','dataPurchases','dataSearch','dataLikes','dataDevice','dataTime','srcActions','srcCookies','blockSimilar','blockAlsoBought','blockRecommend','blockViewed','blockPopular']; var DEFAULT_OFF = ['dataLocation','dataDemographic','srcProfile','srcPartners','blockFeed','useML','adultOnly']; function resetForm(){ ['siteName','operatorName','inn','ogrn','opAddress','adminEmail','additionalInfo'].forEach(function(id){ $(id).value = ''; }); $('policyDate').value = isoToday(); DEFAULT_ON.forEach(function(id){ $(id).checked = true; }); DEFAULT_OFF.forEach(function(id){ $(id).checked = false; }); $('disableMethod').value = 'both'; syncUi(); generateRecoPolicy(); } $('resetBtn').onclick = resetForm; $('copyBtn').onclick = function(){ RWT.copy(RWD.text(md), this); }; $('copyHtmlBtn').onclick = function(){ RWT.copy(RWD.html(md), this); }; $('downloadBtn').onclick = function(){ RWD.saveDoc('pravila-rekomendatelnyh-tehnologij.doc', 'Правила применения рекомендательных технологий', RWD.html(md)); }; var live = RWD.debounce(generateRecoPolicy, 300); $('formBody').addEventListener('input', live); $('formBody').addEventListener('change', live); RWD.profile({ name: 'operatorName', inn: 'inn', ogrn: 'ogrn', address: 'opAddress', email: 'adminEmail', site: 'siteName' }, 'rwdSaved', generateRecoPolicy); RWD.dock('rwdBar', 'rwdHome', 'resultArea', 1000); $('policyDate').value = isoToday(); $('noteBox').textContent = 'Редакция от ' + ruDate(isoToday()) + ' Шаблон, не юридическая консультация. Разместите правила в свободном доступе и уведомите пользователей о применении рекомендательных технологий.'; syncUi(); generateRecoPolicy(); })();
Внедрим правила и уведомление на сайт

Опубликуем правила рекомендательных технологий и добавим обязательное уведомление на страницы.

Обсудить проект