Confluence Server Publisher
Расширение VSCode для публикации Markdown-файлов в Confluence Server.
Возможности
- Публикация активного
.md файла как страницы Confluence.
- Идемпотентность:
pageId сохраняется во front-matter — повторная публикация обновляет существующую страницу.
- Гибкое применение макроса DIV: четыре режима, комбинируемые между собой.
- Универсальный синтаксис
:::macro name="..." для любых rich-text макросов (divbox, info, note, expand, и т. д.).
- Макрос «Свойства страницы» (
details) генерируется из front-matter поля properties.
- PlantUML: fenced-блоки оборачиваются в макрос плагина PlantUML.
- Изображения: внешние URL
https://... переводятся в <ac:url>, локальные ./img.png загружаются как аттачменты страницы.
- Аутентификация через Personal Access Token (PAT), хранится в VSCode SecretStorage.
Установка
code --install-extension confluence-publisher-0.2.0.vsix
Настройка
{
"confluencePublisher.baseUrl": "https://confluence.company.com",
"confluencePublisher.spaceKey": "DOCS",
"confluencePublisher.parentPageId": "",
"confluencePublisher.divMode": ["fenced"],
"confluencePublisher.divClass": "content-wrapper",
"confluencePublisher.sectionLevel": 2,
"confluencePublisher.inlineSectionClass": true,
"confluencePublisher.plantumlMacroName": "plantuml",
"confluencePublisher.propertiesId": "",
"confluencePublisher.uploadLocalImages": true,
"confluencePublisher.rejectUnauthorized": true
}
Затем Ctrl+Shift+P → Confluence: Set Personal Access Token.
Команды
| Команда |
Назначение |
Confluence: Publish current Markdown |
Опубликовать/обновить страницу |
Confluence: Set Personal Access Token |
Сохранить PAT |
Confluence: Select DIV mode |
Выбрать режим DIV из готовых комбинаций |
Confluence: Test connection |
Проверить доступ к API |
Синтаксис в Markdown
Front-matter
---
title: ТЗ — Модуль импорта данных
parentId: "123456"
properties:
Статус:
macro: status
params:
colour: Green
title: В работе
Ответственный: Иванов И.И.
Версия: "1.2"
Срок: 2026-06-01
propertiesId: tz
---
Значение свойства может быть:
- строкой — обычный текст;
- объектом
{ macro: "имя", params: { ... } } — генерирует макрос внутри ячейки (например, status, date, profile);
- строкой с префиксом
!raw — подставляется как сырой XHTML (для нестандартных макросов).
После первой публикации в front-matter автоматически добавятся pageId и version.
DIV-блоки
:::div class="warning"
Содержимое блока.
:::
Произвольные макросы
:::macro name="info" title="К сведению"
Информационный блок.
:::
:::macro name="divbox" class="callout"
Блок divbox с классом callout.
:::
:::macro name="expand" title="Подробности"
Свёрнутый блок.
:::
:::macro name="note"
- пункт 1
- пункт 2
:::
PlantUML
```plantuml
@startuml
Alice -> Bob: Hello
Bob --> Alice: Hi
@enduml
```
Изображения
Внешний URL:

Локальный файл (загрузится как аттачмент):
''
Режимы DIV
wrap-all — весь контент в одном внешнем DIV-макросе с классом divClass.
per-section — каждый верхнеуровневый раздел (H1 или H2) в своём DIV. Класс берётся из divClass или из inline-синтаксиса ## Title {.my-class}.
fenced — DIV-блоки и произвольные макросы через :::div / :::macro в Markdown.
none — без DIV-макросов.
Режимы можно комбинировать: ["wrap-all", "fenced"] — внешний DIV + явные внутренние.
Требования к серверу
- Confluence Server 7.9+ для поддержки PAT.
- REST API
/rest/api/ должен быть доступен учётной записи.
- Для рендеринга PlantUML — соответствующий плагин на сервере.
- Для макроса «Свойства страницы» — встроенный макрос
details (присутствует в стандартной поставке Confluence).
Автор
Dimitrius Cadimout <usemarkdown@gmail.com>