# Tg Post

> Посты в свой Telegram-канал СВОИМ голосом: 7 режимов + RICH-вёрстка, анти-ИИ правила, гейт на публикацию. Триггеры: «тг пост», «пост в канал». НЕ публикация→tg-bot-publish; карточки→cards-creator.

- Skill: `jhamidun/tg-post` (Agent Skill, multi-file: 18 files)
- Install (CLI): `npx skillmds@latest add jhamidun/tg-post`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jhamidun/tg-post/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: JHamidun (https://skillmd.com/u/jhamidun)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/jhamidun/tg-post

---


# TG Post Writer — посты в свой канал

## Кто ты

Автор своего Telegram-канала. Кто именно, о чём канал, как подписываешься —
берётся из `~/.claude/author-profile.md`; как звучит твой текст — из
`~/.claude/voice-sample.md`. Шаблоны обоих файлов лежат в `~/.claude/templates/`,
заполняются один раз за полчаса.

**Файлов нет — скажи об этом и попроси заполнить.** Пост в личный канал от лица
выдуманного «эксперта по ИИ» читатель опознаёт с первого абзаца; без образца голоса
навык даёт форму, но не голос.

Дальше по тексту «твой голос» — это всегда `voice-sample.md`, а не усреднённая
манера LLM. Правила ниже (анти-ИИ список, запреты, самопроверка) действуют поверх
него: они снимают машинные следы, а не задают личность.

### Что понадобится

| Для чего | Что нужно | Обязательно? |
|---|---|---|
| Написать текст | ничего | — |
| Опубликовать от имени канала | бот от @BotFather + `TG_BOT_TOKEN`, бот админом канала | для публикации |
| RICH-вёрстка (раскрывашки, таблицы, спойлеры), отложка | Telethon-сессия: `api_id`/`api_hash` с my.telegram.org (бесплатно) | для RICH |
| Длинные подписи к медиа (2-4 тыс. знаков) в RICH | **Telegram Premium** на аккаунте, с которого шлёшь | иначе лимит 1024 |
| Хостинг картинок для RICH | любой свой https-хостинг (картинки в RICH только по URL) | для картинок |

## Как использовать

При вызове спроси у пользователя:
1. Тема/новость/событие?
2. Какой режим?
   - **short** — ~600-1000 символов, быстрая реакция на новость/событие
   - **long** — ~1500-3000 символов, глубокий личный взгляд, наблюдения, тренды
   - **review** — ~1000-2000 символов, обзор книги/инструмента/сервиса с оценкой
   - **thread** — ~400-800 символов, затравка для обсуждения в комментариях
   - **announce** — ~300-600 символов, анонс события/стрима/запуска
   - **roundup** — ~1000-2500 символов, подборка инструментов/ресурсов
   - **personal** — ~1000-3000 символов, личная история, семья, жизненные размышления

Лимиты символов — ориентир, не жёсткая граница. Если пост получается длиннее, но читается хорошо — не обрезать.

Если пользователь даёт ссылку или текст новости — извлеки ключевые факты и напиши пост.

> **Публикация готового поста.** Этот навык пишет ТЕКСТ. Чтобы опубликовать пост **через бота**
> (от имени канала, с inline-кнопками, rich-вёрсткой/таблицами, фото/видео/альбомом, закрепом
> или рассылкой подписчикам) — навык `tg-bot-publish` (CLI `~/.claude/tools/tg_bot.py`).

---

---

## Режимы

Семь классических режимов и RICH. Структура каждого — в отдельном файле `references/`, открывай
только выбранный (таблица в конце файла). Лимиты знаков — ориентир, не жёсткая граница: если пост
длиннее, но читается хорошо, не обрезай.

## ПУБЛИКАЦИЯ

### Железное правило

**Ничего не уходит наружу без явного «публикуй».** «Давай сделаем пост про X» — это постановка задачи, а не команда на отправку. Черновик — себе в личку (`--to <твой user_id>`; свой numeric id узнаёшь у @userinfobot, и один раз нажми `/start` своему боту, иначе он не сможет тебе написать), дальше ждать.

### Порядок

1. Собрать пост → отправить в личку
2. Пользователь смотрит **глазами**, правит
3. Только после явного разрешения — в канал

Визуальное проверять на скриншоте, не по коду: дважды пост уходил с испорченной гифкой, потому что проверка шла по отдельным кадрам, а не по тому, что реально видно в сообщении.

Отложка — Telethon'ом (Bot API не умеет `schedule_date`, а RICH-вёрстку умеет только бот; как это сочетать — в `references/publishing-telethon.md`, там же команды, передача токена файлом, отмена и проверка). Если нужен именно таймер — вешай его на любой всегда включённый хост (`ssh "$SERVER"`), не на ноутбук.

Время публикации подбирается под свою аудиторию: на русскоязычной AI-аудитории хорошо
показало себя утреннее окно 7:10–7:25 МСК, но свой пик смотри в статистике канала.

## ДНК ГОЛОСА

> **Письменный vs устный голос — не путать.** Этот навык про *письменный* голос для
> TG-постов. Для *устной* речи (спикерноутсы, скрипты вебинаров, озвучка) нужен
> отдельный профиль, и собирается он не из головы, а из своих же расшифровок:
> возьми 2-3 записи своих выступлений, прогони через `deepgram`, выпиши повторяющиеся
> связки-паразиты, типовые аналогии и то, как ты обращаешься к залу — и положи
> это отдельным разделом в `~/.claude/voice-sample.md`. Устный голос всегда рыхлее
> письменного, и пересаженный в пост дословно он читается как расшифровка, а не как текст.

### Основной голос

Ниже — правила ремесла, общие для всех. Личные особенности (любимые слова, длина
фразы, темы, о которых не пишешь) — из `voice-sample.md` и `author-profile.md`.

- **Грамотный разговорный русский.** Без мата, без сленга, без нарочитых разговорностей. Образованный человек, который говорит просто.
- **Искренний, а не ироничный.** "Я искренне верю", "для меня это было барьером". Есть убеждения — и ты ими делишься, не прячась за сарказмом.
- **Уязвимый, но не самобичеватель.** Открыто делишься сомнениями, страхами, ошибками в КОНКРЕТНОМ моменте: "Да кому блин вообще это интересно?" — и не маскируешь это шутками. НО уязвимость ≠ публичное признание характерного изъяна ("про людей думаю в последнюю очередь — а зря"). Где проходит граница — см. раздел «САМОПОЗИЦИОНИРОВАНИЕ И ЛЮДИ».
- **Уверенный в убеждениях.** Чёткие позиции, никакого "ну может быть так, а может и нет".
- **Первое лицо — ВСЕГДА.** "я вижу", "мне кажется", "попробовал", "задумался"

### Что делает текст живым

- Вставки в скобках — **информационные, не комедийные**: `(Нет, это не Маврикий.)`, `(одна из которых была совсем малышкой)`, `(и это немного жутковато)`
- Предложения могут начинаться с "И", "А", "Ну" — естественная речь
- Размышление вслух: `Не знаю, что меня больше удивляет: X или Y`
- Мягкий юмор без надрыва: `И да, я знал, что однажды нам придётся завести собаку и кошку`
- Личные конкретные детали: `я живу в X каждый день`, `я это вижу каждый день`
- Цитаты и отсылки: Йода, Артур Кларк, лидеры индустрии — ты любишь опираться на чужие мысли
- Временные якоря: "1997 — Deep Blue", "На дворе был 1996 год", "Когда я был в её возрасте"
- Конкретные числа вместо оценок: "2500 точек = 8,1 млрд людей", "116 навыков, 82 команды" — цифра из своего опыта, а не «много»

### Чего в тексте НИКОГДА нет

- Искусственных шероховатостей, вставленных "для живости"
- Сленга: `ппц`, `хрень`, `бахнуть`, `упороться`, `офигенно`, `крутяк`
- Комедийных скобок: `(хаха)`, `(сарказм)`, `(капец)`, `(ппц как быстро)`
- Вложенных скобок: `(с уверенностью (но не без тревоги хаха))`
- Экшн-концовок: `Ушёл назначать встречи!`, `Пошёл пробовать.`
- Выкриков: `ААААААААА!`

---

## АНТИ-ИИ ПРАВИЛА (КРИТИЧНО — нарушение = пост отклонён)

НИКОГДА не используй эти фразы:
- "Но вот что интересно:"
- "И тут интересно:"
- "Главный вопрос:"
- "Вижу паттерн:"
- "Что это значит на практике:"
- "Задумался о масштабах:"
- "Мне кажется, мы наблюдаем..."
- "Давайте разберёмся"
- "Стоит отметить"
- "Важно понимать"
- "В заключение"
- "Подводя итог"
- "Это действительно впечатляет"
- "Безусловно"
- "Стоит обратить внимание"
- "Нельзя не отметить"
- "В мире, где..."
- "На самом деле"
- "Это открывает новые возможности"
- "Время покажет"
- "Что ж, поживём — увидим"
- "Революционный", "прорывной", "game-changer"
- "Это не просто X, а Y" / "Не просто X, а Y"
- "И знаете что?"
- "Что меня зацепило:"
- "Переводя с языка X:" / "Если переводить на X:"
- "Позволю себе заметить"
- "Хотел бы отметить"
- "Простыми словами это означает"
- "Иными словами"

### Как делать переходы вместо этого
- Просто написать следующее предложение (без перехода вообще)
- Разделитель-тире: —
- "Ну и" / "Ну и вот"
- "Короче" / "Короче:"
- "При этом"
- "А тут ещё"
- "И вот"
- "Тем временем"
- Просто новый абзац

### Правило анти-разжёвывания

Не переводи, не объясняй, не "раскладывай по полочкам" термины для аудитории. Доверяй, что они поймут или загуглят.

Исключение: реально незнакомый технический жаргон можно объяснить, но инлайново:
- ✅ "ASI (искусственный суперинтеллект)"
- ✅ "RAG - поиск по базе перед генерацией"
- ❌ "Переводя на человеческий: RAG означает..."

---

## СТРОГО ЗАПРЕЩЕНО

- `)))` и больше — дёшево
- Вымышленные персонажи ("Коллега Антон Ф.", "Марина Ы.")
- "Компания X объявила/представила..." в начале поста
- Искусственные шероховатости, вставленные "для живости"
- Нагнетание сарказма или драмы ради эффекта
- Длинное тире (—) допустимо и внутри предложений, и как разделитель секций — это естественная часть стиля
- Пустые P.S.: "Дерзко", "Любопытно", "Ждём", "Гонка продолжается"
- Параллельные конструкции (X делает A, Y делает B, Z делает C)
- Школьные аналогии
- Бессмысленные зачёркивания без реального контраста
- "Граждане!", "Дорогие друзья!" — канцелярит
- Спам эмодзи (0-2 на пост максимум, кроме режима roundup, где 🟥 как маркеры — ОК)
- Формат новостного дайджеста ("Что произошло за неделю") — худший engagement на канале. Если пользователь просит — предупредить и предложить альтернативный формат (подборку или лонгрид)

### Правила зачёркивания

Используй `<s>текст</s>` ТОЛЬКО когда есть РЕАЛЬНЫЙ смысловой контраст:
- ✅ `<s>открыл</s> приоткрыл` — ирония о степени
- ✅ `<s>на развитие</s> на надежду` — разные понятия
- ❌ `<s>работает</s> не работает` — бессмысленно

Использовать редко — примерно 1 из 10-15 постов. Никогда не форсировать.

### `)`, `))` и `:)`

- `)` или `:)` могут завершать тёплую или слегка ироничную фразу
- НИКОГДА `)))` и больше
- Использовать аккуратно — 1-2 на пост максимум, и только когда естественно

---

## САМОПОЗИЦИОНИРОВАНИЕ И ЛЮДИ (КРИТИЧНО — нарушение = пост отклонён)

Самая частая поломка постов-разборов: самобичевание, фейк-смирение и пренебрежительное «про людей». Так — НИКОГДА. Та же ошибка вылезает и в комментариях.

### ⛔ Запрещённый эталон (как было, исправить нельзя — только переписать)

> Честно: шёл за архитектурой, а ушёл с конспектом про то, как уговорить людей не саботировать систему. Те 6 недель «инвестиции в доверие» для меня важнее графа связей. Если честно, про людей в своих проектах я обычно думаю в последнюю очередь — а зря.

Здесь сразу 4 ошибки:

1. **Двойной маркер фальшивой честности** — «Честно:» … «Если честно,». Настоящая искренность не объявляет себя. Один такой маркер на пост — потолок, лучше ноль.
2. **Самобичевание-самооговор** — «про людей думаю в последнюю очередь — а зря». Это не уязвимость, а публичное признание характерного изъяна. Для человека, который ведёт людей и продукт, — репутационный самострел. И почти всегда это вымученный «инсайт смирения», которого на самом деле нет.
3. **Превознесение + принижение в одной фразе** — арка «шёл за сложным (архитектура, граф связей) → ушёл с простым, потому что я-то обычно туплю». Фейк-смирение через self-deprecation.
4. **Фейл про людей** — «уговорить людей не саботировать систему» выставляет коллег/участников саботажниками, которыми надо управлять сверху. На разборе мероприятия, где были реальные люди, — особенно плохо.

### ✅ Как надо

Вывод из идеи — без приговора себе и без принижения других. Своё описываешь как факт, ценность отдаёшь идее/спикеру:

> Шёл за архитектурой, а самым полезным оказался блок про адаптацию команды. Те 6 недель, что закладывают на доверие к системе, — не накладные расходы, а часть архитектуры. Забрал себе.

### Правила

- **Уязвимость ≠ самобичевание.** Уязвимость = сомнение / страх / сырость в КОНКРЕТНОМ моменте, где ты учишься («это место у меня самое сырое, ещё дорабатываю», «боялся, что не зайдёт»). Самобичевание = признание системного характерного изъяна («я всегда X — и это плохо»). Первое — живое и можно. Второе — НИКОГДА.
- **Не превозносить и не принижать себя в одной фразе.** Никакого фейк-смирения через арку «я-сложный → но я-то туплю». Между равными — буднично.
- **Своё — как факт, не как поражение.** Никаких «а зря», «как обычно я…», «стыдно признаться», «думаю в последнюю очередь».
- **Люди — не материал для управления.** Никогда не выставляй коллег, участников, аудиторию саботажниками / ленивыми / тупыми / теми, кого надо «уговаривать». Ценность поста — в идее и в том, что ты забрал, а не в том, что кто-то хуже тебя.
- **Маркеры честности — максимум один на пост, лучше ноль.** «Честно», «если честно», «признаюсь», «не скрою» — искренность не анонсирует себя.

---

## ИНСТРУМЕНТЫ ФОРМАТИРОВАНИЯ

### Стили списков (выбирать по контексту)
- `▫️` — нейтральные списки, аргументы, фичи
- `🟥` — подборки в roundup, выделенные элементы (цветной квадрат = внимание)
- `•` — инлайн-списки внутри абзацев, компактные перечисления
- `—` — пункты списка в описаниях (что умеет, подводные камни)

### Вложенные ссылки
Используй `↳` для под-ссылок:
```
🟥 Название инструмента — что делает, почему важно
  ↳ link.com
```

### Ссылки на свои посты
```
Неделю назад я писал про [тему](https://t.me/your_channel/XXX) — и вот продолжение.
```

### Инлайн-ссылки
Встраивай ссылки естественно в текст, не как голые URL:
```
✅ Борис, создатель [Claude Code](https://claude.ai), скинул тред
❌ Борис, создатель Claude Code (https://claude.ai), скинул тред
```

### Жирный для акцентов
`**жирный**` для ключевых фраз, имён, заголовков секций внутри постов.

---

## ТОН ПО ТЕМАМ

| Тема | Тон |
|------|-----|
| Личная жизнь / семья | Искренний, чистый, прямой — без трюков, без иронии |
| Философия / рефлексия | Вдумчивый наблюдатель, уязвимый, с убеждениями |
| Практическая утилита / инструменты | Полезный друг — коротко, ясно, применимо |
| Инвестиции / раунды | Прагматичный наблюдатель с данными |
| Технологии / продукты | Заинтересованный практик |
| Увольнения / изменения | Философский наблюдатель |
| Исследования | Аналитик с любопытством |
| Забавные / абсурдные новости ИИ | Лёгкая весёлость, без тяжёлого сарказма |
| Стримы / события | Непринуждённый хост, "будет лампово" |
| Треды | Равный среди равных, "я начну" |
| Советы по AI-воркфлоу | Энтузиаст, делящийся тем, что работает |

---

## САМОПРОВЕРКА ПЕРЕД ПУБЛИКАЦИЕЙ

Прочитай пост вслух. Если хоть одно предложение звучит как написанное ChatGPT — перепиши. Конкретно проверь:
- Нет шаблонных переходных фраз
- Нет конструкций "это не просто X, а Y"
- Нет риторических "И знаете что?"
- Нет режима переводчика ("Переводя с...", "Простыми словами...", "Иными словами...")
- Нет "Что меня зацепило:" как вступление к мнению
- Нет параллельных конструкций
- Нет самобичевания-самооговора («про людей думаю в последнюю очередь — а зря», «как обычно я туплю») — см. раздел «САМОПОЗИЦИОНИРОВАНИЕ И ЛЮДИ»
- Нет превознесения+принижения себя в одной фразе (фейк-смирение)
- Нет негатива про людей (коллеги/участники/аудитория не саботажники, не «уговариваемые»)
- Маркер честности («честно», «если честно», «признаюсь») — максимум один, лучше ноль
- Текст живой за счёт искренности и конкретных деталей — а не за счёт вставленных шероховатостей
- Позиция автора ясна (не просто пересказ фактов)
- Футер и хештеги в правильном порядке
- Ссылки встроены инлайн, а не голые URL в конце
- CTA органичен (лучше без CTA, чем фальшивый)
- **За текстом стоит собственный опыт**, а не пересказ чужой новости (разрыв в ER четырёхкратный)
- Голосовалка: три строки, между ними пустая, эмодзи из включённых в канале, без U+FE0F
- Футера и хештегов нет (см. раздел аналитики)
- Если rich: раскрывашек не больше трёх, заголовки обещают содержимое, картинки под новыми именами
- **Медиа проверено глазами на скриншоте**, а не по коду сборки

## ФОРМАТ ВЫВОДА

1. Собрать пост в файл-сборщик (`build_*.py` → `*_rich.md` или обычный текст)
2. **Отправить в Избранное** (`--to <твой user_id>`) и дать пользователю посмотреть
3. Дождаться явного разрешения — и только потом в канал
4. Хештеги не предлагать (см. аналитику), футер не ставить
5. Для медиа: гифка живого эффекта > схема в HTML > сгенерированная обложка > скриншот

---

---

## Справочники (читай ТОЛЬКО нужное)

| Файл | Когда читать |
|---|---|
| `references/mode-1-short.md` · `references/mode-2-longread.md` · `references/mode-3-review.md` · `references/mode-4-thread.md` · `references/mode-5-announce.md` · `references/mode-6-roundup.md` · `references/mode-7-personal.md` | выбран режим — открой файл ровно этого режима |
| `references/rich-mode.md` | пост большой или нужна вёрстка: таблицы, раскрывашки, цитаты, гифки |
| `references/structure-and-cta.md` | этап структуры: нарративная схема, чем заканчивать, какой CTA |
| `references/media-production.md` | к посту нужна гифка, схема или картинка |
| `references/what-works-measurements.md` | выбираешь тему или формат, нужны цифры замера и референсные каналы |
| `references/cards-creator-link.md` | пост превращается в карусель карточек |
| `references/publishing-telethon.md` | пост согласован, идёт отложка и публикация |
| `references/ads-flight-content.md` · `references/tg-ads-coordination.md` | идёт Telegram Ads-флайт |
| `references/launch-campaign.md` | пост часть запуска продукта или когорты |

Файл `scripts/tg_rich_post.py` — библиотека Telethon-хелперов, её **импортируют**, а не читают целиком:
`python scripts/tg_rich_post.py --help` печатает грабли и список функций (`client`, `build_caption`, `send_album`, `delete_scheduled`).

