Kenshin / simpread

简悦 ( SimpRead ) - 让你瞬间进入沉浸式阅读的扩展
http://ksria.com/simpread
GNU General Public License v3.0
7.92k stars 530 forks source link

关于使用同步脚本Obsidian下的简悦Annotation文档到Vika多维表格,对应Tags等的Property会被覆盖的问题 #6530

Open mdsnalw opened 3 weeks ago

mdsnalw commented 3 weeks ago

描述这个错误

当前使用了Bilibili Up Johnny学老师开发的一个Obsidian同步MD文档到Vika多维表的一个脚本. 在工作机上,脚本运行正常。 举例:

  1. 在浏览器打开一个微信公众号文章,并做标注,添加TAG. 导入到obsidian.
  2. 在obsidian下通过Templater运行同步脚本
  3. MD文档会同步到对应设置好的Vika多维表格下. 方便多端同步和以数据库的方式进行管理

复现步骤

工作机部分:

  1. 在工作电脑上测试阅读公众号文章,运行DD添加稍后读到Obsidian. 1.1 image
  2. 在Obsidian下通过Quicker启用快捷键运行同步脚本. 2.1 image
  3. 同步文档到Vika

家用机部分:

  1. 在Vika新建另一个多维表格,并配置好不同属性的表格选项: 1.1 效果如下:image
  2. 复制Vika同步脚本到Obsidian库,并更改Vika同步脚本的Table ID部分.
  3. 打开随机公众号进行阅读,批注,添加TAG
  4. 使用Quicker快捷键运行同步脚本.
  5. 运行脚本后,FrontMatter(Property)部分的TAG部分会被移除掉,导致无法查看TAG信息
    • image
  6. 再运行脚本后,会出现Vika下新添加记录的情况,因为(TAG)不一致,导致脚本会判断是新添加的记录. 会创建新的Record.
    • image

做过的问题检查:

  1. 对比工作机和家用机的VIka JS脚本,确保除了TableID意外,其他信息都一致
  2. 对比Obsidian-SimpRead插件,确定稍后读和Annotation模板都一致
  3. 检查Edge-SimpRead插件,增强导入模板,都是按照能正常导入的模板格式进行粘贴.

其他相关说明

No response

操作系统

Windows 11

浏览器

Edge

发生问题的网址

https://mp.weixin.qq.com/s/MXb__WgL3S2t8ErByZSrXQ

Kenshin commented 3 weeks ago

有意思的流程 👍

总结下你的问题

内容太多了(不过流程写的很清晰 👍👍)我总结下:

工作机这套方案没问题,但家用机会导致简悦产生的标注文件 e.g. 1234-xxx@annote.md 中的 Matedata 被修改?

如果是这个意思的的话,我理解: VIka JS 脚本会修改 1234-xxx@annote.md 这个文件的 Matedata 只是工作机没问题,而家用机被修改的 Matedata 就有问题?

如果也是这个意思的话:这个问题应该跟简悦无关 😂

一些自查建议

  1. 工作机与家用机的 Obsidian 版本是否一致?
  2. VIka JS 脚本的版本是否一致?以及运行它的 Obsidian 插件版本是否一致?
  3. 工作机与家用机的系统是否一致?甚至于这套流程的相关路径是否一致?

先确保工作机与家用机 100% 保持一致性,然后看下简悦的导入到 Obsidian 插件中 Matedata 设置是否一致?

随便找个网页 e.g https://sspai.com/post/69972 然后在下图所示的地方查看。

image image
mdsnalw commented 3 weeks ago

大佬,晚上好~ 我初步判断,可以是这么理解的,但我不确定是具体脚本方面的问题,还是SimpRead上哪部分设置有问题,我按照你反馈的,做了以下排查,还请帮忙参考,谢谢~

总结下你的问题

内容太多了(不过流程写的很清晰 👍👍)我总结下:

工作机这套方案没问题,但家用机会导致简悦产生的标注文件 e.g. 1234-xxx@annote.md 中的 Matedata 被修改?

一些自查建议 工作机与家用机的 Obsidian 版本是否一致?

  • 工作电脑Obsidian版本:
  • Current Version: v1.5.12
  • Installer Version: v1.5.1.2

VIka JS 脚本的版本是否一致?以及运行它的 Obsidian 插件版本是否一致?

  • Vika JS 脚本文件是一致的. 对应的Obsidian下的“lOTO Framework Settings”框架插件也是一致的(其实,脱离框架,脚本也能单独运行),IOTO只是提供一个基于Templater的一个做的笔记知识管理的架构优化(Input,Output,Task,Outcome)
  • image

工作机与家用机的系统是否一致?甚至于这套流程的相关路径是否一致?

  • 都是Windows11,一个是WIndows11 企业版22H2, 一个是Windows11 专业版 23H2

先确保工作机与家用机 100% 保持一致性,然后看下简悦的导入到 Obsidian 插件中 Matedata 设置是否一致?

先后两次同步Vika的结果:

  1. 第一次只添加稍后读,自动Create了Annotation文件,并运行了同步脚本,TAGs属性被删除,其他属性前后顺序被调整.
  2. 第二次添加了TAGs,但是不是覆盖原Vika Table记录,而是创建新的Table Record. 按正常逻辑是,不应该创建新纪录,而是更新同样RID的文件,比如添加TAG,contents等.

image

Kenshin commented 3 weeks ago

总之,就是你的问题就是:同一套方案,在 A 电脑可以正常使用;但 B 电脑有问题。


第一次只添加稍后读,自动Create了Annotation文件,并运行了同步脚本,TAGs属性被删除,其他属性前后顺序被调整.

假设你提到的 TAGs属性被删除,其他属性前后顺序被调整. 指的就是简悦生成的标注 Markdown 那就说明 Vika 这个脚本一定会(按照它自己的规则)修改 Matedata

但我看截图似乎只是在 Matedata 添加了新的内容

第二次添加了TAGs,但是不是覆盖原Vika Table记录,而是创建新的Table Record. 按正常逻辑是,不应该创建新纪录,而是更新同样RID的文件,比如添加TAG,contents等.

第二次添加了TAGs 是在什么地方添加的?简悦中?还是?


我感觉 Vika 脚本肯定会修改 Matedata 但应该只是添加,所以看下正确此电脑中 Matedata 的结构,不要仅看内容,包括是否有空格,使用 ctrl + a 的方式。

image

在正常的电脑上,Vika 脚本(也就是这套流程)是如何工作的?跟上面一样,方便的话,请分步说明下。

mdsnalw commented 3 weeks ago

晚上好大佬,感谢你的深入分析,让人感觉如沐春风😁 晚上我也做了一些排查:

第二次添加了TAGs 是在什么地方添加的?简悦中?还是?

  • 在网页上对应的阅读文章,在启用SimpRead插件并运行同步软件下,在右上角的文档信息出,添加了Tags信息:
  • 8938fe4768dec91724c12163bdba137
  • 961e192aba878a9aaa5da9f4669cefb

我感觉 Vika 脚本肯定会修改 Matedata 但应该只是添加,所以看下正确此电脑中 Matedata 的结构,不要仅看内容,包括是否有空格,使用 ctrl + a 的方式。

  • 我在个人电脑上,检查了下导入到Obsidian选项,使用Ctrl+ 进行了全选,确认了没有多余的空格等符号.

在正常的电脑上,Vika 脚本(也就是这套流程)是如何工作的?跟上面一样,方便的话,请分步说明下。

Kenshin commented 3 weeks ago

我不需要这个脚本 😂

抱歉,可能我问的太细了导致可能仍没太完全「理解」。

我的疑问在于:A 设备好使,B 设备不好使,并且这个脚本会修改 Matedata 所以问题肯定出在 Matedata 的设置上,但你却说 Matedata 一样...

有个地方需要提示下:

简悦 → 标注 → 自动生成 1234-xxxx@annote.md 文件,这个方式是单向的,也就是说:如果你修改了 1234-xxxx@annote.md 的内容(比如:你调整了 Matedata 顺序),然后又在网页中继续标注(比如修改标注色),标注后会自动更新 1234-xxxx@annote.md ,而这个文件的 Matedata 是修改前的。

不知道是否是这个问题(理论上不是... 😂

所以,还有个方式:请录屏你的操作(方便的话,录制一次正常电脑的操作;再录制一次错误电脑的操作)

mdsnalw commented 3 weeks ago

我不需要这个脚本 😂

抱歉,可能我问的太细了导致可能仍没太完全「理解」。

我的疑问在于:A 设备好使,B 设备不好使,并且这个脚本会修改 Matedata 所以问题肯定出在 Matedata 的设置上,但你却说 Matedata 一样...

有个地方需要提示下:

简悦 → 标注 → 自动生成 1234-xxxx@annote.md 文件,这个方式是单向的,也就是说:如果你修改了 1234-xxxx@annote.md 的内容(比如:你调整了 Matedata 顺序),然后又在网页中继续标注(比如修改标注色),标注后会自动更新 1234-xxxx@annote.md ,而这个文件的 Matedata 是修改前的。

不知道是否是这个问题(理论上不是... 😂

所以,还有个方式:请录屏你的操作(方便的话,录制一次正常电脑的操作;再录制一次错误电脑的操作)

大概明白你的意思😁,我晚点再做个录屏👌

mdsnalw commented 3 weeks ago

简悦 → 标注 → 自动生成 1234-xxxx@annote.md 文件,这个方式是单向的,也就是说:如果你修改了 1234-xxxx@annote.md 的> 内容(比如:你调整了 Matedata 顺序),然后又在网页中继续标注(比如修改标注色),标注后会自动更新 1234-xxxx@annote.md ,而这个文件的 Matedata 是修改前的。

  • 确实是单向的,这个我感受比较深,比如我在网页端添加了标注,然后在Obsidian端添加记录,比如添加AI总结的摘要。之后有在Web端添加TAG信息等。这种情况AI摘要信息会被覆盖。
  • 所以我通常在运行脚本时,就已经确认我不再通过web端做标注了,这样才会把完整的记录(标注+AI摘要总结等)一并上传
mdsnalw commented 3 weeks ago

我在使用正常的A(工作)电脑上检查了下“导入到Obsidian选项”设置,使用Ctrl+A进行全选,确认metadata是正常的. 还有其他地方可以检查Metadata设置吗?

image

mdsnalw commented 3 weeks ago

在正常的电脑上,Vika 脚本(也就是这套流程)是如何工作的?跟上面一样,方便的话,请分步说明下。

Kenshin commented 3 weeks ago

emmm

奇怪,我回你的一条 Issue 没有了…(可能是网络问题导致没发出去)

因为有截图,明天再回一次 😂

Kenshin commented 3 weeks ago

好的,我明天确认下。

mdsnalw commented 3 weeks ago

好的,谢谢哈~ 两电脑分别录屏后,发现视频文件太大了(单个180M左右)然后Github上限是10M。后来上B站又做了下功课,发现FF转码效果最好,但格式工厂最简单。又折腾了下,压缩效果喜人,就是分辨率只能凑合看😂

Kenshin commented 3 weeks ago

好的,谢谢哈~ 两电脑分别录屏后,发现视频文件太大了(单个180M左右)然后Github上限是10M。后来上B站又做了下功课,发现FF转码效果最好,但格式工厂最简单。又折腾了下,压缩效果喜人,就是分辨率只能凑合看😂

可能你录屏的工具太好了,我一般录制都没啥问题( 10m 以内)😂

确实看不太清楚 看的我眼睛都快瞎了 😱 (不过算是看明白了...

不过,你的动手(以及解决问题)能力不错 👍


我看到的现象

正常的电脑

当你使用这个脚本后,我能看到 Matedata 的内容(也就是每个条目的顺序)被改动了。(你可以留意下每个 Matedata 的条目顺序)

错误的电脑

当使用这个脚本后,跟正常的电脑一样(Matedata的顺序被改变了),但 tags 字段丢失,也就是这个脚本的算法(改变 Matedata 算法的部分把 tags 弄丢了

所以,理论上是这个脚本(算法)的问题 😂

不过,其实也可以规避。

一个简单的测试

正常的电脑(或者就以你的视频为例)中这个文件叫做假设叫做 a.md 它是一个文本文件,你把它的代码贴上来。 注意包括:运行脚本前和运行脚本后(一定要存在 tags 字段)

同样,你把错误的电脑也按照上面的顺序把它贴上来。(假设叫 b.md

猜测

如果我猜的没错的话, a.mdb.md (运行脚本前)应该不一样。

继续测试

你把 a.md 放到错误的电脑中,然后运行这个脚本,看看是什么现象?


https://github.com/Kenshin/simpread/issues/6530#issuecomment-2152705033

这是我昨天发的一段内容,除了看我之前提到的 Matadata 以外,也要看下 Markdown 模板辅助增强插件

image

打开后,同样使用 crtl + a 看下这两台电脑中的区别?(与查看 Matedata 方法一致)

mdsnalw commented 3 weeks ago

可能你录屏的工具太好了,我一般录制都没啥问题( 10m 以内)😂

其实就是Windows系统自带的截图工具,在Windows 11里面除了截图工具还有录屏功能。因为比较临时,所以也没找到其他比较方便的工具(主要是公司电脑,需要Admin权限才能安装提三方软件😂)

确实看不太清楚 看的我眼睛都快瞎了 😱 (不过算是看明白了...

抱歉,我是通过格式工厂再做了一次压缩,因为只能到10m以内,我昨天在电脑上看,还是能看清楚内容的,可能到Github,又做了一次压缩?😂

辛苦了大佬👍,等我下班后再去对比测试下你提供的方案

Kenshin commented 3 weeks ago

没事~

留意下:

无论在哪台设备,都使用:

  1. 同样的 URL e.g. https://sspai.com/post/69972
  2. 标注相同的内容(尽量最简单处理,甚至不标注,直接加稍后读更好)

测试不同设备时一定要确保测试条件是相同的,这样才能发现问题。

mdsnalw commented 3 weeks ago

猜测

如果我猜的没错的话, a.mdb.md (运行脚本前)应该不一样。

情境②: 内容:B文档本地运行的前后对比 发现:Aliases 和 Tags部分丢失,增加了同步生成的Vika RecordID 和 Vika URL 截图316b07fce88fb38e8d0f7741d38dd87

情境③: 内容:A文档在B电脑,前后运行对比: 发现:MetaData前后运行结果无变化, 不会创建Vika RecordID 和VikaURL 截图72286ef5ffc75c1ea41a6a01f029f72

A文档→ A电脑→ 慢慢变好,是对自己的褒奖@annote → 运行脚本前.md A文档→ A电脑→ 慢慢变好,是对自己的褒奖@annote → 运行脚本后.md A文档复制到B电脑→ 慢慢变好,是对自己的褒奖@annote → 运行脚本前.md A文档复制到B电脑→ 慢慢变好,是对自己的褒奖@annote → 运行脚本后.md B文档→ 夜读|慢慢变好,是对自己的褒奖@annote → 运行脚本前.md B文档→ 夜读|慢慢变好,是对自己的褒奖@annote → 运行脚本后.md

mdsnalw commented 3 weeks ago

05ea062fe5f220d87b9fb36a8e8c226 77c114bd45d9f33d0e78aee894607b7

Kenshin commented 3 weeks ago

解决就好。😄

还是由于Markdown模板辅助增强选项导致的格式冲突。

具体是哪里缺失了?

这可能和Vika脚本无关,应该是复制出错的原因导致的😂

其实也有关系,主要是这个脚本的容错性不太好(如果脚本对 Matedata 的结构有明确说明除外)。

我也更清楚了metadata同步原理和SimpRead增强选项的配置问题,也

任意一次折腾都是有意义的,为了以后不再折腾。

为了这个问题走了这么多弯路,也让大佬费心

小事情,我 「墙」烈 建议你把这套流行详细的以文章(教程类)的形式写出来,然后发到 https://github.com/Kenshin/simpread/discussions/new/choose 里面,简悦这边积累了很多类似的工作流方案,汇总在 https://github.com/Kenshin/simpread/discussions/2085

mdsnalw commented 3 weeks ago

具体是哪里缺失了?

这可能和Vika脚本无关,应该是复制出错的原因导致的😂

我之前是直接把Obsidian→SimpRead-Sync插件的模板直接复制到浏览器端的。

按我理解,标注大概率是用浏览器端的设置,不会再用到Obsidian-SimpRead插件端的模板设置了?

image image

mdsnalw commented 3 weeks ago

小事情,我 「墙」烈 建议你把这套流行详细的以文章(教程类)的形式写出来,然后发到 https://github.com/Kenshin/simpread/discussions/new/choose 里面,简悦这边积累了很多类似的工作流方案,汇总在 #2085

好的,有时间我就简单整理一个,希望也能帮助其他志同道合的朋友少走弯路~

Kenshin commented 3 weeks ago

我之前是直接把Obsidian→SimpRead-Sync插件的模板直接复制到浏览器端的。 按我理解,标注大概率是用浏览器端的设置,不会再用到Obsidian-SimpRead插件端的模板设置了?

Obsidian SimpRead Sync 里面的模板是让用户可以在 Obsidian 标注(集成了简悦的标注模式),所以确保跟 Markdown 模板辅助增强插件保持一致。

Kenshin commented 2 weeks ago

我在蹲你的教程呢 😂

mdsnalw commented 1 week ago

我在蹲你的教程 😂

这不就来了嘛,前阵子一直想要注册个新的Google账号,无奈卡在手机号验证上,尝试了SMS-Activate的方式,发现验证码下不来。今天又试了Gmail端和Google Play端的新账户注册方法,发现始终连不上Google服务器。后来发现直接在电脑网页端Google主页下发起新账号注册还更简便,都不用手机验证🤣。分享经验的帖子,容我再构思下,有点拖延症😁

Kenshin commented 1 week ago

哈哈,其实网页注册最简单 😂 (别问我是怎么知道的,正如同你知道这个事情一样曲折 💔

好,教程的事情别忘记就 OK 😏 (同是拖延症墙裂理解ing

mdsnalw commented 3 days ago

哈哈,其实网页注册最简单 😂 (别问我是怎么知道的,正如同你知道这个事情一样曲折 💔

好,教程的事情别忘记就 OK 😏 (同是拖延症墙裂理解ing

Kenshin commented 3 days ago

👍👍👍👍👍👍

我帮你稍微改了下文章的结构,但除此之外似乎少了一些内容,有时间的话,请补充下:

  1. JS 脚本如何获取?(如果不是免费的话,请告知获取方式即可。)

  2. 简悦 → Obsidian 使用了哪种方案?(不出意外的话,应该是 Obsidian 高级版方案,我已经帮你补上了)

  3. 演示效果这块,如果方便的话,可以录屏发上来,包括:在网页端加入稍后读,然后会出现在 Obsidian,然后会出现在 Vika 里面,即可。(你可以多录制一些内容,我帮你精简下,这样节省你的录制时间和成本。

  4. 下图你提到的批量管理,我不太理解,具体是指什么批量管理?也可以稍微展开说下

    image

    我举个例子:在 Vika 里面删除某条内容,不能同步回 Obsidian 吧?😂

  5. 再请教一个地方:通过这种方式在 Vika 里面可以查看「全文」(我想应该不能吧)?此方式仅仅把 Vika 用作检索?再继续引申下:滴答清单可以查看全文,感觉跟 Vika 的思路差不多,简悦有 导入到滴答清单 的查看。

mdsnalw commented 3 days ago
  1. JS 脚本如何获取?(如果不是免费的话,请告知获取方式即可。)
    • 好的,主要不想展开太多,怕有引流的嫌疑。😂 JS脚本包含在他的IOTO Obsidian知识库付费会员框架里面的,可以单独购买,也可以加入年会会员,有其他增值服务。

2. 简悦 → Obsidian 使用了哪种方案?(不出意外的话,应该是 Obsidian 高级版方案,我已经帮你补上了)

  • 感谢大佬补充,不出意外的话,也不会出现意外,就是高级版了~

3. 演示效果这块,如果方便的话,可以录屏发上来,包括:在网页端加入稍后读,然后会出现在 Obsidian,然后会出现在 Vika 里面,即可。(你可以多录制一些内容,我帮你精简下,这样节省你的录制时间和成本。

  • 可以,这个得空再补充下.

4. 下图你提到的批量管理,我不太理解,具体是指什么批量管理?也可以稍微展开说下

  • 批量管理,在我的个人理解是:批量更改TAG,格式化标题等(比如把复制到第三方工具进行批量替换),我不确定删除的记录,是否会一并移除。Fetch的功能还没完整应用到:
  • 以下是obsidian下的同步功能:
  • image

Kenshin commented 3 days ago

👍

脚本相关

确实,你考虑的很周全 👍

image

这么看起来的话,似乎双向更新?

  1. 【6】【7】【8】 → 将 Vika 的内容更新会 Obsidian?(应该是这个意思吧?

  2. 【1】 → 同步笔记到 Vika ?「笔记」具体是什么?仅同步标题、Tags 这些?还是包含正文(标注)?

mdsnalw commented 3 days ago
  1. 【6】【7】【8】 → 将 Vika 的内容更新会 Obsidian?(应该是这个意思吧?
    • 是的,这个脚本是可以支持双向更新的。打个比方:在Vika上,更新了标题\Tags\aliases之后,运行【6】,可以将Vika上的对应文档的变更,直接覆盖到本地对应Obsidian文档上.
    • 【7】& 【8】的功能,范围就更大了,可以覆盖变更到对应文件夹 或对应文件夹&子文件夹。所以一般针对【7】& 【8】的变更要比较慎重

2. 【1】 → 同步笔记到 Vika ?「笔记」具体是什么?仅同步标题、Tags 这些?还是包含正文(标注)?

  • 目前已有的字段:
  • image
  • 这些其实都可以自定义的,按我的理解,能同步的内容,取决于Vika上面显示的哪些字段,以及字段的属性与JS同步脚本是否一一匹配。不匹配的话,在Obsidian就会直接报错,这种情况就需要通过Obsidian的控制台去Debug. 脚本上,其实支持了自定义字段的功能,不过目前阶段,已有的字段对我来说已经够用。
Kenshin commented 3 days ago

okay 这个脚本有点意思(东西) 👍

image

能否截图看下这两个字段的内容?(其实就是对是否可以保存全文比较好奇)