前言多年来,我一直将 Dropbox 作为最重要的资料管理和同步平台。工作资料、学习笔记、家庭文档以及各种项目文件,几乎都依赖 Dropbox 在不同设备之间同步。这个周末,我刚刚完成了一项重要工作——利用 Immich 替代 Google Photos,实现了照片的统一管理和自托管存储。当照片完成迁移之后,一个新的问题自然摆在面前:既然照片已经回到了自己的 NAS,那么文件是否也应该回到自己的 NAS?于是我开始寻找 Dropbox 的替代方案。经过一段时间调研和测试,最终选择了 Seafile。而更有意思的是,在使用过程中,我发现 Seafile 不仅仅可以替代 Dropbox 的同步功能,还可以与 AI 能力结合,逐步构建属于自己的知识库体系。为什么选择 Seafile在 NAS 生态中,可选的文件同步方案很多:Synology DriveNextcloudOwnCloudResilio SyncSeafile最终选择 Seafile,主要基于三个考虑。同步能力优秀Dropbox 最大的优势一直都是同步。而 Seafile 是少数能够在同步体验上接近 Dropbox 的开源产品。
前言照片记录着生活中的点点滴滴。过去十几年里,我一直习惯使用 Google Photos 作为主要的照片存储和管理平台。Google Photos 刚推出时,可以说是最好的照片管理工具之一。不限量存储、强大的搜索能力、优秀的人脸识别和时间轴管理,让我几乎把所有照片都上传到了 Google Photos。然而随着 Google 取消免费无限容量政策,照片存储逐渐变成了一项持续支出。随着照片和视频数量不断增加,每个月都需要为额外空间支付费用。同时,由于网络环境原因,Google Photos 的访问体验也越来越不方便。更大的问题在于,随着设备的增加,我的照片开始散落在多个平台。Google Photos:主要照片库iCloud Photos:部分 iPhone 照片华为手机本地照片DJI 无人机照片和视频运动相机视频NAS 本地存储由于不同设备和平台之间的同步机制不同,同一张照片经常会出现在多个地方。结果就是:照片越来越多,但真正想找到一张照片却越来越困难。因此,我决定借助 Immich 构建一个统一的照片管理中心,实现所有照片的集中管理和自动去重。为什么选择 Immich在选择照片管理平
最近整理 NAS 上的电影和剧集文件时,遇到一个很实际的问题:下载目录里的文件名经常非常混乱,包含资源站水印、清晰度、压制组、音轨、字幕信息,甚至还有拼音缩写、别名、错别字。如果全部手工整理,不仅耗时,也很容易出错。伴随Ai编码的使用,我现在已经比较少的使用现有的代码了,主要还是为了避免一些安全上的问题,毕竟要部署在我的装着各种资料的nas上。于是做了一个小工具:AutoReel。它的目标很简单: 监听一个输入目录,自动识别电影和剧集,然后按 Emby / Jellyfin / Plex 友好的目录结构移动并重命名文件。项目地址:https://github.com/walker22026/AutoReel代码的编写过程远远的超出的我的开始预估,框架搭建起来容易,但是真正的运行,能用就有一些问题,当然更谈不上好用。最主要的问题就是我的节目源主要来自于阿里云或者百度云,这个共享资源为了避免被“和谐”采取各种名称变型,导致猜测也猜不出来,这种情况下,我尝试使用llm来进行节目真实名称的理解,效果并不好。最终还是选择简化处理的模式,能够自动处理的自动处理,无法识别的放入特定目录中,等待使用
在 NAS 上自建 Podsync 是个很实用的方案,但有个隐患——网站的反爬机制会让 Cookie 静默失效,yt-dlp 开始报错,而你可能几周后才发现播客已经停止更新了。本文记录如何搭建一个简单的监控脚本,在出现问题时第一时间通过即时通讯工具推送告警,并每日定时发送下载统计日报。背景:Podsync 会遇到哪些问题运行一段时间后,日志里最常见的错误有三类:Cookie 失效The provided YouTube account cookies are no longer valid. They have likely been rotated in the browser as a security measure.Google 会在浏览器使用过程中自动轮换 Session Cookie,导致之前导出的 cookies.txt 失效。正常情况下 Cookie 能用 1~3 个月,但如果频繁使用,可能 2~4 周就会失效。机器人验证ERROR: Sign in to confirm you're not a bot.Cookie 失效后 yt-dlp 没有登录凭证,导致
今天接触了 https://hnup.date/hn-sota 这个网站。这个网站不同于其它侧重跑分的榜单,它主要是通过抓取 Hacker News 顶级开发者的真实评论,并利用 AI 进行情感分析来进行模型的评判。从网站展现的信息看,最强的模型仍然是 Claude (Anthropic),其在复杂逻辑推理和代码重构方面的“工程感”被开发者公认为目前的第一名;其次是 GPT (OpenAI),在生成速度、生态支持及主流语言的标准实现上依然保持着极高的稳健性;此外,DeepSeek 表现出了强劲的黑马势头,凭借极致的性价比和深厚的底层语言理解力,在硬核技术圈中赢得了极高的实战口碑。
假期除了两天加班,另外就是折腾一个叫 TrendRadar 的开源项目,折腾完觉得值得记录一下。为什么需要它我订阅了不少英文财经和科技 RSS,雅虎财经、Bloomberg、Seeking Alpha、Hacker News 都在列。问题是这些源每天产出量很大,标题又是英文,扫一遍本身就需要时间,更别说判断哪条值得细读。我想要的其实很简单:有新内容就告诉我,顺便翻译一下,晚上给我做个总结。不需要自己盯着 RSS 阅读器,也不需要每次打开都看到一堆昨天的旧内容。TrendRadar 基本上就是做这件事的。什么是 TrendRadarTrendRadar 是一个开源的舆情监控工具,核心功能是聚合多平台热榜和 RSS 订阅,通过 AI 筛选、翻译和分析后推送到手机。它支持的推送渠道很全,飞书、钉钉、Telegram、邮件、ntfy、Bark 都有。我用的是 Telegram,配置最简单。AI 这块基于 LiteLLM 统一接口,理论上支持所有主流模型提供商。我通过自建的 LiteLLM 网关接入 Gemini Flash,转发给 TrendRadar 使用。部署方式:还是 Docker 放
今天主要处理了两个播客生成项目中封面无法正常显示的问题,同时顺带优化了学习音频播客的生成数量和变更记录方式。第一个项目中,原来的播客 RSS 使用的是外部封面图片。由于该图片地址已经失效,导致播客客户端无法正常显示频道封面和单集封面。本次修改没有动音频生成、转录、AI 摘要、同步、播放器和部署配置,只是把 RSS 里的封面地址统一改成本地音频目录下的封面文件。代码上新增了一个专门生成封面地址的方法,把原来写死的外部图片地址替换为统一方法调用。这样以后如果目录结构或访问路径发生变化,只需要改一个地方。修改后,RSS 中频道普通封面、频道播客封面、单集播客封面都使用同一个本地封面文件,避免继续依赖已经失效的外部资源。修改完成后,重新构建并启动录制容器,确认新容器已经正常运行。同时检查了 RSS 文件、封面文件和容器日志,确保封面地址已经写入 RSS,封面图片也能被客户端正常读取。第二个项目主要面向外语学习音频,用来把本地音频目录生成成可订阅的播客源。今天对它做了几项小调整:一是将每次生成的节目数量从 50 条提高到 80 条,更适合反复听、批量听的学习场景;二是增加了播客封面配置,补齐了标
在日常生活中,我们会涉及到多个不同的领域:投资、工作、日记、生活等。随着人工智能助手的发展,像 Hermes 这样的智能助理逐渐成为我们生活的好帮手。然而,随着我对 Hermes 的使用深入,我发现它的能力虽强,但存在一个显著问题——领域之间的混乱。在谈论股票时,常常会穿插我的工作内容;而在记录日常生活时,又会偶尔涉及投资的思考。这种混杂的现象让我开始思考,如何将不同的任务和内容领域进行有效隔离,让 Hermes 更加高效和专业地为我服务。1.核心原则:一个入口,多个隔离角色首先,我决定将 Hermes 设计成一个总入口 + 多个专业分身的结构。具体来说,我将 Hermes 拆分为以下五个模块:总控 Hermes:负责判断当前任务属于哪个领域,并将其交给相应的分身模块。股票助手:专注于股票分析、资产配置、长期持仓等问题。工作助手:涉及稽核系统、客服工作、项目汇报、AI赋能等内容。日记助手:记录个人反思、博客内容、技术折腾等。生活助手:处理家庭、健康、旅行、葡语学习等日常事务。每个领域模块之间必须有严格的界限,防止内容交叉,确保每个模块只专注于自己领域的任务。2.最重要的是做“知识库分区
问题现象podsync 日志中频繁出现两类错误:Bot 验证错误:ERROR: Sign in to confirm you're not a bot. Use --cookies-from-browser or --cookies限流错误:WARN: server responded with a 'Too Many Requests' error原因分析错误类型原因Bot 验证yt-dlp 没有携带登录凭证,YouTube 识别为爬虫Too Many RequestsNAS 出口 IP 请求频率过高被限流,多个容器同时下载加剧了问题解决方案:配置 cookies第一步:导出 cookiesChrome 安装插件 "Get cookies.txt LOCALLY"打开 youtube.com 并确认已登录点击插件图标立即导出 cookies.txt导出后不要再访问 YouTube,避免 cookies 被轮换失效第二步:上传 cookies 到 NAScookies 必须放在容器挂载的数据目录内,否则容器无法访问。先确认容器挂载路径:docker in
让chatgpt按照它对我的理解,帮我绘制我现在的生活状态。提供人物素材后,让其帮我绘制我所理想的退休生活。翻看我的日志找到的2013-11-03 13:09记录的一个关于兰花的故事,让其绘制为一个连环画。测试图片怎么能少了ppt生成效果的测试
walker
万事随性而为,因好而研,因趣而学,从心所欲。脱离依赖,谋划将来,避免经济之险,迈向希望之光。