[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fu84supoh1lk9":3},{"code":4,"message":5,"data":6,"timestamp":34},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":30,"homepage":31,"updated_at":32,"history":33},"mu-zi-lee\u002FTangentry",16,"沿着好奇心继续发现 —— 本地优先的多平台内容聚合、阅读与笔记工具","Go",146,14,19,8,[],"Aggregates videos, podcasts, RSS and articles into one local reader where notes anchor to timestamps and text.","If your saved videos, podcast episodes and RSS articles live in five separate apps with five separate bookmark lists, Tangentry proposes one local reading inbox instead. You paste a link or subscribe to a channel, the content lands in a SQLite database on your own machine, and you read, search, annotate and export from a single interface. The friction it targets is real: platform feeds are built for consumption, not for retrieving what you learned three months ago.\n\n## The problem\n\nA user wants to keep the useful part of what they watch and read: the argument in minute 14 of a lecture, a paragraph in a long article, a frame worth remembering. Today that means a browser tab, a platform favourite list, and a separate notes app with a pasted timestamp and no link back. Tangentry moves the note into the same place as the source, so a timestamp note, a highlighted paragraph, a PDF anchor or a captured frame stays attached to the item and can be searched together with everything else. The result is a personal corpus you can query rather than a pile of bookmarks.\n\n## What's different\n\nThe mechanism is a local Go server plus a React web UI, shipped both as a desktop app and as a Docker image for a NAS or home server. Content is normalised across Bilibili, YouTube, Xiaohongshu, Douyin, Xiaoyuzhou podcasts, RSS\u002FAtom\u002FJSON Feed and local PDFs; the reading layer adds subtitle following, Readability-style article extraction, playback position memory and optional machine transcription. The note model is the genuinely distinctive part: notes attach to a time point, a text range, a PDF location or a screenshot, and export as a Markdown ZIP with Obsidian frontmatter.\n\nThe trade-off is that this is a young 0.0.3.x project wrapping sites that change their interfaces. Video parsing and downloading rely on external `yt-dlp`, so breakage is expected to be fixed by updating that tool rather than the app itself, and some Bilibili content needs a login. AI summaries and translation require a user-supplied OpenAI-compatible endpoint, and cloud transcription sends audio to the provider you choose — the local-first guarantee applies to storage, not to features you explicitly route outward.\n\n## Who should try it\n\nGood fit: a heavy consumer of long-form video and podcasts who already takes notes and wants those notes in Markdown next to an Obsidian vault, and who is comfortable running a Docker container or a desktop build. Poor fit: someone who mainly reads social feeds passively, or who wants a hosted service with zero setup and no dependency on `yt-dlp`, FFmpeg or a locally running process. The [Docker route](https:\u002F\u002Fgithub.com\u002Fmu-zi-lee\u002FTangentry\u002Fblob\u002Fmain\u002FREADME.md#-快速开始) is the alternative for people who would rather keep one always-on instance on a home server than install a desktop app on each machine.\n\n## Requirements and limitations\n\nBuilding from source needs Go 1.27+ and Node.js 24+, though prebuilt desktop and Docker routes exist. Downloads and frame capture need `yt-dlp` and `ffmpeg`; local transcription needs Python 3, and its speed depends on CPU\u002FGPU and model size. Desktop auto-update requires an Ed25519 signing key configured in the repository, and the app must live in a user-writable location — installs under `\u002FApplications` or package-manager paths will not self-update. macOS builds are ad-hoc signed by default and un-notarised builds can be blocked by Gatekeeper. Migration means copying the whole data directory while the app is closed.\n\n## HotRepo's take\n\nHotRepo has tracked the project since 2026-10-24; its only observation is #16 on the NEW-REPOSITORY board (新项目榜, not the overall board) on 2026-10-25 with 146 total stars. That is a snapshot of a seven-day-old repository, not a growth series, so persistence cannot yet be judged. Before adopting, check the project's [configuration and data-directory notes](https:\u002F\u002Fgithub.com\u002Fmu-zi-lee\u002FTangentry\u002Fblob\u002Fmain\u002FREADME.md#%EF%B8%8F-配置) to confirm where credentials and the SQLite file live on your intended install path.",{"slug":19,"name":20},"productivity","Productivity & Utilities",[22,23,24,25,26,27,28,29],"bilibili","douyin","mygo","rss","rsshub","xiaoyuzhou","youtube","youtube-downloader","MIT",null,"2026-10-25T03:15:35Z",[],1792909523]