Конспектирование в 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, вручную. Но, думаю, и это можно автоматизировать.
Скрипт находит все куски текста, обрамленные двойными знаками равно и выводит их в виде списка. Текст можно вывести и в виде таблицы, с указанием места, но сделать переходы по ссылкам мне не удалось.