惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
Know Your Adversary
Know Your Adversary
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
Recorded Future
Recorded Future
Recent Announcements
Recent Announcements
D
DataBreaches.Net
C
CXSECURITY Database RSS Feed - CXSecurity.com
U
Unit 42
博客园 - 【当耐特】
I
Intezer
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
H
Help Net Security
L
LangChain Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
The GitHub Blog
The GitHub Blog
博客园_首页
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
S
Secure Thoughts
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
T
Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
C
Cybersecurity and Infrastructure Security Agency CISA
T
Troy Hunt's Blog
罗磊的独立博客
腾讯CDC
Simon Willison's Weblog
Simon Willison's Weblog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
P
Privacy & Cybersecurity Law Blog
Latest news
Latest news
The Cloudflare Blog
Jina AI
Jina AI
小众软件
小众软件
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
F
Full Disclosure
V
V2EX

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
一日一技|修复 Zotero 与 Papership 的联动,恢复 WebDAV 云同步 - 少数派
2021-11-08 · via 少数派

Zotero 作为一款开源文献管理工具,受到了很多科研工作者的喜爱,尤其是它能够安装插件以增强软件本身的功能。另一方面,Papership 作为 iOS 及 iPadOS 上目前唯一与之适配的客户端,支持双向同步,综合体验十分出色。

然而,随着 Zotero 的不断更新以及 Papership 的年久失修,它们之间的友谊出现了小小的问题,困扰着很多现有用户。我遍寻网络资源,虽然找到了一些解决方案,但我觉得不够优雅,因此提出一套自己的解决方案,以供有类似需求的读者们参考——

Zotero 和 Papership 之间的问题在哪

在探讨解决方案之前,我们先来聊聊前文提到的问题具体在哪。

原问题讨论:https://forums.zotero.org/discussion/64967/cant-access-webdav-files-from-papership-or-zotero-org

Zotero 本身作为开源工具并不收费,但是免费的文件存储空间只提供 300M 的空间,对于大量阅读 PDF 文献的小伙伴来说,很快就会把这部分的配额给消耗殆尽。如果要进一步购买空间 2G 档位,则需要支付每年 20 美元的费用,对学生党来说有点高。但是好在 Zotero 允许外挂 WebDAV 来存放文件,十分良心,所以不少用户都选择以这种方式同步文献。

而 Papership 则是一个支持 Zotero 的第三方客户端,它可以直接登录 Zotero 账号以获取文献库中所有文献的 metadata 的信息,然后通过 WebDAV 链接直接访问文件,最终实现与 Zotero 的完美联动。

Papership 唯一的额外要求是需要将一个特殊的文本文件 lastsync.txt 放置在 WebDAV 的同步目录内,Papership 在同步文件时会优先检查这个文件,如果发现本地的文件变动时间没有比 lastsync.txt 存储的最后变动文件更新,则采取「懒同步」的方式——也就是不同步。

问题就出在 Papership 的同步机制上。随着 Zotero 的更新,不知道出于何种原因,Zotero 在同步 WebDAV 文件的时候会主动删除 lastsync.txt。这个机制让 Papership 失去了「懒同步」的参照系,导致在 Papership 中阅读和标注的内容无法更新到云端,Zotero 的文件变动也无法同步至 Papership。

更麻烦的是,Papership 已被确认被 Elsevier 公司收购了,而 Elsevier 旗下有自己的文献管理工具 Mendeley。收购完成后,Papership 的开发重点也转向了母公司的产品,甚至可能不会再修复和 Zotero 相关的 bug。与此同时,Zotero 也在开发自己的 iOS 客户端,beta 版发布至今仍未支持 WebDAV 同步。在各方原因和背景之下,夹在中间的用户们只好自行寻求解决方案。

当前网上流行的解决方案

目前,网络社群中解决该问题的主要方案是放弃 Papership,使用 Zotero 的插件来解决文件同步的问题。

Zotero 中有一个很多人都会安装的插件「zotfile」,它有一个功能可以把待阅读批注的文献发送到平板电脑上,然后等到在平板端阅读和标注后,再取回到整体的文献库中。它背后的工作原理是这样子的:

  • 将待阅读标注文献复制到另一个文件夹
  • 该文件夹依靠第三方云存储进行同步(如 OneDrive、坚果云等)
  • 在 Android 设备或 iPad 上用自己喜欢的批注工具阅读(如 PDF Expert 等)
  • 将该文献从同步文件夹中移动并替换文献库的文件

其中,发送和取回两个动作都需要手动操作,因此,从整体的联动性来说,我觉得是不够方便的。而且由于没有自动双向同步,将文献从 A 集合移动到 B 集合,它对应的存储位置不会改变,这对于我习惯使用 Inbox 来消化文章的用户来说,极大地不方便。

如果没有就创造

既然现有的解决方案不满意,那就创造自己的解决方案。

通过上文的讨论,我们知道整个问题的关键在于 lastsync.txt 文件身上,如何存储和恢复该文件就成了该解决方案的关键。同样地,我通过查询英文资料得知,哪怕只创建空白的 lastsync.txt ,也能激活 Papership,让它启动正确的同步机制。

手动创建 lastsync.txt 是一件很麻烦的事情,但是如今比较流行的 serverless 的技术却能够很好地帮助我们自动化完成这一目标。不少的 serverless 服务都是以 web 作为入口,且使用这些服务或需要绑定信用卡或需要备案,比较麻烦,因此我最终选择了 Github Actions 作为本次的自动化工具。

  • 注:serverless 是一种功能即服务(Function-as-a-Service),它也需要服务器运行,但分离了网页和数据库,仅保留运算部分对外提供服务。
  • 注:如果你还不会使用 Github Actions,可以参考 阮一峰大神的教程,简单易懂。

由于目标比较简单,因此两行简单的 bash 命令就可以完成核心的目标。

touch lastsync.txt
curl -u ${WEBDAV_EMAIL}:${WEBDAV_DAVPASS} -T lastsync.txt https://your/webdav/url/zotero/lastsync.txt

这两行的意思分别是:创建空白的 lastsync.txt 文件,上传到 WebDAV 的指定路径上。其中,${WEBDAV_EMAIL} 是你的 WebDAV 的登录账号或邮箱,${WEBDAV_DAVPASS} 是你 WebDAV 的应用密码。

然后只需要在 GitHub 的任意一个仓库中(可新建),在 .github/workflows/webdav_lastsync.yml 路径下放入这两行代码即可,具体的文件模板我都给大家创建好了。

name: webdav_lastsync

on:
  schedule:
    - cron: '0 4,16 * * *'
  workflow_dispatch:

jobs:
  fix:
    runs-on: ubuntu-18.04
    steps:
      - name: Fix
        run: |
          export SYNCFILE="lastsync.txt"
          export REMOTEFILE="https://app.koofr.net/dav/Koofr/zotero/${SYNCFILE}"
          touch ${SYNCFILE}
          curl -u ${KOOFR_EMAIL}:${KOOFR_DAVPASS} -T ${SYNCFILE} ${REMOTEFILE}
        env:
          KOOFR_EMAIL: ${{ secrets.KOOFR_EMAIL }}
          KOOFR_DAVPASS: ${{ secrets.KOOFR_DAVPASS }}

该文件也是我放在 Github 中的实际文件,以一个具体的例子供大家参考,记得修改为自己的字段。

该 workflow 会在北京时间的每天 12 点和 0 点自动运行一遍,我觉得已经能满足我日常的同步需求了,我并不需要完全的实时同步。如果你希望增加同步的频率,在第 5 行中的 4,16 处增加你想同步的整点时间即可。值得注意的是,这里的时间是以格林威治时间为标准的,换算为北京时间(UTC+8)时,需要将你的目标时间倒推 8 小时。

创建完该 workflow 后,别忘了在 GitHub 的 settings -> secrets 中添加你的登录邮箱和应用密码字段。接下来,GitHub Actions 就会依照你设定好的时间,自动生成 lastsync.txt 并同步至你的 WebDAV 目录,Papership 只要识别到该文件,也会保持同步状态啦。

该解决方案已正确运行一周,解决了我的巨大的痛点,仅以此文献给有需要的小伙伴。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀