Публикатор статей LinkedIn
iamzifei/linkedin-article-publisher-skillClaude Skill для автоматической публикации Markdown-статей в LinkedIn Articles. Конвертирует форматирование, загружает изображения с точным позиционированием по block_index, сохраняет черновик. Экономит до 90% времени по сравнению с ручным оформлением.
Установка
pip install Pillow pyobjc-framework-CocoaREADME
LinkedIn Article Publisher Skill
Публикуйте Markdown-статьи в LinkedIn Articles одной командой. Забудьте о муторном форматировании в rich text редакторе.
v1.0.0 — Позиционирование изображений по block-index для точной вставки
Проблема
Если вы привыкли писать в Markdown, публикация в LinkedIn Articles — это боль:
| Проблема | Описание |
|---|---|
| Потеря форматирования | Копируешь из Markdown-редактора → вставляешь в LinkedIn → всё форматирование слетает |
| Ручное оформление | Каждый H2, жирный текст, ссылку нужно настраивать вручную — 15–20 минут на статью |
| Муторная загрузка изображений | Несколько кликов на каждое: добавить медиа → выбрать → ждать |
| Ошибки позиционирования | Сложно запомнить, куда именно вставить каждое изображение |
Сравнение по времени
| Задача | Вручную | С этим Skill |
|---|---|---|
| Конвертация форматирования | 15–20 мин | 0 (автоматически) |
| Обложка | 1–2 мин | 10 сек |
| 5 изображений в тексте | 5–10 мин | 1 мин |
| Итого | 20–30 мин | 2–3 мин |
Ускорение в 10 раз
Решение
Skill автоматизирует весь процесс публикации:
Markdown File
| Python parsing
v
Structured Data (title, images with block_index, HTML)
| Playwright MCP
v
LinkedIn Articles Editor (browser automation)
|
v
Draft Saved (never auto-publishes)
Ключевые возможности
- Rich Text Paste: конвертирует Markdown в HTML и вставляет через буфер обмена — всё форматирование сохраняется
- Позиционирование по Block-Index: точная вставка изображений по индексам элементов, без сопоставления текста
- Обратная вставка: изображения вставляются от наибольшего индекса к наименьшему, чтобы избежать смещений
- Умное ожидание: условия проверяются немедленно при выполнении, без лишних задержек
- Безопасность по умолчанию: только сохраняет черновик, никогда не публикует автоматически
Зачем Block-Index?
Раньше изображения позиционировались по совпадению с окружающим текстом — это давало сбои, когда:
- несколько абзацев содержали похожий текст;
- текст был слишком коротким для уникального совпадения.
Теперь каждое изображение имеет block_index, указывающий точно, после какого блочного элемента оно должно стоять. Это детерминировано и надёжно.
Требования
| Требование | Детали |
|---|---|
| Claude Code | claude.ai/code |
| Playwright MCP | Автоматизация браузера |
| Аккаунт LinkedIn | Достаточно бесплатного (Premium не нужен) |
| Python 3.9+ | С зависимостями ниже |
| macOS | Только macOS на данный момент |
pip install Pillow pyobjc-framework-Cocoa
Установка
Способ 1: Git Clone (рекомендуется)
git clone https://github.com/iamzifei/linkedin-article-publisher-skill.git
cp -r linkedin-article-publisher-skill/skills/linkedin-article-publisher ~/.claude/skills/Способ 2: Plugin Marketplace
/plugin marketplace add iamzifei/linkedin-article-publisher-skill
/plugin install linkedin-article-publisher@iamzifei/linkedin-article-publisher-skill
Использование
На естественном языке
Публикуй /path/to/article.md в LinkedIn
Помоги опубликовать эту статью в LinkedIn: ~/Documents/my-post.md
Команда Skill
/linkedin-article-publisher /path/to/article.md
Шаги процесса
[1/7] Парсинг Markdown...
-> Извлечение заголовка, обложки, изображений с block_index
-> Конвертация в HTML, подсчёт блоков
[2/7] Открытие редактора LinkedIn Articles...
-> Переход на linkedin.com/article/new/
[3/7] Загрузка обложки...
-> Первое изображение становится обложкой
[4/7] Заполнение заголовка...
-> H1 используется как заголовок (в тело не включается)
[5/7] Вставка содержимого статьи...
-> Rich text через буфер обмена
-> Всё форматирование сохраняется
[6/7] Вставка изображений в тексте (в обратном порядке)...
-> Сортировка по block_index по убыванию
-> Клик по блочному элементу по индексу -> вставка изображения
-> Ожидание загрузки (возврат сразу после завершения)
[7/7] Сохранение черновика...
-> Проверьте и опубликуйте вручную
Поддерживаемый Markdown
| Синтаксис | Результат |
|---|---|
# H1 | Заголовок статьи (извлекается, в тело не входит) |
## H2 | Заголовки разделов |
### H3 | Заголовки подразделов |
**bold** | Жирный текст |
*italic* | Курсив |
[text](url) | Гиперссылки |
> quote | Цитаты |
- item | Маркированные списки |
1. item | Нумерованные списки |
 | Изображения (первое = обложка) |
Пример
Входной файл: article.md
# 5 AI Tools Worth Watching in 2024

AI tools exploded in 2024. Here are 5 worth your attention.
## 1. Claude: Best Conversational AI
**Claude** by Anthropic excels at long-context understanding.
> Claude's context window reaches 200K tokens.

## 2. Midjourney: AI Art Leader
[Midjourney](https://midjourney.com) is the most popular AI art tool.
Результат парсинга (JSON)
{
"title": "5 AI Tools Worth Watching in 2024",
"cover_image": "./images/cover.jpg",
"content_images": [
{"path": "./images/claude-demo.png", "block_index": 4},
{"path": "./images/midjourney.jpg", "block_index": 6}
],
"total_blocks": 7
}Порядок вставки
Изображения вставляются в обратном порядке: сначала block_index=6, затем block_index=4.
Итог
- Обложка:
cover.jpgзагружена - Заголовок: «5 AI Tools Worth Watching in 2024»
- Содержимое: rich text с H2, жирным текстом, цитатами, ссылками
- Изображения: вставлены на точные позиции по block index
- Статус: Черновик сохранён (готов к ручной проверке)
Структура проекта
linkedin-article-publisher-skill/
├── .claude-plugin/
│ └── plugin.json # Конфигурация плагина
├── skills/
│ └── linkedin-article-publisher/
│ ├── SKILL.md # Инструкции Skill
│ └── scripts/
│ ├── parse_markdown.py # Извлечение block_index
│ └── copy_to_clipboard.py
├── docs/
│ └── GUIDE.md # Подробное руководство
├── README.md # Этот файл
└── README_CN.md # Китайская версия