708 字
4 分钟
如何将 flomo 笔记导入到 Obsidian
视频教程: https://www.bilibili.com/video/BV1exqzBbE8U/
导入
说明
- 支持图片
- 支持 flomo 的特殊格式:加粗、列表、下划线等
- 注意:不支持引用
操作步骤
- 安装 BeautifulSoup4 依赖库
pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple-
将
flomo_to_md.py文件复制到解压后的文件夹中 -
在解压后的文件夹中执行脚本
python flomo_to_md.py删除笔记
// flomo自动删除无图片卡片脚本 - 优化版(每10次后重新获取网页信息)// 该脚本会循环查找每个卡片,判断是否包含图片,如果没有则删除该卡片
let scanCount = 0;const maxScansBeforeRefresh = 15;
function deleteMemosWithoutImages() { console.log(`开始第 ${scanCount + 1} 次扫描...`);
// 查找memo卡片 const memoCards = document.querySelectorAll('div[data-slug].memo, div[data-v-1abaecf2][data-slug]');
console.log(`找到 ${memoCards.length} 个卡片`);
if (memoCards.length === 0) { console.log('未找到卡片,停止处理'); return; }
let processedThisScan = 0;
// 遍历每个卡片 for (let i = 0; i < memoCards.length; i++) { const card = memoCards[i];
console.log(`卡片 ${i + 1} 没有图片,准备删除...`);
// 查找并点击卡片内的菜单按钮 const menuTrigger = card.querySelector('[data-v-1abaecf2] .menu-trigger-content') || card.querySelector('.menu-trigger-content') || card.querySelector('svg.lucide-icon.lucide.lucide-ellipsis');
if (menuTrigger) { const triggerElement = menuTrigger.closest('.menu-trigger-content') || menuTrigger; triggerElement.click();
// 等待0.5秒让菜单展开 setTimeout(() => { // 查找删除按钮并点击 const deleteButton = findDeleteButton(); if (deleteButton) { deleteButton.click(); console.log('点击了删除按钮'); } else { console.log('未找到删除按钮'); } }, 100); } else { console.log('未找到菜单按钮'); }
processedThisScan++; // 每次只处理一个卡片,然后等待页面更新 break; }
if (processedThisScan === 0) { console.log('当前页面没有找到需要删除的卡片'); return; }
scanCount++;
// 检查是否达到重新获取网页信息的次数 if (scanCount >= maxScansBeforeRefresh) { console.log(`已达到 ${maxScansBeforeRefresh} 次扫描,重置计数器并继续...`); scanCount = 0; // 重置计数器 }
// 设置定时器,等待页面更新后继续处理 setTimeout(() => { deleteMemosWithoutImages(); }, 2000); // 等待2秒后继续}
// 查找删除按钮的函数function findDeleteButton() { // 尝试多种可能的选择器 let deleteButton = document.querySelector('[data-v-6226e620] .menu-item.danger.submenu-persistent .menu-item-content');
if (!deleteButton) { // 查找文本为"删除"的菜单项 const allMenuItems = document.querySelectorAll('.menu-item-content'); for (let item of allMenuItems) { if (item.textContent && item.textContent.trim() === '删除') { deleteButton = item; break; } } }
if (!deleteButton) { // 查找包含"删除"文本的按钮 const dangerItems = document.querySelectorAll('.menu-item.danger'); for (let item of dangerItems) { if (item.textContent && item.textContent.includes('删除')) { deleteButton = item.querySelector('.menu-item-content') || item; break; } } }
return deleteButton;}
// 查找确认按钮的函数function findConfirmButton() { // 尝试多种可能的选择器 let confirmButton = document.querySelector('.el-message-box__btns .el-button--primary');
if (!confirmButton) { // 查找文本包含"确定"或"确认"的按钮 const allButtons = document.querySelectorAll('button, .el-button'); for (let btn of allButtons) { const text = btn.textContent ? btn.textContent.trim() : ''; if ((text === '确定' || text === '确认' || text === '是') && (btn.classList.contains('el-button--primary') || btn.classList.contains('el-button--danger') || btn.type === 'button' || btn.type === 'submit')) { confirmButton = btn; break; } } }
if (!confirmButton) { // 最后的备选方案:查找主要操作按钮 confirmButton = document.querySelector('.el-button--primary, button[type="submit"], .confirm-button'); }
return confirmButton;}
// 启动函数deleteMemosWithoutImages(); 如何将 flomo 笔记导入到 Obsidian
https://cloudsir.top/posts/flomo-2-obsidian/