Kenshin / simpread

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

关于 Anki 的需求 #6724

Open f1ooow opened 1 month ago

f1ooow commented 1 month ago

请描述你的建议或任何内容

通览了一遍设置页面发现没有相关的功能,想来确认一下。

所谓标识复制模板的自定义指的是,可以定义阅读时每条标识写入剪贴板的内容。比如我因为配合Quicker动作制作ANKI的需要:

{{划线内容}} 
{{文章标题}}
{{文章链接}} 
{{划线笔记}}

补充说明

配合QUICKER快速制作ANKI卡片,应该是个小众需求XD,所以只是询问不是建议。

Kenshin commented 1 month ago

任何小众需求可能都不一定是小众需求 😂 但凡能在 Github Issues 提问(或需求)的用户,尤其是需求,我都会单独记录。


先说第一个问题

我没太理解你的问题,你是说标注后在工具栏

image

复制的位置,点复制后,类似将标注以

{{划线内容}} 
{{文章标题}}
{{文章链接}} 
{{划线笔记}}

的形式复制到剪切板?

如果是的话,这个功能是可以的,但最好举个例子。

问题 2

因为简悦的 Github Issues 搜索量很大,所以我不想给任何其它产品做「广告」,故删除了,但可以回复下

这个不是简悦的事情,你需要让对方来适配。但我不建议这么做,因为简悦有自己的一套完整的本地标注方案,目前还没有任何比这个更好用的。

如果你觉得简悦的标注有什么可以改进的,非常欢迎讨论。

f1ooow commented 1 month ago

感谢回复。

关于第一个问题,是的。需求就如你说的这样:在划线后点击复制,按自定义的格式把需要的相关内容(划线内容;标题;链接;笔记)写入剪贴板。对我来说这一功能的使用场景是:

打开文章后进入阅读模式,在浏览的过程中划线圈点,将认为有回看价值的划线内容以上述格式写入剪贴板,通过QUICKER动作读取剪贴板中的内容(如下图),写入ANKI文件,待批量导入后作为剪藏回顾。

image

关于第二个问题,非常理解。我在标注划线上会选择提到的第二款工具的原因主要也是因为它支持自定义的标注复制模板,如果简悦能做到的话那当然更好。

Kenshin commented 1 month ago

(划线内容;标题;链接;笔记)

这些都没问题,你可以给我一个具体格式(之前你写了一个格式,但可能 Markdown 结构有问题,所以我改了下,可能改的不对 😂

我需要你给我格式的原因是:需要测试下是否 100% 支持~

唯一的问题是:这个插件没有发布呢,但我可以考虑给你单独先玩玩,先满足你的需求我再告诉你如何使用这个(未发布)的插件

f1ooow commented 1 month ago

那样的话真的太好了,格式其实很灵活,只要能获取到这些变量就好了。如果要一个具体的话可以参照下面这个格式:

{划线内容}${标题}${链接}${笔记}

即不同变量用同一个符号隔开,实际操作中这个符号不一定要用 $ ,可以是任意符号包括换行符(/n)

我这里的花括号是乱用的,希望不会对你产生困扰XD,实际写入剪贴板的结果参考如下:

去久经考验的成熟领域寻找工具,或许可以作为最朴素而有用的工具选择纲领。$踏破铁鞋无觅处:如何寻找工具及领域原则 | #UNTAG$xxxxx$这是一段测试文本

Kenshin commented 1 month ago

大概这样

{{{html_format|<p>|{{an_html}}}}}${{url}}${{an_note}}

得到下面的效果

高德地图的月活,一度已经超过了抖音。$https://36kr.com/p/2967071635722242$

注意:因为测试这条标注时没有备注,所以在结尾出现了 $ 不知道对你后续操作有什么影响?如果有影响的话,我可以再改进,目前这是个最简单的结构。

f1ooow commented 1 month ago

结尾的 $ 不会有影响,我在编写QUICKER动作的时候考虑到了这个问题。

不过这个格式的内容看起来是 划线+链接+备注,我希望能是划线+文章标题+链接+备注。除此外完全满足我的需求XD

Kenshin commented 1 month ago

这些都是 https://github.com/Kenshin/simpread/discussions/3725 语法。

我希望能是 划线+文章标题+链接+备注

我只是单纯的忘记了... 这个是正确的

{{{html_format|<p>|{{an_html}}}}}${{title}}${{url}}${{an_note}}

效果如下:

高德地图的月活,一度已经超过了抖音。$月活能有 8 个亿,高德本事这么大了?-36 氪$https://36kr.com/p/2967071635722242$
Kenshin commented 1 month ago
{{{html_format|<p>|{{an_html}}}}}${{title}}${{url}}<% if ( annote.note ) { %>"${{an_note}}",<% } %>

当备注没有时,不会显示 $


我稍晚(或者明天给你这个未发布的插件)

f1ooow commented 1 month ago

好的,非常感谢

Kenshin commented 1 month ago

嗨,插件地址 https://simpread.ksria.cn/plugins/details/MIot7sLc2d

另外也需要同时安装 https://simpread.ksria.cn/plugins/details/HD9GmoatXd 这个插件。(仅安装无需任何设置)

如果没有使用同步助手的话,可直接通过链接安装;反之,请使用 https://www.yuque.com/kenshin/simpread/fcw60u

然后将 https://github.com/Kenshin/simpread/issues/6724#issuecomment-2378425253 复制粘贴到

image

在具有简悦标注的页面就可以使用了。

有任何使用疑问随时在这里讨论。


留意:这个插件只是临时给你,仅你自己使用即可,等正式发布后(我会在这里通知你),请删除此插件。

f1ooow commented 1 month ago

好的,非常感谢!

Kenshin commented 1 month ago

如果没问题的话,别忘记告诉我~

f1ooow commented 1 month ago

Hello,我尝试了下,没有成功。

在“单条标注定制”界面设置完毕后点击“测试”按钮是没问题的,测试文本顺利地按拟定的格式写入了我的剪贴板。但当我回到阅读模式时,点击划线浮动工具栏上的复制按钮还是只能写入原本划线内容。

我检查确认了相关设置有被保存,也尝试了刷新页面、重启浏览器,但都只能在点击“测试”按钮时实现,在阅读模式不行。

Kenshin commented 1 month ago

明天确认下,估计给你的版本可能有点问题。(你的版本是这个新功能的部分内容)

f1ooow commented 1 month ago

好的,辛苦

Kenshin commented 1 month ago

这个功能没问题, 可能是下图的问题造成的

image

PS:保存后刷新页面再确认下是否保存成功。

f1ooow commented 1 month ago

成功了!真的太棒了👍👍👍

Kenshin commented 1 month ago

😂 👍

f1ooow commented 1 month ago

哈哈哈哈,没问题!

Kenshin commented 1 month ago

其实简悦这边特别需要使用 Anki 的用户 😂

因为我关注这块的需求很久了,但我不是 Anki 的用户,希望可以让简悦和 Anki 联动的用户挺多的,但大部分用户没法表述清楚需求,所以导致一直没有一整套与之相关的方案。

所以,方便的话,可以多提提关于 Anki 相关的需求,说不定可以挖掘出更方便的方案~

f1ooow commented 1 month ago

当然可以,不过我的需求已经完美解决了,虽然不是完全用简悦实现的,但我可以简单说一下我的方案。我想其他Anki用户希望和简悦联动的使用场景应该和我差不多:通过剪藏工具,将划线内容剪藏至Anki。

Clip_2024-09-28_15-52-58

我不太确定简悦在这个过程中能做到什么程度,我当前方案的核心是:ANKI支持使用TXT文件按照一定的格式快捷批量导入。将划线内容写入本地文件,这在我看来显然是比直接写入到另一个软件要简单的多的,只需要按需定期把TXT文件导入ANKI就好了。

注意:ANKI的TXT批量导入可以理解为,将一个TXT文件的每一段视作一张卡片的内容来进行写入。一个网页有多个划线,我希望每条划线单独制卡,所以我才有每个划线复制都要有标题、链接、评论等信息的需求。

Clip_2024-09-28_15-57-19

如上所述的这个流程,我想可能是简悦可以做到的:划线-->按照格式生成卡片内容-->将内容写入一个TXT文件中。至少简悦现在已经可以实现前两步了。(除了这句话以外其他内容可能都是废话,所以我标注一下)

至于目前,为了做到顺利、方便、快捷地把划线内容写入ANKI,在网页剪藏这一块我现在是这么做的,可作为使用场景的一个参考:

  1. 网页阅读,通过剪藏软件划线
  2. 将所需内容通过剪藏软件按一定的格式组合写入剪贴板,这里的格式是为了QUICKER读取处理
  3. 用QUICER读取剪贴板,对内容进行基本的处理。比如将换行替换成<br>,避免因为剪藏的内容或者评论的内容有多段,导致写入本地文件时出现了换行(①批量导入需要通过换行来区分不同的卡片;②ANKI支持html)
  4. 积赞一定的划线后,比如经过了一下午的网页阅读后,把TXT文件拖进ANKI。

Clip_2024-09-28_16-11-00

批量导入的TXT文件参考如下,这是一段内容,导入ANKI后可以生成一张卡片。你可以发现里面有几个 ;,这是用于让ANKI区分一行中不同内容的符号(有多种区分符,只是我选择了英文分号,它比较不容易和我的剪藏内容冲突,再QUICER中我也预先对剪藏内容里的 ;进行了替换处理,避免导入时出现不必要的麻烦)。这些通过 ; 区分的内容依次为:

  1. 划线内容
  2. 卡片标题
  3. 来源文章标题
  4. 来源url
  5. 评论

Clip_2024-09-28_16-18-25

在将这个TXT文件拖入ANKI后,显示的界面如:

Clip_2024-09-28_16-30-31

Kenshin commented 1 month ago

谢谢详细描述 👍👍 今天下午外出了,明天再详细研究下。

简单的说,你的流程除了简悦和 anki 外,还使用 quicker 了,而简悦能做到就是替代 quicker

例如:

ANKI支持使用TXT文件按照一定的格式快捷批量导入。

我能想到的是,这个 txt 文件简悦可以直接导出。

这个 txt 的一条记录我知道了,但它可以具有多条记录吗?如果是的话,具体结构是什么?

同样可以给我个例子。

另外,我看到你提到了将 txt 拖拽到 anki 不知道有没有其他自动导入到 anki 方案?

如果有的话,简悦可以做到标注 → 自动生成 txt →(如果有自动)导入 anki 的话,就是全自动方案。

f1ooow commented 1 month ago

好的,我简单回复下上面的几个问题:

  1. TXT里可以有多条记录吗?具体结构是什么?
  2. 简悦能否替代QUICKER直接完成TXT文件的制作这一步?
  3. 除了拖拽TXT以外,有没有别的自动化方法?

1.TXT里可以有多条记录吗?具体结构是什么?

可以有多条记录,如下就是一个例子(我把记事本的自动换行给关了,这样或许你比较好理解)

Clip_2024-09-28_23-13-16

txt里面一行就对应一张卡片,如上所述有四行,所以把这个文件拖入Anki后,可以批量制作四张卡片,在下图的开头你可以看到TXT里的每一行都被单独拎出来了。

Clip_2024-09-28_23-19-38

简单来讲,整个txt文本的结构并不复杂,通过换行区分不同的卡片,通过分隔符区分不同字段。如下是一个简单的例子:

划线内容;网页标题;网页地址;备注内容
划线内容;网页标题;网页地址;备注内容
划线内容;网页标题;网页地址;备注内容

2.简悦能否替代QUICKER直接完成TXT文件的制作这一步

我也认为是可以的,不过有几个问题可能需要思考:

  1. 我用QUICKER写入的TXT可以理解成一个INBOX,在任何地方的划线都会被暂存到这个TXT里。那么简悦是否可以像这样写入TXT?我感觉不行,那或许只能导出TXT。
  2. 如果是导出TXT的话,那是按文章导出吗?如果每读一篇导出一次,那很麻烦,而且每个文件都要再单独导入ANKI。还是说可以先让不同文章的划线暂存在简悦,之后再按需一次性导出。
  3. 在简悦中能否进行挖空?在QUICKER读取剪贴板内容后,我会有一次在弹窗中进行二次编辑的机会。这个时候我可以通过别的QUICKER对划线内容进行挖空,具体效果请参考下图,左侧是卡片效果,右侧是卡片编辑器,Main字段中的内容是我的划线内容(具体的挖空方法不同人不一样,我的方法是对需要挖空的内容加上双括号)

Clip_2024-09-28_23-47-50

上面的两个问题都不关键,第三个问题是真正关键的,如果简悦无法完成挖空这一步,简悦就无法真的替代掉QUICKER。因为那样简悦只能导出一批很纯粹原始的网页划线进入到ANKI中,我相信对大多数ANKI用户来说,不挖空的划线回顾几乎毫无意义,我先前是Readwise用户,会从Readwise转向用ANKI很大程度上就是这个原因。

简悦要是想实现挖空,就要能够做到对划线内容中选中的特定词汇加上前后缀(ANKI的官方挖空语法应该是 {{c1::挖空内容}}

3.除了拖拽TXT以外,有没有别的自动化方法?

据我了解ANKI的插件库中有一个叫ANKICONNECT的插件,多数基于其他工具的ANKI制卡方案应该都是以这个插件为基础实现的,用这个插件的话应该就不用TXT了,是直接写入到ANKI里的。我个人不用的原因是我折腾不太懂这个,也不具备代码技能。而且看其他方案好像反而还没TXT方便的样子,就没太研究。

把TXT拖拽进ANKI其实我也写了个QUICKER动作来实现,就是直接通过ANKI打开指定路径的TXT文件,导入后再把这个TXT移动到另一个指定文件夹里归档,并重新生成一个空白的TXT等待新的划线内容。

如果简悦是导出TXT并且想自动导入ANKI的话,其实也可以用QUICKER配合,写一个QUICKER动作监控简悦的导出路径就可以了,每当监控到路径里有新的TXT文件的时候就运转ANKI打开这个文件。

补充讨论

如果想很有针对性地服务ANKI用户的需求,我估计还有一个逃不掉的步骤就是做一个简悦的ANKI模板,就像配置包那样提供全流程方案,“想用简悦搭配ANKI回顾网页划线”不代表他们已经"在用ANKI回顾网页划线"。如果要做到这一步的话,你可能还是要当一段时间的ANKI用户。

Kenshin commented 1 month ago

问题1:TXT里可以有多条记录吗?具体结构是什么?

Done (完全了解了),这个 TXT 的特点:

  1. 每行一组
  2. 每组使用 ;

唯一的疑问是:我记得你之前提到过这个分隔 ; 可以自定义?

问题2:我用QUICKER写入的TXT可以理解成一个INBOX,在任何地方的划线都会被暂存到这个TXT里。

除了在简悦(标注)以外,你还通过其它方式更新这个 TXT?

问题3:简悦是否可以像这样写入TXT?我感觉不行,那或许只能导出TXT

我猜你指的「写入」是追加新内容到 TXT 的意思吧?如果是的话:简悦在不借助同步助手的话,是没办法(理论上也有,但不太好用),但借助同步助手可以做到这点,坏处就是:简悦和 Anki 的用户需要使用同步助手。

问题4:在简悦中能否进行挖空?

目前简悦 仅不支持使用标注的方式 挖空,但可以有其它方案,e.g. 单独为 Anki 开发一个插件,大概使用方案是:标注 → 点击标注栏的一个 Anki Icon 弹出下图所示

image

上图的内容都可以按照 Anki 的需要添加(类似 这个图 的第三张效果)

同时,上图的红框,可以支持编辑,也就是可以添加 [[xxx]] 类似下图的效果。

甚至于在上图红框的地方直接加入类似标注的操作方式(划取),但我觉得不如直接使用编辑的方式更灵活。

问题5:一个简悦的ANKI模板,就像配置包那样提供全流程方案,“想用简悦搭配ANKI回顾网页划线”不代表他们已经"在用ANKI回顾网页划线"。如果要做到这一步的话,你可能还是要当一段时间的ANKI用户。

是的,你想的点很棒 👍

如果不考虑追加这个 TXT 的话,就不需要使用同步助手,也就是简悦的轻量级方案。 如果使用了同步助手,可以使用简悦的一整套方案(标注、生成 Anki、生成本地快照、在 Anki 打开本地快照回溯到当前标注 等等)

前者不需要提供配置库方案,后者则需要提供配置库方案。

f1ooow commented 1 month ago

问题1:分隔符能否自定义?

可以,; 是我个人的用法。据我了解ANKI至少支持五种分隔符,见下图。在批量导入时,ANKI会自动读取第一行的文本,以第一行文本为准,确定每行内容要分为多少个字段,以及采用什么分隔符来切割。后续所有内容的处理都会以第一行为准,如果ANKI对分隔符的判断有误,也可以在导入时手动调整。简单来说,只要能按“每行一组,每组统一分隔符”的结构,就不会有问题。

我最开始用的分隔符是 | ,但后来经常遇到剪藏内容或者网页标题里有 | 的情况,导致导入时有时会出错,索性就换成 ; 了,ANKI会区分全角字符和半角字符,且我的摘录场景不太会遇到 ;

image

问题2:除了网页标注以外,我是否通过别的方式更新这个TXT?

是的,因为我的内容源不完全是网页划线,不过倒全都是基于QUICKER更新。比如你可以发现我上面用例中的url其实是Obsidian的跳转链接,导入ANKI后在复习时我可以点击卡片中的链接直接跳转到Obsidian;再如有时候读纸质书也想摘录内容到ANKI,那可以用同一个QUICEKR手动录入内容进这个TXT;又或者是什么内容源都没有,我就是突然想到有个东西要记下,我也可以把它写进TXT。这动作不一定要有抓取到信息才能调出。

image

问题3:「写入」是追加新内容到 TXT 的意思吧?

没错。不过我觉得这个问题并不大,通过TXT批量导入本来就不是一个追求时效性的方法,可以先在简悦中积赞要导出的划线再批量导出。简悦如果能实现这个流程的话,算是以极低成本的实现Readwise的回顾功能了,如果是我的话不介意多这么一步。

问题4:关于挖空方法

看着完全没问题XD

Kenshin commented 1 month ago

导入到 Anki 插件

假设这个新插件叫做上面这个名字。

看了你一些回复,我感觉其实并不需要对 TXT 追加操作,似乎可以这么考虑:

将 简悦 → Anki 单独对应一个 TXT 文件即可,不需要跟通过其它方式导出的 TXT (比如:你提到的 Obsidian )混用就无所谓是否具有追加功能。

毕竟无论是一个 TXT(或多个 TXT)都是临时产物,都需要导入到 Anki 中。

另外,可以也做到批量导出,即在同一个界面一次性将简悦全部稍后读以及对应的标注按照用户事先设定好的方式导出到一个 TXT 。

此过程不需要同步助手,但不使用同步助手除了无法实现追加外,还有一个弊端:即无法实现标注自动生成 TXT 这个流程。

换句话,不使用同步助手的话,就没办法使用自动化方案。

但我感觉似乎 Anki 用户也不一定需要自动化方案,毕竟在标注后,大概率还有个挖空的动作。

我猜测这个图 应该是 Quicker 里面而不是 Anki 里面的吧?

所以对于用户来说,标注后,一定需要还存在一个挖空的过程。

比如:先在网页标注,全部标注后,再打开这个插件,然后设置挖空内容,甚至于这个插件可以做到:在同一个界面同时编辑不同的标注(如下图,假设可以增加一个 < 前一个 > 后一个 切换不同的标注。

image

全部设置(挖空)完毕后,可一次性导出(不使用同步助手),然后也支持刚才提到的批量导出。

f1ooow commented 1 month ago

是的,如果只是简悦2ANKI的话,完全不需要“追加”,只要能导出TXT就行了。

你提到的那张图是ANKI里的界面没错,左边是ANKI的卡片预览,右边是ANKI的卡片编辑器,这两个界面都是ANKI的。卡片在导入ANKI后,可以在卡片编辑其中进行再次编辑,包括重新挖空,或者说如果在导入前没有挖空,也可以在导入后再补上。

如下才是QUICKER的界面,我一般是在划线并运行QUICKER动作后,在弹出的这个界面进行二次确认。可能会在弹出的界面里直接进行挖空,也可能直接确认——把一个没挖空的内容直接写进TXT——等之后导入后再处理,毕竟导入以后也还是可以编辑的。

image

对于用户来说,标注后,一定需要还存在一个挖空的过程。

这句话可以理解说是对的,不过在哪个地方挖空是可以灵活的,甚至是等你复习到这张卡片了之后才发现自己没挖空,也可以直接在复习界面对这张卡进行挖空编辑。只是说如果所有挖空的工作量都积压到最后的话,我认为不合理,所以最好能在划线时就有挖空的机会。

最后,关于你说的可以在同一个界面对标注进行批量编辑再一次性导出,非常棒,我认为是有价值的一个功能。

比如我可以读完一篇文章后,唤出这个界面浏览我的全部划线,对需要导入ANKI的划线打上一个标签(或者设置成同一个划线颜色以区分,我认为应该不会所有人都希望自己的所有划线都进入到ANKI)并进行挖空处理,之后把这篇文章中的对应划线导出,或者是批量导出几篇文章的划线到同一个TXT里。

Kenshin commented 1 month ago

你提到的那张图是ANKI里的界面没错,左边是ANKI的卡片预览,右边是ANKI的卡片编辑器,这两个界面都是ANKI的。卡片在导入ANKI后,可以在卡片编辑其中进行再次编辑,包括重新挖空,或者说如果在导入前没有挖空,也可以在导入后再补上。

Get~

这句话可以理解说是对的,不过在哪个地方挖空是可以灵活的,甚至是等你复习到这张卡片了之后才发现自己没挖空,也可以直接在复习界面对这张卡进行挖空编辑。只是说如果所有挖空的工作量都积压到最后的话,我认为不合理,所以最好能在划线时就有挖空的机会。

Get~

我可以读完一篇文章后,唤出这个界面浏览我的全部划线,对需要导入ANKI的划线打上一个标签(或者设置成同一个划线颜色以区分,我认为应该不会所有人都希望自己的所有划线都进入到ANKI)并进行挖空处理,之后把这篇文章中的对应划线导出,或者是批量导出几篇文章的划线到同一个TXT里。

仅需要增加一个选项:是否导出到 Anki 即可。(每个标注页面都有这个选项)

当然,也可以做到:

  1. 如果你希望在日后可以检索简悦全部导出到到 Anki 的内容(稍后读或标注),加标签是个更好的方案。
  2. 也可以事先设置某个颜色即为导出 Anki 的标识颜色。

从灵活性和扩展性来说,优先级:选项 >= 标签 > 标注色

f1ooow commented 1 month ago

完全认同~期待简悦之后的方案

Kenshin commented 1 month ago

okay

等我十一期间折腾折腾~

有需求我会在这里随时跟你聊~

f1ooow commented 1 month ago

没问题,随时欢迎

Kenshin commented 1 month ago

嗨,过几天能开始 Anki 的需求了,有几个问题需要确认下。

大致功能

  1. 类似 单条复制的模板(默认给一个官方模板)

  2. 前后可切换不同的标注

  3. 挖空(以及可导出的部分都支持编辑)

  4. 导出到 TXT(当前页面全部的标注)

  5. 一键转换全部的标注为 Anki 结构并导出到 TXT

根据之前的反馈,我大概需要知道你需要的数据:

除此之前,简悦的标注还包括:

所以,不知道除了我知道这几个外,是否还需要其它的?

除了必要内容外,还有几个问题:

  1. 划线内容应该只能是文本吧?(简悦的标注系统也支持 HTML)

  2. 标注的内容有换行的话,在 Anki 中如何处理?

  3. 这个图 提到的制表符是什么?除此之前提到的诸如:分号、逗号应该都是小写的吧?

  4. Anki 可识别的内容是否需要定制化(也就是上提到的「模板」),我的意思是:如果不需要定制,就是这几个固定值的话,就不需要 Markdown 辅助增强模板了,只需要每个结构之间的分割方案(也就是第三点提到的,我这边可以跟 Anki 保持一致),反之如果支持定制化,就不需要第三点,直接写 https://github.com/Kenshin/simpread/issues/6724#issuecomment-2378423389 这种结构,自然而然就有分割方式了。

  5. 是否需要保存在简悦这边的挖空(以及相关内容),如果只是一次性的话,就不需要保存挖空。(所以从需求来说,是否需要在简悦这边反复修改?我没太想好如何处理。

4 5 这两个问题可能表述的没有那么清晰,如果没有理解的话,再详细讨论。

另外,上述需求可能在开发过程中有所变更,同样我会再跟你讨论,这个插件整体难度不大,主要都是 Anik 使用流程上的配合。

f1ooow commented 1 month ago

Hello,以下是针对我识别出的你上面的问题的回复,如果有疏于回应的地方你可以补充:

问题1:需要的内容有哪些?

就我个人而言,需要的内容只有:

  1. 标注内容
  2. 文章标题
  3. 文章链接
  4. 备注
  5. 标注时间(之前没提因为我是通过QUICKER获取的)

至于其他用户,我想标签可能也会是一个需求。

另外,有一项非必需但是有一定实用性的功能我不确定简悦能否实现:我先前提到的那个工具在复制时生成的链接是可以跳转至文章划线内容处的。

问题2:划线内容只能是文本吗?

这个问题我回答不上来也不确定问的用意是什么,不过我可以提供的信息是ANKI在批量导入时可以识别字段中的HTML。

*所谓“字段”,即ANKI卡片中各种信息的容器或者说变量,比如“标注内容”就是一个字段,“文章标题”也是一个字段。所以如果“标注内容”中有HTML的话,ANKI是可以识别并应用的,这个后面会在问题3进一步说明。

问题3:标注的内容如果有换行的话,ANKI如何处理?

在TXT批量导入时,ANKI会严格遵守“一行一卡”的原则,所示事实上如果标注有换行不能交给ANKI处理,而要在TXT文件里处理。我之前的方案是,把划线内容和备注内容(一般只有这两个地方可能会换行)的换行符通过QUICKER统一替换成 '\
',这样就可以不打破“一行一卡”的秩序了,而ANKI在导入的时候,会识别这些 ‘\
’,在卡片中正常换行。

问题4:制表符是什么?

我试验过,制表符就是按一下TAB键后出现的东西,在TXT文件里显示不出来(显示的是一段缩进但事实上是有且可以被ANKI识别的),如果是在别的文本编辑器里可以看到。

问题5:分号、逗号都是小写吗?

大小写都可以,具体以你导入的TXT文件的第一行为准,ANKI会自动识别你第一行中用的是什么符号,然后按照最终确定的分隔符对整篇文档的内容进行分割。如果你第一行用的小写分号,那后面就都是小写分号,如果是大写,那就都是大写。

问题6:Anki 可识别的内容是否需要定制化?

我认为需要,如下是理由:

  1. 我需要这些字段,是因为我自己用的模板里用到了这些字段,不同的人用的模板不一样,不同模板涉及到的字段不一样。当然我觉得网页摘抄需要的内容也玩不出什么花来,我实在想不到除了这些以外还有什么信息是需要的了。
  2. 在我向你提出的需求里,这些字段是按照一定顺序排列的,因为我的模板里的字段是按这个顺序排列的,ANKI在批量导入时会逐一把内容匹配到这些字段里(当然我也可以自己手动调整匹配错误的地方)。其他人其他模板的顺序可能和我不一样,比如他们的模板可能是先文章标题再划线内容,这种情况下如果按照我的顺序导出,就会匹配错误,因为ANKI读不懂内容,它只知道每一行的第一个内容对应模版里的第一个字段。

当然如果你直接提供一个ANKI模板,你也就锁死了这个模板需要的字段,就不用纠结定制化的问题了。

问题7:是否需要保存在简悦这里的挖空?是否需要在简悦反复修改?

不需要,简悦也做不太做得到。这个需求一般是“渐进式阅读”的玩家会有需求,且有这个需求的有大概率会是思源笔记或者SuperMemo的用户。ANKI的话用自带的编辑器就可以了,我只有从Obsidian里摘抄的内容会有回到源头修改的需要,至于网页摘抄,我觉得ANKI只要提供一个跳转回文章的链接就够了。

f1ooow commented 1 month ago

关于我上面回复中的问题6我好像没有理解对,我回答的是“不同用户需要简悦获取的信息是否固定都是这几项内容(标注、标题、链接、备注)”,但你问的貌似不是这个,如果我对问题的理解有偏差的话可能需要你再表述一下。

Kenshin commented 1 month ago

https://github.com/Kenshin/simpread/issues/6724#issuecomment-2391941697

你理解的对 😂我的问题就是:标注、标题、链接、备注 这几个结构是否需要定制(如顺序和显示结构等)

我先前提到的那个工具在复制时生成的链接是可以跳转至文章划线内容处的。

可以实现,但需要使用并配置简悦的知识库系统,教程 https://www.yuque.com/kenshin/simpread/wkswh7

模板 or 不可定制的疑问

按照你的思路,那就使用模板方式,并给出一个既定的模板,e.g. 我给你的那个模板。

文本换行的问题

如果只是将换行转换为 <br> 的话,这个问题就 OK

文本 or HTML

我没有想到的是:Anki 可以支持 HTML?!

如果是的话,可能引入一个新的问题...

举个例子,下图是一个包含换行和富文本结构的 标注

image

你之前的模板选择了文本结构,暂时先不讨论,假设有用户选择了 HTML 结构,那么可能的形式是下图

image

这种结构避免了换行的问题,但引入了一个新问题:挖空如何「设计」?难道类似文本一样处理吗?如下图

image

然后导入到 Anki 的内容是

<h2 hid="ss-hId-2" id="sr-toc-7">行的小道消息</h2><ul><li>9 月 21 日,《纽约时报》发布了一篇前苹果设计总监 [Jony Ive] 的<a href="https://sspai.com/link?target=https%3A%2F%2Fwww.nytimes.com%2F2024%2F09%2F21%2Ftechnology%2Fjony-ive-apple-lovefrom.html" target="_blank">专访文章</a>,Ive 在受访时确认正在与 OpenAI CEO Sam Altman 联合设计面向个人的 AI 硬件,目前正寻求外部投资。该项目目前只有 10 名员工,其中包括两名曾参与 iPhone 设计的前苹果员工。</li><li>据《财富》<a href="https://sspai.com/link?target=https%3A%2F%2Ffortune.com%2F2024%2F09%2F20%2Fopenai-staffers-unhappy-new-logo-design-ominous%2F" target="_blank">报道</a>,OpenAI 拟将公司标志换成一个</li></ul>

如果上述内容是文本的话,导入的内容

行的小道消息9 月 21 日,《纽约时报》发布了一篇前苹果设计总监 [Jony Ive] 的专访文章,Ive 在受访时确认正在与 OpenAI CEO Sam Altman 联合设计面向个人的 AI 硬件,目前正寻求外部投资。该项目目前只有 10 名员工,其中包括两名曾参与 iPhone 设计的前苹果员工。据《财富》报道,OpenAI 拟将公司标志换成一个

留意它们两者的区别

image

换个角度说,假设挖空的标识是 [xxxx] 对 Anki 来说,无论是 HTML 还是 TXT 都无所谓?

保存的疑问

对于简悦来说,保存(的实现)比较简单,但毕竟要增加一些新数据,会增加 simpread_config.json 的 size,所以如果不是一个必须保存的需求,我可以暂时考虑不实现。

标签的疑问

简悦的标签系统如何应用在 Anki (随便举个例子)

日期

Anki 对日期有什么特别要求吗?目前简悦的日期格式是 2024年10月04日 15:23:09

f1ooow commented 1 month ago

问题1:关于挖空符号的问题

这个问题虽然事实上你没提,但我要先强调说明一下:ANKI官方支持的填空题挖空符号是 '{{c1::挖空内容}} ',我建议你在讨论相关问题时以这个为准。使用双括号挖空是出于我个人的小聪明或者说使用习惯,除非用我ANKI模板,不然双括号是挖不了空的,这个挖空方式很可能只有我在用。

问题2:关于HTML

我不太能get到这个问题,我可以先尝试给出我认为你需要的信息。我把你提供的HTML导出内容导入到ANKI里了,效果如下:

Clip_2024-10-04_15-50-41

由于我实在缺少基础的技术知识,我只能尽力向你解释上图,可能不少表述不规范的地方:ANKI在批量导入时,可以勾选是否允许在字段中使用HTML,如果允许,就会在导入的时候对字段内容进行一次一次性的渲染,渲染结果就是上图中右边区域所显示的(请看Main字段,这就是你给我的HTML划线内容)。这个渲染是一次性的,导入之后可以在编辑器中对这些字段内容再次进行编辑,你可以看到右上方是有编辑工具栏的。你可以理解成,从简悦导出的HTML划线就是对字段内容进行一次样式的预排版。

右方只是卡片编辑器,左边是预览界面,也就是复习时实际看到的样子,ANKI的模板是通过HTML代码把字段的内容组装起来的。你会发现,卡片的实际样式会在右边的基础上有一些额外的变动,这是因为我在ANKI里模板写的HTML代码。

Clip_2024-10-04_15-57-39

上图左边的代码决定ANKI卡片的呈现效果,右边就是预览结果。简单来讲,你可以把ANKI模板理解成由两个部分组成。一部分就是你在图一右边看见的——决定这个模板需要涉及到哪些字段(标注、标题、链接等),再一部分就是你在图二左边看到的HTML代码,决定要怎么把这些字段可视化。

问题3:关于标签在ANKI里的应用

我也说不上来,所以我没有用上。我没用的原因是ANKI的标签功能不方便管理,且在自动导入时,即便在TXT文本里有一个字段用于匹配标签,ANKI也不会自动识别,必须要手动匹配。

问题4:关于日期的格式要求

关于日期的需要与ANKI无关,你可以理解成,我创建了一个字段并把它命名为日期,通过QUICKER的方式写入我划线的时间,作为一个记录。这就跟在NOTION表单里建立一个纯文本的项一样,没有格式要求。

Kenshin commented 1 month ago

ANKI官方支持的填空题挖空符号是 '{{c1::挖空内容}} ',我建议你在讨论相关问题时以这个为准。

对于简悦来时,我其实需要了解的仅仅只是:如何在简悦中挖空?

根据 https://github.com/Kenshin/simpread/issues/6724#issuecomment-2381129525 咱们的交流得知,可以使用 [[xxx]] 的方式,同时这个方式在简悦中实现就行。

但如果 [[xxx]] 只是你个人的行为,那么 {{c1::挖空内容}} 具体的表现是什么?换句话说就是我上面提到的:如何在简悦中挖空


按照之前的咱们讨论的理解,即:[[xxx]] 的表述,原本很清晰,就是我在简悦中可以编辑标注内容(之前是文本,现在可能是 HTML),然后使用 [[xxx]] 在简悦中操作(类似下图)然后导出,对 Anki 来说 [[xxx]] 就表示了 xxx 是要被挖空的。

image

f1ooow commented 1 month ago

Clip_2024-10-04_16-18-47

如上是ANKI基本填空题模板的示范,便于你理解。

另外,我刚刚写了个简单的填空题模板,你也可以参考下,对照着左边的代码应该就能看懂。

Clip_2024-10-04_16-32-21

f1ooow commented 1 month ago

简悦只需要给标注内容用{{c1::}}包裹起来就可以了,包裹完后写入TXT,批量导入的时候ANKI就可以识别挖空内容

f1ooow commented 1 month ago

上面那两个模板没有表述清楚,第一个模板是ANKI官方提供的填空题模板,只有两个默认字段;第二个模板是我针对简悦能导出的几个字段写的模板。不管是否自定义模板,在ANKI里只要是填空题型,都是通过{{c1::}}来挖空。

Kenshin commented 1 month ago

okay 我明白了。

也就是你使用的是 [[xxx]] 而官方则是 {{c1::xxx}} 是吧?

如果上述没问题的话,我这边并没有任何区别 😂 比如下面视频所示(这个视频的内容你可以理解为 导入到 Anki 插件的界面)

https://github.com/user-attachments/assets/66cead97-d7b5-4b4e-8605-8083368f5fe2

f1ooow commented 1 month ago

是的,这样没问题,当然最好是一次性添加,比如我选中内容后,按下快捷键就自动把挖空内容按格式包裹起来

Kenshin commented 1 month ago

当然最好是一次性添加,比如我选中内容后,按下快捷键就自动把挖空内容按格式包裹起来

这个操作我考虑过,看起来简单,实施也不麻烦。但其实不太好用,主要是撤销如何实现?

所以,我觉得直接像我视频中那样操作即刻。

f1ooow commented 1 month ago

了解。在简悦挖空的时候撤销好像确实不方便,我自己目前的做法是用QUICER选中文本后,通过正则表达式删掉挖空相关符号。

Kenshin commented 1 month ago

我自己目前的做法是用QUICER选中文本后,通过正则表达式删掉挖空相关符号。

为什么要删除挖空?是重新设置挖空的需求?还是?