844 字
4 分钟
Obsidian 宏|一键快速新建博客与备忘笔记
- 添加quickAdd插件,进入插件设置新建宏
- 在宏设置界面依次添加脚本和模板
NOTE脚本代码
module.exports = async (params) => { QuickAdd = params;
const title = await QuickAdd.quickAddApi.inputPrompt("请输入博客标题"); const categories = ["影视剧", "相册", "memos", "简悦","历史","社论", "文学", "学习", "心理", "杂七杂八"]; const category = await QuickAdd.quickAddApi.suggester(categories, categories);
// 如果用户直接关闭窗口,防止 category 为 undefined 报错 if (!category) { new Notice("未选择分类,已取消"); return; }
// 获取标签 const tag1 = await QuickAdd.quickAddApi.inputPrompt("标签1 (可选)"); const tag2 = await QuickAdd.quickAddApi.inputPrompt("标签2 (可选)"); // 新增:描述和图片 const description = await QuickAdd.quickAddApi.inputPrompt("文章描述 (可选,留空则不填)"); const image = await QuickAdd.quickAddApi.inputPrompt("封面图片路径 (可选,留空则不填)");
// 构建标签数组,过滤掉空值 const tags = [tag1, tag2].filter(t => t && t.trim() !== "");
// 转换为 YAML 列表格式字符串 let tagString = ""; if (tags.length > 0) { tagString = tags.map(t => ` - ${t}`).join("\n"); }
QuickAdd.variables["articleTitle"] = title; QuickAdd.variables["articleCategory"] = category; QuickAdd.variables["articleTags"] = tagString; // 直接传入格式化好的字符串 QuickAdd.variables["articleDescription"] = description || ""; // 如果为空则填空字符串 QuickAdd.variables["articleImage"] = image || ""; // 如果为空则填空字符串 QuickAdd.variables["articleTimestamp"] = QuickAdd.quickAddApi.date.now('YYYY-MM-DD');
};NOTE模板代码
---title: "{{VALUE:articleTitle}}"published: {{VALUE:articleTimestamp}}category: {{VALUE:articleCategory}}tags:{{VALUE:articleTags}}description: "{{VALUE:articleDescription}}"draft: falseimage: "{{VALUE:articleImage}}"---TIP最后设置快捷键,就可以很方便的实现快速写博客
快速写备忘录也是同样的逻辑,只是js逻辑不一样而已。
module.exports = async (params) => { const input = await params.quickAddApi.inputPrompt("我的碎碎念"); if (!input) return;
const now = new Date();
const dayNames = [ "周日", "周一", "周二", "周三", "周四", "周五", "周六" ];
const fileName = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}_${dayNames[now.getDay()]}`;
const filePath = `2026-Daily/${fileName}.md`;
const time = `${String(now.getHours()).padStart(2, "0")}:${String(now.getMinutes()).padStart(2, "0")}`;
const trimmed = input.trim();
let finalContent;
// Todo if (/^(todo|task|t)\s+/i.test(trimmed)) { const text = trimmed.replace(/^(todo|task|t)\s+/i, ""); finalContent = `- [ ] ${text} @${time}`; }
// Done else if (/^(done|d)\s+/i.test(trimmed)) { const text = trimmed.replace(/^(done|d)\s+/i, ""); finalContent = `- [x] ${text} @${time}`; }
// Idea else if (/^(idea|i)\s+/i.test(trimmed)) { const text = trimmed.replace(/^(idea|i)\s+/i, ""); finalContent = `💡 ${text} @${time}`; }
// Quote else if (/^(quote|q)\s+/i.test(trimmed)) { const text = trimmed.replace(/^(quote|q)\s+/i, ""); finalContent = `> ${text} @${time}`; }
// Note else if (/^(note|n)\s+/i.test(trimmed)) { const text = trimmed.replace(/^(note|n)\s+/i, ""); finalContent = `📝 ${text} @${time}`; }
// 原生 Markdown else if ( trimmed.startsWith("- ") || trimmed.startsWith("* ") || trimmed.startsWith("> ") || trimmed.startsWith("#") ) { finalContent = `${trimmed} @${time}`; }
// 普通文本 else { finalContent = `${trimmed} @${time}`; }
let file = params.app.vault.getAbstractFileByPath(filePath);
// 文件不存在则创建 if (!file) { // 【优化点】新建时直接写入内容,不再单独写入 # ${fileName} 标题 const content = `${finalContent}\n`;
file = await params.app.vault.create( filePath, content );
} else {
const content = await params.app.vault.read(file);
// 【优化点】兼容老文件。如果老文件里有手动写的 # 标题,将其找出并保持在最上方 const titleMatch = content.match(/^# .+$/m);
if (!titleMatch) { // 如果文件里没有 # 标题(新逻辑创建的文件),直接把新内容置顶追加 await params.app.vault.modify( file, `${finalContent}\n${content}` ); } else { // 如果是包含旧标题的老文件,依然把内容插在老标题下方 const title = titleMatch[0]; const body = content.replace(title, "").trim();
const newContent =`${title}
${finalContent}${body ? "\n" + body : ""}`;
await params.app.vault.modify( file, newContent ); } }
new Notice("✅ 已记录");};TIP
- t空格加文本对应todo事项
- d空格加文对应done事项
- i空格加文本对应idea事项
- n空格加文本对应note事项
- 普通直接输入文字就是普通事项
效果如下

TIP在模板那里可以打开open设置,这样新建文档后会立刻打开这个文档,进入编辑状态,十分方便
Obsidian 宏|一键快速新建博客与备忘笔记
https://199105.xyz/posts/obsidian-宏一键快速新建博客与备忘笔记/ 
