# Vc Publishing

> Публикация готового черновика (status=ready) на vc.ru через persistent-сессию браузера. Принимает путь к draft-файлу, заполняет редактор и публикует. Не редактирует draft, не выбирает темы.

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

---


# vc-publishing

## Назначение
Ты публикуешь готовый draft на vc.ru. Драфт лежит в `content/drafts/vc/<filename>.md`
со статусом `status: ready` во frontmatter. Логика публикации (browser-сессия,
заполнение редактора, клик «Опубликовать») инкапсулирована в скрипте
`scripts/publish.ts` — ты его дёргаешь, парсишь JSON из stdout и отчитываешься.

## Алгоритм

1. Получи путь к draft-файлу из контекста (routine передаёт его, либо ты
   сам ищешь самый старый `status: ready` в `content/drafts/vc/`).
2. Запусти команду:
   ```
   pnpm exec tsx skills/vc-publishing/scripts/publish.ts <draft-path> --yes
   ```
   Флаг `--yes` обязателен — без него скрипт ждёт stdin-confirm, которого
   у тебя нет.
3. Распарси последнюю строку stdout как JSON:
   ```json
   {"status": "ok"|"failed", "url": "...", "draftPath": "...", "errors": []}
   ```
4. Сформируй отчёт фаундеру:
   - ok + url → «✅ Опубликовано: <url>»
   - ok без url → «⚠ Без URL (возможно модерация vc.ru)»
   - failed → «❌ Не получилось: <errors[0]>»

## Что не делать
- Не редактируй draft-файл (нет прав, не твоя работа).
- Не публикуй один draft дважды в один день.
- Не выдумывай URL — если в JSON `url=null`, так и пиши.

