Назад в блог

SSI automation. Как я построил 13 cron-задач и не словил бан LinkedIn.

За неделю мой LinkedIn SSI упал с 38 до 37. Я к этому готов. Только что собрал систему из 13 cron-задач, и первое, что в ней появилось, это файл STOP и approval-папка.

AI пишет драфты, я approve. AI кликает «follow». От моего имени AI ничего не публикует.

Дальше расскажу, почему такой выбор и из чего эта система собрана.

Что такое SSI и почему я в него полез

Social Selling Index — внутренняя метрика LinkedIn. Четыре категории по 25 баллов: Brand, Find people, Insights, Relationships. Видно на /sales/ssi. У меня baseline 2026-05-20 — 38/100. Цель к Q3 2026 — 58. Не «топ-1% профессии», а нормальный senior с активной сетью.

Чтобы дотягивать до этих цифр, надо каждый день делать одно и то же: смотреть профили целевых людей, оставлять полезные комменты под их постами, подписываться на хэштеги, отвечать на комменты под собственными постами, иногда отправлять connect-request с короткой запиской.

Чек-лист на 5-10 минут. Каждое утро. Каждую неделю. Каждый месяц.

Я знаю себя. На седьмой рабочий день этот чек-лист закроется один раз и больше не откроется. У меня семь параллельных проектов, и LinkedIn-активность не критична ни для одного из них. Никто не пишет в Jira «Иван не оставил коммент под постом X».

Значит надо либо отказаться от SSI как метрики и не жаловаться на отсутствие inbound. Либо вынести её в систему, которая работает без меня.

Что я НЕ автоматизирую

Прежде чем рассказывать про 13 задач, три вещи, которых в системе нет. Они и есть бан-триггер LinkedIn.

Первое — контент от моего имени без approve. Бот не публикует ни одного коммента, реплая, поста или connect-note без того, чтобы сначала показать мне драфт. Технически можно прицепить локальную LLM, чтобы она писала «отличный пост, +1» под всеми. Аккаунт улетит за неделю.

Второе — mass-connect и like-фермы. В сети ходят скрипты, которые жмут «connect» по списку из тысячи URL. Это не SSI-рост, это бан. LinkedIn видит паттерн и отключает аккаунт.

Третье — захардкоженные positive-комменты. «Great point!», «Insightful!», «Couldn't agree more.» — это не engaging with insights, это спам. Категория Insights у вас вырастет на балл за неделю и уйдёт в ноль, когда LinkedIn получит первую жалобу.

Моя система про другое. AI делает работу, которую я бы делал руками — читает ленту, отсеивает мусор, иногда подбирает формулировку. Я делаю ту, которую можно сделать только за меня. Решаю, что из этого пойдёт от моего лица.

13 задач: что делает каждая

Roadmap живёт в vault как один документ. Тринадцать routines, T1-T13. Здесь — без bash-строчек, человеческим языком.

  • T1, feed scan. Каждый день 08:00. Читает 30 свежих постов в ленте, отбирает 5 от целевых ICP, пишет драфты комментов в Inbox/. Approval: я утром.
  • T2, постит approved-комменты. 12:00 и 17:00, по 3 за раз. Approval уже получен на стадии T1.
  • T3, подписка на хэштеги. 1-е число месяца, 13 целевых тегов. Auto.
  • T4, кандидат на repost. Понедельник 09:30. Берёт топ постов прошлой недели от целевых ICP, генерирует draft repost-коммента. Approval: я.
  • T5, follow 202 компании из Airtable. Running отдельным cron-ом, см. предыдущий experiment. Auto.
  • T6, profile views. 07:00, 5-8 ICP-профилей. Auto, passive action.
  • T7, connect-request с персональной запиской. 20:00. Первые 2 недели — approve каждое сообщение. Потом auto, в пределах лимита.
  • T8, снимает уведомления и пишет драфты replies. 08:30. На каждый коммент под моим постом — 1-2 строки в Inbox/. Approval: я.
  • T9, постит approved replies. 10:00, 14:00, 19:00. Approval уже получен на стадии T8.
  • T10, подсказывает кандидат на Featured. 1-е число 10:00, monthly. Approval: только я, бот не пинит.
  • T11, SSI snapshot. Понедельник 09:00. Снимает текущий SSI в trend-таблицу, alert в Telegram при просадке. Auto.
  • T12, refresh статистики по всем постам. Суббота 10:00. Auto.
  • T13, long-form Article на LinkedIn. Раз в месяц генерирует draft, 1500-2500 слов. Approval: я.

Семь из тринадцати генерируют контент, который пойдёт от моего имени. Семь approval-gates.

Пять пассивные — follow, view, snapshot. Они работают auto.

T10 остаётся только мне даже на approve-стадии: какой пост закрепить в Featured — вопрос не статистики, а самопрезентации.

Три механизма, без которых это не запускается

Если просто положить 13 cron-скриптов в ~/Library/LaunchAgents и нажать bootstrap, через сутки получишь зависший Chrome, дубли комментов в одной ленте и невозможность всё это быстро остановить.

Поэтому система началась с трёх инженерных слоёв, а не с промтов.

File-lock через mkdir

Все 13 задач работают с одним Chrome-профилем — той же сессией LinkedIn, которую я залогинил руками месяц назад. Профиль не выдерживает двух параллельных инстансов.

Простое решение — mkdir cron/.lock. Атомарно. Если два crontab-а сработали одновременно, второй упирается в directory exists и выходит. Внутри .lock/ лежит PID-файл. Если хозяин лока умер (crash, kill -9), следующая задача видит мёртвый PID и сносит lock сама.

Второй инстанс ждёт до 10 минут, потом логирует skipped_locked и завершается чисто. Я могу пропустить один батч, но никогда не получу два инстанса в одном Chrome.

STOP-файл

В корне 06 - Операции/cron/ живёт пустой файл STOP. Если он есть, все routines в первой строке проверяют и выходят без действий.

touch "06 - Операции/cron/STOP"

Одна команда, минута до полной остановки. Это важнее, чем кажется. Если завтра LinkedIn покажет капчу или security alert, у меня есть кнопка «stop everything», которая работает быстрее, чем launchctl unload тринадцати plist-файлов.

Один файл и одна проверка в начале каждого wrapper-скрипта. Никакого конфига сверху.

Approval-папки как inbox

Любая задача, которая генерирует контент, кладёт его в 04 - Контент/<тип>/Inbox/ с frontmatter status: draft. Например, для коммента под чужим постом:

---
post_url: https://www.linkedin.com/posts/...
author: Имя Фамилия
icp_tag: founder-ru-relocated
suggested_comment: "Видел такую же ситуацию на проекте в 2024..."
status: draft
---

Утром я открываю Inbox/, читаю драфты, удаляю мусор, оставшимся ставлю status: approved и переношу в Queue/. Задача T2 в 12:00 берёт всё approved из Queue/, постит и переносит в Published/.

Никаких dashboard и UI. Markdown-файлы и три папки. 5-10 минут моего времени утром. То же самое, что я бы делал руками, только драфты уже написаны.

Rate limits, подсмотренные у LinkedIn

LinkedIn не публикует официальные лимиты, но банит за их нарушение. Цифры в моих скриптах взяты из публичных эссе про автоматизацию и проверены на собственной шкуре следующего эксперимента — на 202 компаниях в follow.

  • Комменты: не более 6 в день. Под целевыми 5 драфтами плюс 1 запас.
  • Replies на свои посты: не более 10 в день.
  • Connect-requests: не более 5 в день и 25 в неделю.
  • Profile views: не более 10 в день.

Между однотипными действиями ставлю паузу 30-90 секунд. Между сетями действий (закончил постить комменты, переключаюсь на profile views) — 2-15 минут.

Эти числа не магические. Они в два-три раза ниже того, что я наблюдал как «вроде ещё безопасно». Запас стоит дешевле, чем разбираться с потерянным аккаунтом.

Что я измерил после первой недели

T11 (snapshot) и T1 (feed scan) прошли smoke-тест 2026-05-21. T1 за 7-10 минут сгенерил 5 драфтов, которые прошли мой утренний обзор без правок голоса. Это редкость с любым AI-помощником, и заслуга здесь не модели, а voice guide в vault, на который промт T1 ссылается напрямую.

T11 за минуту записал текущий SSI в trend-таблицу. И сразу подсветил неприятное.

baseline 2026-05-20 — 38/100. snapshot 2026-05-21 — 37/100.

Категория Insights просела с 7.00 до 6.95. Не катастрофа, но и не «через месяц 46». LinkedIn пересчитывает SSI каждый день, и одно из четырёх измерений ушло вниз ровно в тот день, когда система запустилась.

Это baseline. Дальше мерим неделями, а не днями.

Что не работает (пока)

Несколько мест, где честно: не готово.

T6 и T7 (profile views и connect requests) лежат без работы. Им нужен Airtable shared view со списком ICP people, 50-100 человек, аналог уже существующего view для компаний. Этого списка ещё нет, и пока я не выделил два часа на его сборку, таски просто простаивают. Не страшно: SSI-компонент Find people у меня сейчас сильнее всех зависит как раз от T7, и тут же риск получить бан за mass-connect, если бежать. Пусть лучше постоит.

launchd ещё не bootstrap-нул задачи. Сейчас гоняю руками: запускаю wrapper-скрипты в терминале, смотрю на их JSONL-логи, правлю промты. Через неделю, когда буду уверен в стабильности smoke-tests, скопирую .plist-файлы в ~/Library/LaunchAgents и подниму через launchctl bootstrap.

Главная неуверенность — voice. T1 пока генерит хорошие RU-комменты под RU-постами и хорошие EN — под EN. Под смешанной лентой (LinkedIn любит мешать) бот иногда уходит в формальность. Это не баг архитектуры, а итеративная настройка промтов в prompts/T1.md. Решается ещё парой подходов.

Итог

Большая часть статей про «LinkedIn automation» — про скрипты, которые автоматизируют публикацию. У меня — про систему, которая автоматизирует подготовку, но оставляет публикацию мне.

Архитектуру здесь проектирую я. Какие касания LinkedIn считаются приличными, какие лимиты, что можно отправлять от моего имени и что нельзя. AI исполняет роль ассистента, не маркетолога.

Это вторая большая инженерная система, которую я собираю в Obsidian-vault через Claude Code за последний месяц. Первая — про живую документацию проектов, о ней был предыдущий пост. Идея у них одна: я принимаю решения, агент исполняет, файлы между нами хранят состояние, которое не теряется при перезапуске.

Через три месяца буду знать, дотянул ли я до 58 SSI. Логи и trend-таблица в vault — лучшее лекарство от самообмана.

Если у вас та же проблема (формальный профиль на LinkedIn, который надо «развивать», но руки до этого не доходят), напишите в DM. Не как услугу прошу, а как разговор двух инженеров, которые не любят open social ленты.