---
id: helpers-source-cleanup
updated: 2026-08-15 16:20 GMT+3
---

# Пайплайн: docx / pptx → курс

Разбери Word или PowerPoint. Подготовь текст и картинки к курсу в Демонстраторе.

## Порядок

```
.docx / .pptx
  → извлечь текст и картинки
  → сложить staging на диске
  → зачистить текст
  → отобрать картинки
  → загрузить нужные на CDN (curl)
  → подставить CDN URL в текст
```

Дальше собирай материал по `SKILL.md`, `README.md`, `01`–`06` рядом в проекте.

## 1. Извлеки содержимое

| Файл | Текст | Картинки |
|---|---|---|
| `.docx` | pandoc / unpack / скилл среды | `word/media/` или export |
| `.pptx` | markitdown / notes / скилл среды | картинки слайдов; порядок ≈ слайды |

Запиши:

- структуру: разделы, слайды, спикер-ноты;
- подписи к рисункам («рис. 1», «см. схему»);
- что несёт смысл, что декор (логотип, фон, иконка).

## 2. Сложи staging

Одна папка на урок или пакет:

```
lesson-01/
  source.docx
  text-raw.md
  text-clean.md
  media/
    fig-01.png
    fig-02.webp
```

Имена файлов — **ASCII-only**: `fig-01.png`, `slide-03-scheme.webp`.  
Не используй кириллицу в пути или имени. Скопируй в staging с латинским именем.  
Русское имя в медиатеке — после upload (`rename-resource` / `display_name`).  
Не используй имена вроде `image1 (1).png`.

## 3. Зачисти текст

Из `text-raw.md` сделай `text-clean.md`:

1. Убери автонумерацию Word, мягкие переносы, пустые абзацы-спам, колонтитулы, водяные знаки в тексте.
2. Сведи заголовки, абзацы и списки к обычному markdown.
3. Сохрани смысл автора. Меняй стиль только по запросу.
4. Отметь места картинок:

```markdown
![Схема процесса](./media/fig-01.png)
```

Локальный путь — только в staging.  
В материал Демонстратора ставь HTTPS CDN после шага 5.

## 4. Отбери картинки

По каждой картинке реши: в курс или нет.

В курс: схема, скрин, иллюстрация к смыслу, до/после, подложка для hotspot.

Мимо: логотип, фон слайда, декоративная иконка, полный скрин слайда после переноса текста.

Несколько кропов одной схемы → одна лучшая или явная пара «до / после».

Стиль презентации часто совпадает с CSS-темой курса.  
Спроси пользователя: переносить ли цвета и приёмы оформления в тему.

## 5. Загрузи картинки на CDN

MCP не читает `C:\…`.  
`upload-media-from-fs` с Windows-path не вызывай.  
`insert-media-block` файл не заливает.

Канон для картинки — Shell `curl` в текущем workspace.
Путь и `filename` — ASCII-only. Кириллица ломает upload.
Токен — тот же Bearer, что стоит в конфиге MCP-клиента в IDE (сервер `demonstrator-mcp` / `user-demonstrator-mcp`). **Не ищи токен в переменных окружения шелла** — там может лежать старый/отозванный токен. Нет токена в конфиге — спроси у пользователя.

Канон:

```powershell
curl.exe -sS -X POST "https://app.longread.agency/api/resources" `
  -H "Authorization: Bearer ТОКЕН_ИЗ_КОНФИГА_MCP" `
  -H "Accept: application/json" `
  -F "file=@C:\work\lesson-01\media\fig-01.png;filename=fig-01.png;type=image/png" `
  -F "material_id=123" `
  -F "original_name=fig-01.png"
```

Если `POST /api/resources` отвечает `401` — токен не тот или ротирован: **стоп и спроси у пользователя актуальный токен**. Не перебирай варианты.

1. Из JSON возьми `id` и `full_url` (или `url`).
2. Вставь через MCP `insert-media-block` (можно `display_name` по-русски) или замени маркер на `![подпись](full_url)`.
3. Нет читаемого имени — вызови `rename-resource`.

Правила:

- Не пиши свой Python/Node upload.
- Не ищи `upload-local-media.ps1` вне текущего workspace.
- Не спрашивай пользователя «как заливать».
- ASCII-имя на диске; русское имя — через `display_name` / `rename-resource` после upload.
- Если `upload-local-media.ps1` уже лежит рядом в этом пакете — можно вызвать его вместо curl. Иначе — curl.
- Нет токена в конфиге MCP или `401` на `/api/resources`: **стоп**, спроси у пользователя актуальный токен. Как временный маркер до токена допустим CDN-заполнитель `https://cdn.longread.agency/demo/image-demo.webp`.

## 6. Свяжи текст и картинки

1. Замени локальные пути и маркеры на CDN URL.
2. Сохрани подписи из исходника.
3. Отдай текст в сборку курса: `01-syntax.md`, `02-methodology.md`, `03-mcp-tools.md`, `04-css-generation.md`, `05-html-widget-rules.md`, `06-russian-typography.md`, `README.md`.

## Чеклист

- [ ] Текст и media извлечены
- [ ] Staging-папка собрана (ASCII-имена media/)
- [ ] `text-clean.md` без мусора офиса
- [ ] Картинки отобраны
- [ ] Картинки на CDN через `curl` (ASCII-путь)
- [ ] В тексте стоят CDN URL
- [ ] Спросил про стиль презентации → CSS-тема
