August 18

Конспектирование в Obsidian

и как вывести весь выделенный текст списком в Obsidian

Когда мне попадается статья, которую надо законспектировать, я запускаю через расширение сервис Omnivore. Статьи сохраняются в читаемом виде. Есть функции выделения текста, комментирования. В Obsidian также есть плагин, который все это подтягивает, сохраняя в отдельные файлы.

Но у меня есть еще один вариант сохранения статей из браузера, это расширение MarkDownload. Файлы сохраняются в указанную в настройках папку. Только она должна быть создана в папке Загрузки. Расширение поддерживает сохранение файлов в хранилище Obsidian, но у меня это не работает. Использую для перемещения автоматор.

достаточно одного действия

Не очень удобно пролистывать статью и выискивать выделенные фрагменты текста, гораздо удобней вывести все эти кусочки в начале файла списком. Для этого надо написать запрос для dataview, а точнее для dataviewjs. В работе со скриптом помогла ИИ Claude.

```dataviewjs
const currentFile = app.workspace.getActiveFile();
if (currentFile) {
  app.vault.read(currentFile).then(content => {
    // Обновленное регулярное выражение для более точного поиска выделенного текста
    let highlights = content.match(/==([^=]+?)==/g);
    
    if (highlights && highlights.length > 0) {
      let cleanHighlights = highlights.map(h => h.replace(/==/g, '').trim()).filter(h => h.length > 0);
      
      if (cleanHighlights.length > 0) {
        // Разбиваем контент на строки
        let lines = content.split("\n");
        
        // Создаем таблицу с ссылками
        let tableData = cleanHighlights.map(text => {
          // Ищем строку, содержащую текст
          let lineNumber = lines.findIndex(line => line.includes(`==${text}==`)) + 1;
          let link = `${currentFile.path}#^${lineNumber}`;
          return [lineNumber, `[[${link}|${text}]]`];
        });
        
        dv.table(["Line Number", "Highlighted Text"], tableData);
      } else {
        dv.paragraph("В текущем документе нет выделенного текста.");
      }
    } else {
      dv.paragraph("В текущем документе нет выделенного текста.");
    }
  });
} else {
  dv.paragraph("Не удалось получить доступ к текущему документу.");
}
```


Добавляю этот код через templater, вручную. Но, думаю, и это можно автоматизировать.

вот так выглядят собранные хайлайты

Скрипт находит все куски текста, обрамленные двойными знаками равно и выводит их в виде списка. Текст можно вывести и в виде таблицы, с указанием места, но сделать переходы по ссылкам мне не удалось.