本文へ移動
cccskills
無料GitHub で公開

social-daily

Единый вход публикации контент-фабрики на все живые площадки: Facebook, X, Telegram-каналы, Threads, Instagram. Публикую САМ. Триггеры: /social-daily, /autopost, /postall, постить везде, разгреби очередь постинга, прогони автопостинг, постим следующий, поставь в отложку, что в очереди постинга, next social post. НЕ путать: /fb-post /x-post /tg-post = точечная дверь под один пост.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md20.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/social-daily — автопостинг на FB + Threads + Instagram

⛔ ЛИЧНОСТЬ БРАУЗЕРА (канон 30.08.2026). Chrome профиля Default на хабе = личность Антона (claude.ai там под [рабочий аккаунт], всегда). Робот здесь ЧИТАЕТ и действует, но НЕ ТРОГАЕТ ЛОГИНЫ: ни logout, ни смены аккаунта, ни «самолечения входа», ни инжекта кук. Увидел «не тот аккаунт» → доложи и работай из робо-профиля (_chrome_profile_a2, Firefox-профили). Канон: reglament-hab-brauzernye-lichnosti-bb-i-roboty.

Зачем. Раньше у каждой площадки была своя лесенка: у FB — движок-селектор, у Threads — проза внутри scheduled-задачи, у Instagram — ничего. Очереди рассинхронились и обе замёрзли 14.07 молча: трекер перестали пополнять, селектор честно видел ноль, лейн стоял 16 дней при живом производстве в канале. Один контракт + одна очередь + один счётчик темпа убирают этот класс.

Жёсткие правила (не обходить)

  • ⭐ ПУБЛИКУЮ САМ. Гейт [коллега] снят приказом Антона 06.08.2026 («гейт [коллега] снят»), окно апрува = 0 часов с 05.08. Правило Антона 11.08.2026 дословно: «если за 24ч [коллега] не дала ОК — ты постишь сам». То есть ОК не ждём вообще; если материал почему-то отправлен ей на просмотр — таймер 24 часа, потом публикую без него. ⛔ «Набил в композер и жду клика» = провал прогона: человек в СЕРЕДИНЕ конвейера — баг архитектуры ([[human-is-the-bottleneck]]).
  • Что осталось выше меня (это НЕ отменено): paused в registry/limits.json — аварийный стоп-кран площадки у [коллега] и Антона · Tier-2 (деньги, юр.обязательства, секреты 3-м лицам) · приватность (private ⛔ наружу, personal — обобщённо) · матрица форматов platform_rules.json · slop_gate FAIL = переписать сейчас · IP-гейт §7.2. Увидел BLOCKED by registry — это работающий стоп-кран, а не сбой: не обходить.
  • ⭐ ОДНА ДВЕРЬ. Перед отправкой спросить pub_registry.can_post(<платформа>), после — записать факт в registry/pub_ledger.jsonl. Постинг мимо реестра = баг: замер 11.08.2026 — TG/X/FB публиковали десятками, а pub_ledger стоял с 10.08 и день-леджер честно показывал «FB 0 · X 0». Слепой прибор врёт в обе стороны.
  • §7.2 IP-гейт. Постинг FB/Threads/Instagram — с постоянного IP (хаб). Селектор проверяет узел сам: gate.mode == "block" → не постим отсюда, шлём задачу разрешённому узлу текстом по шине.
  • Темп режет fb_guard, не глазомер. guard.ok == false → стоп, назвать слот. Один ledger на все площадки — второй счётчик не заводить.
  • Голос — готовый текст Антона, не переписываем и не выдумываем. Нет тела — нет поста.
  • Один текст дважды не постим. Селектор берёт только незапощенное; вручную его не обходить. Перед FB-постом сверить реальную стену (трекер — не истина о стене, дубли 10.07 и 12.07).

Шаг 0-бис. ⭐ ТРОЙКА ДНЯ — сперва проверь её (приказ Антона 23.08.2026)

Каждый день наружу обязаны уйти три поста за ПРЕДЫДУЩИЙ день: 🏆 итог дня · 💥 факап дня · ❓ боль дня. Канон: reglament-ezhednevnaya-troyka-postov-itog-fakap-bol, память daily-ask-and-fail-lanes.

python [путь владельца] build --day <вчера>
  • Полосы пусты при живых кормушках → полоса молчит честно. exit 1 / блок «🔴 КОРМУШКА СЛОМАНА» → чинить источник, не постить.
  • Публикует [коллега]; Антон правит, не успел за 24ч — публикуем как есть, человека дольше суток не ждём.
  • ⛔ @ClawRus — не публикуем вообще · ⚠️ @ClawEng — не чаще 1 поста в сутки (limits.json, темп-гейт вернёт блокер сам).
  • После публикации отметить полосу: daily_community.py consumed --day D --lane win|fail|ask --note "...".

Шаг 0. Что вообще в очереди (0 токенов)

python3 ~/.claude/scripts/social_next_pending.py --board

Печатает по всем площадкам: сколько опубликовано, сколько в очереди, и поимённо все блокеры. Дальше идём только по площадке со статусом ГОТОВ.

Шаг 1. Взять следующий

python3 ~/.claude/scripts/social_next_pending.py --platform fb
python3 ~/.claude/scripts/social_next_pending.py --platform threads
python3 ~/.claude/scripts/social_next_pending.py --platform instagram

Читаем: can_post, blockers[], gate, guard, next.

  • can_post == false → стоп, доложить блокеры словами. Не обходить.
  • gate.mode == "warn" → постим, но карв-аут упоминаем в отчёте (узел формально не по канону).

Шаг 2. Тело поста — по лейнам

⭐ Перед набивкой любого лейна — ИСТОРИЯ, НЕ ТЕЗИС (anton 02.09.2026, голосом hub:6094; канон reglament-vsegda-rasskazyvay-istoriyu-storytelling, память [[storytelling-always-package-as-story]], гейт /taste-check P34): у тела поста есть герой · реальная ситуация · перелом · вывод. Голое наблюдение без контекста и жаргон без бытовой аналогии («упала рутина», «протух Python») → переписать: планка читателя — не-инженер, ELI5. ⭐ Пре-тест (anton 03.09): сюжет = ЖИВОЙ ЧЕЛОВЕК и эмоции (неудачи·страдания·деньги·стыд·камбэк), железо — декорация; «герой — инфраструктура» = переписать через человека. Каркас поста 60–120 слов = ABT («и…, НО…, ПОЭТОМУ…»); факап дня = расследование со ставкой (сцена → неверная гипотеза → улика → причина → что изменили), не исповедь; приёмка = чек-лист 10 вопросов в разделе «Чек-лист приёмки» $OBSIDIAN_VAULT\03-Insights\Operations\reglament-vsegda-rasskazyvay-istoriyu-storytelling.md. ⛔ Упаковка ≠ право менять слова Антона (§9.7) и раздувать объём (§9.4).

FB (body_source: channel): telegram MCP, аккаунт [рабочий аккаунт], get_message_context chat_id=[аккаунт] message_id={next.channel_msg} context_size=0. Тело = весь текст до разделителя ---. 1-й коммент собрать из next.links:

📖 Лонгрид для людей (EN): {longread_en}
🤖 Версия для машин (devlog): {devlog}
Что будет дальше — подпишитесь: t.me/ClawRus
Написать напрямую двум кофаундерам: WhatsApp +1 341 222 9178

Threads (body_source: bank): текст уже готов — next.text из банка _Dashboards/Threads-Posts-Bank.md. Лимит 500 знаков (next.over_limit подскажет). Стиль: без длинных тире, без буквы «ё» (пишем «е»), эмодзи 0-1, без хэштегов, живо, вопрос/CTA в конце. Осталось [ ] меньше двух → сперва пополнить банк: прочитать свежие посты [аккаунт], разбить идею на standalone-микро-посты ~150 знаков, дописать секцией со статусом [ ]. Не дублировать уже помеченное [x].

Instagram (body_source: card, needs_image: true): лента не принимает пост без картинки. Рендерим карточку:

python3 ~/.claude/scripts/social_card.py --text "<тело>" --kicker "<тема>" --footer "<дата>" --out ~/Downloads/ig_card.png

Откажет с цифрами, если текст не влезает → сократить или разбить на карусель (несколько карточек). Подпись поста — тот же текст (до 2200 знаков).

Шаг 3. НАБИТЬ И ОПУБЛИКОВАТЬ

Chrome — живой залогиненный (claude-in-chrome), не headless. Не залогинен → это блок для человека, логин/2FA не трогаем.

  • FB: поле «What's on your mind, Anton?» → модалка Create post → клик в текст → type тело (в композере Enter = перенос строки, безопасно).

  • Threads: поле «What's new?» → модалка New thread → проверить, что активен antondzi → type. ⚠️ Грабли: первый клик часто сдвигает layout и теряет фокус — кликнуть второй раз и скрином убедиться, что текст лёг. Кнопка Post уезжает вниз после ввода — кликать по актуальной координате со скрина, не по памяти.

  • Instagram: Create → Post → загрузить PNG → Next → подпись.

  • X ([аккаунт]): вкладка x.com, сверить залогиненный handle по реестру, композер «What's happening», ≤280 знаков на твит (длиннее — тред через reply на свой твит). Темп: _shared/social_guard.py check x.

  • Telegram-каналы: не через браузер, а через MCP telegram аккаунтом [рабочий аккаунт] (send_message по id из 00-System\Channels-Registry.md). Матрица форматов: лонгрид целиком в канал ⛔ — только тизер + ссылка.

Всегда: скриншот (save_to_disk:true) — доказательство, что набито именно то.

Шаг 4. ⭐ Публиковать сейчас или положить в ОТЛОЖКУ

Человека не ждём (правило выше). Решение принимаю сам по темпу и времени суток:

  • Сейчас — если дневной кап не выбран и материал привязан ко дню (факап дня, вопрос дня, свежая веха).
  • В отложку — если постов за сегодня уже много, стоит глубокая ночь по аудитории, или разгребаю накопленный бэклог пачкой (тогда размазываю по дням, а не вываливаю стеной).

FB умеет нативную отложку — проверено вживую 11.08.2026 (профиль Антона профессиональный, Content Library доступна): facebook.com/professional_dashboard/content/content_library/ → вкладки Published · Scheduled · Drafts, плюс раздел Planner (календарь). Планировать можно двумя путями: (а) в композере поста кнопка Create → Schedule post и выбор даты/времени; (б) из Content Library → Create. Проверить результат — вкладка ?filter=SCHEDULED: запланированное видно строкой «Scheduled • <дата, время>». ⚠️ Отложка = тоже публикация: она так же считается темпом и так же пишется в pub_ledger (событие scheduled с полем времени), иначе тот же класс слепого прибора. X, Threads, Instagram нативной отложки под нашей рельсой не имеют — там либо сейчас, либо оставить в очереди с явной причиной.

Шаг 5. Публикация

  1. Опубликовать (FB: Next → Post settings → Post; при отложке — Schedule).
  2. Скрин-подтверждение («Just now» / тост «Posted»).
  3. Записать темп: python3 ~/.claude/scripts/fb_guard.py record post --platform <fb|threads|instagram> (для FB --platform можно опустить).
  4. Забрать пермалинк: FB — клик «Comment», URL из таба; Threads — профиль [аккаунт], клик по таймстампу верхнего поста; IG — клик по посту в профиле.
  5. FB: 1-й коммент (печатать построчно, между строк shift+Return, отправить синей стрелкой — в комменте Enter = отправка) + селф-лайк.

Шаг 6. Реестр + трекер СРАЗУ + шина

Сначала реестр — это одна дверь наружу, а не отчётность. В [путь владельца] дописать строку по факту: {"event": "posted"|"scheduled", "id": "<id материала>", "platform": "<fb_wall|x_en|tg_paloaltoairu|threads|...>", "url": "<пермалинк>", "title": "<коротко>", "at": "<ГГГГ-ММ-ДДTЧЧ:ММ>"} (для scheduled — at = время публикации, плюс "scheduled_from" = сейчас). Не записал — считай, что не постил: день-леджер и все дашборды читают именно этот файл.

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

cp <трекер> <трекер>.bak-$(date +%Y%m%d-%H%M%S)     # бэкап перед правкой

Правим строку {row_id} в _Dashboards/content-distribution-tracker.html (живой файл в волте, не в браузере): status:'✅ Запощен', url:'<пермалинк>', date:'<сегодня>', note += «✅ выложил Claude ({оператор}); источник {откуда тело}». Threads дополнительно: в банке [ ] → [x] + ✅DD.MM → <пермалинк>.

python3 ~/.claude/scripts/bus_send.py ALL "✅ {площадка}: пост {N} выложен → {url}. Обновил {row_id}. ХАБУ: при перепечке трекера не затирай статус."

Шаг 7. Доклад одной строкой

«✅ {площадка} пост {N} — опубликован + коммент + трекер. Сегодня N/{кап}. Следующий: {что} в слот ~{время}.»


Стоп-краны

  • Любой варнинг площадки (checkpoint, «слишком часто», подтверждение личности) → немедленно стоп, не ретраить, доложить.
  • gate.mode == "block" → отсюда не постим. Задачу — на разрешённый узел по шине.
  • Текст не влезает в карточку IG → не обрезать молча, сократить или карусель.
  • Логин/пароль/2FA не трогаем.

Инструменты

ЧтоГде
Селектор очереди + нода-гейт~/.claude/scripts/social_next_pending.py
Конфиг площадок (узлы, капы, стиль)~/.claude/social_targets.json
Счётчик темпа (один на все площадки)~/.claude/scripts/fb_guard.py
Текст → PNG для Instagram~/.claude/scripts/social_card.py
Тесты~/.claude/scripts/_test_social_autopost.py
Паспорт детали00-System/Social-Autopost-Passport.md

Связанное

fb-daily (скилл удалён, поглощён этим) — прежний одно-площадочный предок (его селектор fb_next_pending.py теперь шим над общим движком, контракт не менялся). /fb-post — разовый постинг конкретного текста. /fb-reply — комменты. /content-mine — пополнение воронки.

Открытый вопрос к Антону

Канон §7.2 (16.07) требует постить FB/Threads только с хаба (постоянный IP), а живые рутины fb-daily-poster и threads-daily-poster заведены раньше (08–09.07) на [машина флота]. Сейчас узел пускается по карв-ауту с пометкой. Решение Антона: мигрировать оба лейна на хаб или узаконить карв-аут в каноне. Instagram как новый лейн заведён сразу по канону — только хаб.

Анти-слоп гейт (anton 14.08)

Любой ИИ-написанный текст наружу из этого скилла перед отправкой - финальный проход /ai-slop (ban-лист + ритм). Исключения ровно три: текст с плашкой Майкрофта (§3.3) · машиночитаемое (GitHub/техдока/dev-log/journey-machine) · текст, написанный Антоном руками. Канон: reglament-posty-ot-lica-antona-tolko-cherez-ai-slop.

<!--kit-footer-->

Like this skill? It is one of 100 in second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.

Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_

Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

03

無料

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

1

無料

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

agenda

無料

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

ai-slop

無料

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

日本語の概要は準備中です。原文の説明を表示しています。

tonydzi/second-brain-starter-kit82026年10月12日 更新

tonydzi のスキルをすべて見る

このスキルの問題を報告する