ObsidianのDaily Notesに毎日のニュースを書き込むようにした話
Obsidianは、Markdown形式でノートを整理する強力なツールであり、個人的な知識管理や日々のタスク管理に非常に便利です。今回、私はObsidianのプラグインである「Daily Notes」と「Templater」を組み合わせ、毎日最新のニュースを自動的に書き込む方法を実現しました。
方法
1. Obsidianのプラグインを使ってDaily Notesを作成
Obsidianには「Periodic Notes」というプラグインがあり、これを使うことで、毎日のノート(Daily Notes)を自動で作成できます。Open todayというボタンを押して、毎日決まったテンプレートに基づいてノートを作成しています。テンプレートを登録するためにはCommunity plugin>>Periodic Notes>>Daily Notes>>Daily Note Templateにテンプレートを登録する必要があります。
2. Templaterを使用してJavaScriptを動作させる
ObsidianにはTemplaterという強力なプラグインがあります。Templaterは、Obsidian内でJavaScriptを使って動的なテンプレートが作れます。
Obsidianでニュースを自動的に挿入
Templaterを使用して、このJavaScript関数を毎日のノート作成時に実行し、その結果をノートに追加します。具体的には、以下のようにテンプレートファイルを設定します。<%* %>
ここがTemplaterで動かしているJavaScriptの部分です。
# 🌟 Daily Template - {{date:YYYY-MM-DD}}
## {{date:YYYY年MM月DD日(ddd)hh:mm}}
---
## 📺 News & Updates
<%*
async function getYahooNews() {
const rssUrl = "https://news.yahoo.co.jp/rss/topics/top-picks.xml";
try {
//Templaterの関数を使ってrequestを送る
const response = await tp.obsidian.requestUrl(rssUrl);
if (response.status != 200) {
return "ニュースの取得に失敗しました。";
}
const xml = await response.text;
// ニュースアイテムを抽出
const items = xml.match(/<item>([\s\S]*?)<\/item>/g);
if (items && items.length > 0) {
let newsList = "### 今日のYahooニュース\n\n";
for (let i = 0; i < Math.min(items.length, 10); i++) {
const titleMatch = items[i].match(/<title>(.*?)<\/title>/);
const linkMatch = items[i].match(/<link>(.*?)<\/link>/);
const title = titleMatch ? titleMatch[1] : "タイトル不明";
const link = linkMatch ? linkMatch[1] : "#";
newsList += `- [${title}](${link})\n`;
}
return newsList;
} else {
return "ニュースが見つかりませんでした。";
}
} catch (error) {
return `エラーが発生しました: ${error.message}`;
}
}
const news = await getYahooNews();
tR += news;
%>
---
## 🔥 Today’s Mood & Reflections
---
## ✅ Todo List
- **今日の達成目標** 🎯:
- [ ] (最優先タスク)
- [ ] (重要タスク)
- [ ] (余裕があればやりたいこと)
---
## 📖 Daily Diary
**今日感じたこと・気づいたこと・思い出したこと**
-
---
## ✍️ Quick Memo
**アイデアや気づき、メモしたいこと**
-
-
---
## 🎥 Watch Later
(気になる動画や映画)
-
-
---
tags: #{{date:YYYY-MM}} #daily
ここでOpen TodayでDailyが生成されたときにニュースを取得するためにTrigger Templater on new file creationをONにしてください。
最後に
ちなみにデスクトップ版だけではなく、モバイル版のObsidianでも実行できました。
かなりコアな内容ですが、ObsidianでDailyを書いている人の参考になれば幸いです。
追記:2024/12/13
Templaterのtp.obsidian.requestUrl()
を使うとcorsのエラーなしにrequestが遅れることが判明しました!
つきましては,記事の内容をtp.obsidian.requestUrl()
を使った方法へと大幅に修正しています.コメントありがとうございました!
Discussion
私もやってみたくて利用させていただきました。
tp.obsidiaon.requestUrl というのがあるので、テンプレートから tp を渡してユーザ関数内で cors エラーにならずに取得できました。
お試しください。
コメントありがとうございます!
tp.obsidian.requestUrl
を使うとこちらもcorsのエラーなしに実行できました!記事の内容をtp.obsidian.requestUrl
を使った方法に修正しておきますね!