708 字
4 分钟
如何将 flomo 笔记导入到 Obsidian
2025-12-20
2026-01-10
无标签

视频教程: https://www.bilibili.com/video/BV1exqzBbE8U/

导入#

说明#

  • 支持图片
  • 支持 flomo 的特殊格式:加粗、列表、下划线等
  • 注意:不支持引用

操作步骤#

  1. 安装 BeautifulSoup4 依赖库
pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 下载导入脚本 (Python)

  2. flomo_to_md.py 文件复制到解压后的文件夹中

  3. 在解压后的文件夹中执行脚本

Terminal window
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/
作者
CloudSir
发布于
2025-12-20
许可协议
CC BY-NC-SA 4.0