Два полезных скрипта для Obsidian
Выведение выделенного текста и добавление свойств с перемещением заметки
Не, я не какой-нибудь Obsidian-маньяк, который все оптимизирует, ставит множество плагинов и городит сложную систему ведения заметок. Я стремлюсь к минимализму, но не настолько, чтобы отказаться от свойств и баз и всю организацию построить на паре-тройке папок и тегах. Однако я использую некоторые продвинутые функции, такие как скрипты. Опишу использование двух, которые облегчают сбор материала, и работу с входящими.
Вывод выделенного текста
Obsidian Web Clipper собирает информацию, делая слепки целых веб-страниц. Страница конвертируется в формат маркдауна и в виде файла отправляется в папку Obsidian. У меня это папка Clipping.
Дальше читаю текст, выделяю цветом важные моменты и уже потом работаю с ними. Но не так удобно потом возвращаться и пролистывать файл просматривая акценты. Гораздо проще вывести весь выделенный текст списком вначале заметки. Вот это и делает скрипт. Используется dataviewjs из популярного плагина Dataview.
Прописал этот код в шаблоне расширения Obsidian Web Clipper. При создании клипа он добавляется перед сохраненным контентом. Вот сам текст шаблона:
## Выделенное на странице
```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) {
dv.list(cleanHighlights);
} else {
dv.paragraph(”В текущем документе нет выделенного текста.”);
}
} else {
dv.paragraph(”В текущем документе нет выделенного текста.”);
}
});
} else {
dv.paragraph(”Не удалось получить доступ к текущему документу.”);
}
```
{{content}}Добавление свойств и перенос
Другой скрипт используется через плагин templater. Он добавляет свойства к уже существующему файлу и переносит его в другую папку.
Работа в Obsidian у меня устроена так, что по умолчанию заметка создается в папке Inbox. У такой заметки нет свойств, она считается временной. Если я не нахожу что с ней делать, то удаляю (но чаще такие заметки лежат месяцами). Если я решаю, что заметка готова стать постоянной, то запускаю templater и она наделяется свойствами и отправляется в папку с постоянными заметками.
Основные свойства: tags, created, modified, description, area, topic, focus.
Папка для заметок у меня одна. Собираю их по областям, которых у меня немного: ведение заметок, блоки писательства, приложения, мышление. С недавнего времени стал использовать еще и темы, чтобы еще более сузить группировку заметок. В области создается тематическая заметка и уже она собирает под себя заметки. Все это отображается в базах.
Фокус, как свойство типа чекбокса, я тоже стал использовать недавно. Мне так проще видеть на чем я сосредоточен, над чем работаю. Да, можно выносить подобные заметки в отдельные папки, добавлять в закладки, но с фокусом проще и нагляднее. Да и опять же удобно потом отображать в базах.
Код шаблона
<%*
// Генерируем дату и время в формате ГГГГММДДЧЧ
let newFileName = tp.date.now(”YYYYMMDDHH”);
// Изменяем название текущего файла
await tp.file.rename(newFileName);
let currentDateTime = tp.date.now(”YYYY-MM-DD HH:mm”); // Добавляем свойство created в начало файла с текущей датой и временем
setTimeout(() => {
app.fileManager.processFrontMatter(tp.config.target_file, frontmatter => {
// Update or add as many fields as you want
frontmatter[’tags’] = ‘note’;
frontmatter[’created’] = currentDateTime;
frontmatter[’modified’] = currentDateTime;
frontmatter[’description’] = ‘’;
frontmatter[’area’] = ‘’;
frontmatter[’topic’] = ‘’;
frontmatter[’focus’] = ‘’;
})
}, 200)
await tp.file.move(”Notes/” + tp.file.title)
%>
