# Obsidian Ingest

> Превращает markdown-источник (статья, вебклип, транскрипт, конспект) в знания базы: литературная заметка, атомарки, связи. Срабатывай на «добавить в базу знаний», «переработать статью», «обработать конспект», «ингестировать», «положить в SecondBrain».

- Skill: `jtprogru/obsidian-ingest-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add jtprogru/obsidian-ingest-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jtprogru/obsidian-ingest-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: jtprogru (https://skillmd.com/u/jtprogru)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jtprogru/obsidian-ingest-2

---


# obsidian-ingest — Ингест знаний в SecondBrain

Скилл-координатор пайплайна ингеста: взять один markdown-источник, понять, какие знания в нём скрыты, и создать нужные файлы. Форматирование, frontmatter и связи — часть ингеста, ты делаешь их сам.

Правила хранилища из `.agents/rules/` (frontmatter, атомарность, стиль, теги, именование) загружены в каждую сессию — следуй им, здесь описан только пайплайн. Для внешнего research по необходимости подключай `.agents/skills/deep-research/SKILL.md`.

---

## Шаг 1. Прочитай и пойми источник

**Большой источник (файл или URL больше ~15 КБ) не читай в основной контекст.** Запусти субагента `obsidian-source-reader` (Agent tool, subagent_type `obsidian-source-reader`), передав путь или URL, — он прочитает источник целиком и вернёт структурированную выжимку: метаданные, главный тезис, кандидатов в атомарки с цитатами-опорами, противоречия, термины. Формат выжимки зафиксирован в самом агенте (`.agents/agents/obsidian-source-reader.md`).

Дальше основная сессия работает только с выжимкой: ищет дубликаты в базе, составляет план, создаёт заметки, расставляет связи. Малый источник (меньше ~15 КБ) читай напрямую, как обычно.

По итогам чтения или выжимки определи: тип контента, главную тему (одна фраза), домен (теги таксономии) и стартовый `confidence` (`medium` если источник один).

---

## Шаг 1.5. Внешний research (опционально)

Запускай **только** при срабатывании триггера: источник старше 2 лет на технологическую тему; тезисы с «многие/часто/обычно» без конкретики; инструмент или паттерн, которого нет ни в одной существующей заметке (проверь `rg`); единственный источник просится в `confidence: high`; пользователь явно попросил «обогати», «дополни», «исследуй».

Если триггеров нет — переходи к шагу 2. Методичка — `deep-research`. Потолок — 3–5 внешних источников: цель — обогатить *этот* источник, а не написать обзор по теме. Запросы формулируй на текущей дате и по-английски, результаты записывай по-русски.

По итогам зафиксируй для шагов 4–5: что **подтверждается** (повод для `confidence: high`), что **расширяется** (абзац в литературке и атомарках), что **противоречит** (callout + `contradicts`).

---

## Шаг 2. Извлеки сущности

Типы: **концепты и модели**, **инсайты** (нетривиальные выводы), **факты**, **практики** («как делать»). Критерии атомарности — навык `/knowledge-structures`, раздел «Когда выделять раздел в отдельную заметку».

Выделяй столько сущностей, сколько в источнике реально самостоятельных идей. Одна или ноль — нормальный результат: не дотягивай до «нормы» и не дроби ради количества.

---

## Шаг 2.5. Семантический поиск существующих заметок

Каждую сущность прогони через `myvault_search` — он ловит уже написанное другими словами, тогда как `rg` на шаге 3 найдёт только точное совпадение имени. Запросы: главный тезис по-русски + английский эквивалент термина. Параметры гибридного поиска — см. CLAUDE.md.

Дополнительно один запрос по теме источника целиком — он даёт 5–10 кандидатов на обновление (требование `workflows.md`, «Ингест внешнего источника»).

Решение по каждой сущности: нашлась заметка с близким тезисом → она идёт в блок «Обновить существующие», не «Создать новые»; нашлись только смежные темы → создаём новую, кандидаты в `other` или wikilinks из тела; ничего релевантного → создаём новую. Зафиксируй для шага 4 список кандидатов на обновление и что именно в каждом меняешь.

---

## Шаг 3. Придумай названия заметок

Стиль (claim-based) и запрещённые символы — `file-naming.md`. Перед именованием — `rg -l "<ключевое слово>"` для проверки точных дубликатов; семантические уже отловлены на шаге 2.5. Если похожая заметка есть — план включает обновление существующей, а не создание новой.

---

## Шаг 4. Составь план ингеста

Протокол «план → подтверждение → действие» — `workflows.md`. Все новые файлы создаются в `00. Входящие/`, целевая папка в плане — справочно (переезд после ревью автором). Формат:

```
📄 Литературная заметка: «Название источника»
   → 00. Входящие/  (#literature-note #review → 03. Ресурсы/03. Литературные заметки/)

📝 Новые атомарные заметки:
   1. «Название заметки А» — суть одним предложением
      → 00. Входящие/  (#thought #review → 03. Ресурсы/04. Заметки/)

🔄 Обновить существующие:
   - [[Существующая заметка]] — что именно меняется

🗺 MOC (если нужен):
   - [[MOC по теме]] — добавить новые заметки

🔬 Внешний research (если был шаг 1.5):
   - триггер, число запросов/источников; что подтверждено / расширено / противоречит
```

Существующую заметку перед правкой прочти и опиши в плане, что меняешь. Не перезаписывай молча.

---

## Шаг 5. Создай файлы

После подтверждения плана — в порядке: литературка → атомарки → обновление существующих.

### 5а. Литературная заметка

В `00. Входящие/` (целевая — `03. Ресурсы/03. Литературные заметки/`). Файл заводи через Templater по `Шаблон литературной цитаты.md` — рецепт и грабли в навыке `/note-templates`, раздел «Как применить шаблон технически»; поля дозаполняй `Edit`-ом. Формат полей `summary`, `sources`, `contradicts`, `ai_generated` — политики в `note-types-frontmatter.md`.

Блок ниже — что должно получиться после заполнения, а не шапка для копипасты:

```markdown
---
aliases: []
tags:
  - literature-note
  - review
up: []
links:
  - "URL источника (если есть)"
sources:
  - "Название и автор источника"
contradicts: []
confidence: medium
summary: "Главный тезис источника и чем он полезен"
ai_generated: true
---

## О чём

2–3 предложения: что это за текст и зачем его читать.

## Ключевые идеи

- [[Атомарная заметка А]] — одно предложение о чём

## Цитаты и фрагменты

> Важная цитата, которую хочется сохранить дословно.

## Внешний контекст

Секция появляется только если выполнялся шаг 1.5: что подтверждается, расширяется или опровергается внешними данными, с inline-ссылками на URL. Не было research — секции нет.

## Вопросы и следующие шаги

Опциональная секция: заполняй, только если по источнику остались реальные открытые вопросы. Не выдумывай вопросы ради секции — если их нет, пропусти её целиком.
```

### 5б. Атомарные заметки

Для каждой сущности из плана — заметка в `00. Входящие/` (целевая — `03. Ресурсы/04. Заметки/`), через Templater по `Шаблон мысли.md` (концепт — `Шаблон концепта.md`); см. навык `/note-templates`. Тело держи в 300–800 знаках: это медиана авторской атомарки, а не формальный лимит — всё сверх одной мысли либо пересказывает родителя, либо является второй заметкой (`note-density.md`). Блок ниже — результат заполнения, не шапка для копипасты:

```markdown
---
aliases: []
tags:
  - thought
  - review
up:
  - "[[Литературная заметка — источник]]"
links: []
sources:
  - "Название источника"
contradicts: []
confidence: medium
other: []
summary: "Суть утверждения в claim-стиле"
ai_generated: true
---

## Суть

По умолчанию ОДИН абзац своими словами — больше только если идея реально не влезает. Не копируй дословно из источника. Пиши так, чтобы через год было понятно без открытия источника.

## Контекст

Опциональная секция: откуда пришла идея. Пропусти её целиком, если нечего сказать сверх того, что уже видно из up/sources.

## Связанные идеи

Опциональная секция: - [[Другая заметка]] — почему связана. Пропусти целиком, если содержательных связей сверх up/sources нет.
```

### 5в. Обнови существующие заметки

Для каждой заметки из плана:

- Добавь новый источник в `sources` (никогда не очищай поле)
- Добавь wikilink на новую атомарку или литературку
- Если информация расширяет — абзац со ссылкой на источник; если противоречит — callout `> [!warning] Противоречие: …` + взаимные ссылки в `contradicts` (политика — `note-types-frontmatter.md`)
- При существенной правке тела обнови `summary`; отсутствующий `summary` добавь (это НЕ повод ставить `ai_generated`)

### 5г. Применение находок research (если был шаг 1.5)

- **Подтверждение** → в атомарке `confidence: medium → high`, внешний URL в `sources` рядом с литературкой (литературная остаётся первой)
- **Расширение** → абзац в атомарке с inline-ссылкой + пункт в «Внешнем контексте» литературки
- **Противоречие** → callout + двусторонний `contradicts`; если альтернативная позиция тянет на самостоятельную идею — отдельная атомарка с взаимными ссылками
- Внешних URL в `sources` атомарки — не больше 2–3, лишние идут только в литературку

---

## Шаг 6. Проверка плотности

Перед отчётом прогони созданные файлы:

```bash
python3 .agents/scripts/check_note_density.py "00. Входящие"
```

Скрипт печатает объём тела против авторского корпуса, пустые секции шаблона, вводные обороты, эхо `summary` и дубли связей. Находки правь сразу. Формально сокращать не нужно: если после снятия воды остаются две разные мысли — это `obsidian-split-note`, а не редактура.

---

## Шаг 7. Финальный отчёт

```
✅ Создано: [[Литературная заметка]], [[Заметка А]], …
🔄 Обновлено: [[Существующая заметка]] — что именно
⚠️ Проверить: спорные решения (не нашёл похожей заметки, выбор confidence, …)
🔬 Research (если был): триггер, источники, поднятые confidence, зафиксированные противоречия
```

---

## Правила, которые нельзя нарушать

- **Не удаляй исходный файл** — пользователь сам решит, что с ним делать
- **Не переписывай существующие заметки с нуля** — только дополняй
- **Не создавай «мёртвые» wikilinks** — ссылки только на существующие или только что созданные заметки
- **Не плоди теги и frontmatter-поля** — только существующая таксономия и поля из шаблонов
- **Сохраняй авторский голос** — живой текст источника не превращай в сухую документацию
- **Поле `sources` никогда не очищай**
- **Не раскрывай мысль там, где надо её зафиксировать** — вводных абзацев, закругляющих финалов и аналогий «для наглядности» в агентской заметке не бывает; пустую секцию шаблона удаляй, а не заполняй (`note-density.md`)

Маршрутизация по PARA (какой тег — в какую папку) — таблица в `tags.md`. Все новые файлы рождаются в `00. Входящие/` с `#review`; обновление существующих заметок идёт на месте.

