Install
openclaw skills install brikko-pii-maskМаскирует персональные данные (ФИО, ИНН, СНИЛС, ОГРН, ОГРНИП, паспорт, телефон, email, банковский счёт) в тексте перед отправкой в LLM, и восстанавливает плейсхолдеры в ответе. Понимает русские склонения и валидирует ID по checksum-алгоритмам ФНС. Compatible с любой LLM (Claude, GPT, Gemini, локальные) — skill сам разговаривает с api.brikko.ru поверх HTTPS. Используется когда: — в тексте задачи есть персональные данные клиентов — компания работает по 152-ФЗ и не может отправлять реальные ПД в OpenAI/Anthropic — нужно сохранить контекст «что клиент Иванов сказал» без раскрытия личности
openclaw skills install brikko-pii-maskЭтот skill добавляет твоему агенту возможность безопасно работать с персональными данными клиентов: маскирует ПД в тексте перед отправкой в LLM и восстанавливает в ответе.
Используй этот skill когда:
Не используй когда:
count=0)1. mask: plaintext → masked text + mapping_id (хранится 1 час)
2. LLM: masked text → answer (там тоже плейсхолдеры)
3. restore: answer + mapping_id → восстановленный ответ
4. отдать пользователю восстановленный ответ
python3 scripts/mask.py
# stdin: текст с ПД
# stdout: JSON {"masked_text", "mapping_id", "count", "audit"}
Пример:
import json, subprocess
text = "Клиент Иванов Иван Иванович, ИНН 7707083893, тел +7 999 123 45 67"
result = json.loads(subprocess.check_output(
["python3", "scripts/mask.py"],
input=text, text=True
))
# result["masked_text"] → "Клиент <NAME_1>, ИНН <INN_1>, тел <PHONE_1>"
# result["mapping_id"] → "abc123..."
# result["count"] → 3
Любой провайдер: Claude API, OpenAI API, локальная модель — без разницы.
Текст уже без ПД. Сохрани mapping_id для шага 3.
python3 scripts/restore.py --mapping-id abc123...
# stdin: ответ от LLM (с плейсхолдерами)
# stdout: текст с реальными ПД
restored = subprocess.check_output(
["python3", "scripts/restore.py", "--mapping-id", result["mapping_id"]],
input=llm_response, text=True
).strip()
# restored содержит реальные имена/ИНН/телефоны вместо <NAME_1>/<INN_1>/<PHONE_1>
Skill использует Brikko Gateway API (https://api.brikko.ru/v1/anonymize,
/v1/restore). Чтобы получить API-ключ:
export BRIKKO_API_KEY=sk-brk-...Тарифы: анонимизация бесплатна в M2 (promo для adoption этого skill). Только chat-completions через api.brikko.ru тарифицируются по обычным ставкам провайдеров + 15% наценка Brikko.
Self-hosted alternative: установи Brikko Studio локально через
npm install -g brikko-cli && brikko init — skill автоматически
переключится на http://localhost:3737 если BRIKKO_API_URL указывает туда.
| Категория | Примеры | Checksum-валидация |
|---|---|---|
NAME | Иванов / Иванову / Иванова (склонения) | — |
INN | 7707083893 (10 цифр для юрлиц), 770708389300 (12 для физлиц) | ✓ алгоритм ФНС |
SNILS | 123-456-789 01 | ✓ |
OGRN | 1027700132195 (13 цифр) | ✓ |
OGRNIP | 304500116000157 (15 цифр) | ✓ |
PASSPORT_RF | 4509 123456 | regex |
PHONE_RF | +7 999 123 45 67, 8(495)1234567 | regex |
EMAIL | user@example.com | regex |
BANK_ACCOUNT_RF | 40702810500000123456 (20 цифр) | ✓ контрольная цифра |
IPV4 | 192.168.1.1 | regex |
False-positive ratio < 1% за счёт checksum-валидации (без него случайные 10 цифр в тексте — например телефон без +7 или серийник детали — попадали бы в категорию INN).
| Ошибка | Skill делает |
|---|---|
Нет BRIKKO_API_KEY в env | exit 2, hint про регистрацию |
| api.brikko.ru недоступен | retry 3 раза, потом exit 1 с сетевым диагнозом |
mapping_id истёк (>1 ч между mask и restore) | возвращает текст с плейсхолдерами как есть + warning |
| Текст > 1 MB | exit 2, hint разбить на чанки |
# Установить skill в проект OpenClaw / Claude Code
# (детали — по выбранной экосистеме, см. README.md)
# Тест-запрос
echo "Клиент Иванов, ИНН 7707083893" | python3 scripts/mask.py
# Ожидаемый stdout: JSON с masked_text="Клиент <NAME_1>, ИНН <INN_1>"