1. 三层结构
Aster 里的一切只有三层,而且刻意没有第四层:
- 学科AI
- 平台YouTube
- 创作者Andrej Karpathy
- 他的主页youtube.com/@AndrejKarpathy
架子上是三层,第四步则离开架子。虚线那格并不是 Aster 里的页面,而是创作者自己的主页,在新标签页打开。
- 学科是你正在学的一个领域:AI、生物、经济、设计。在首页,每个学科是一颗星球。
- 平台是这个学科下的一层架子。每个新建学科都会自动带上 11 个:YouTube、B 站、X、小红书、微信、Substack、LinkedIn、播客、GitHub、官方网站、其他。你也可以自建。
- 创作者是某个平台上的一个账号。点一下这一行,就在新标签页打开他们的主页。
Aster 不存内容本身 —— 没有稍后读,没有收藏的文章,没有划线笔记。它存的是「谁值得读」,并告诉你他们什么时候更新了。创作者这一行之后的下一步,永远是创作者自己的页面。
同一个人通常会出现不止一次:一个 YouTube 频道、一个 X 账号、一份 newsletter。在架子上它们是分开的行,因为它们确实是不同的信息源;但在「时间线」和「动态」里,它们会被重新合并成同一个人。
2. 首页 —— 你的学科
首页是星空上的一组星球,每颗是一个学科。一共八种星球,各有带环与不带环两版,在新建或重命名学科时挑选。它只是标记,不是设置 —— 不会因为选了哪颗星球而有任何行为差异。
在这里可以做什么
- 拖动星球换位置,布局是你的,会被保存。
- 右键(触屏长按)可以重命名、换星球、改大小、删除。
- 点击进入这个学科。
新账号是完全空的。注册后的引导会问你在关注哪些领域,然后只创建你勾选的那些学科 —— 不会预置任何你没要的东西。
3. 学科页 —— 一层层平台架子
进入学科后,每个平台是一行,分三个区块:国际、中文、其他(官方网站、「其他」,以及你自建的平台)。这三个区块本身也可以拖动排序,顺序按学科分别保存,每个都能折叠。
右侧的活跃度
每一行右侧是两行信息:这个平台里最新一次更新距今多久,以及本周有多少位创作者发过内容。还没探测到任何东西的行,右侧就是干净的空白,而不是编一个数字出来。当最新一次更新在 24 小时以内时,这个时间会轻轻呼吸。
平台分组
一个平台区块太挤时,可以像整理创作者一样整理它。学科名字右上角的那一排工具 —— + 添加、全部折叠/展开、+ 新建分组、选择 —— 作用于你当前正在看的那个区块。把一行平台拖到分隔线上即可归入该组,或者右键 →「移动到分组」。
4. 平台页 —— 创作者列表
人都在这里。每一行是头像、名字、你写的备注和标签,以及 —— 在 Aster 能读到的平台上 —— 距上次更新多久。
时间标签
「3 天前」「2 个月前」,超过一年统一收成「1 年+」。24 小时内更新过的人,那一行会有一层安静的呼吸高亮。如果他在这 24 小时里更新了不止一次,显示的就不是时间而是密度 —— 比如「10 条(近 24 小时)」 —— 这样刷屏和只发一条就不会读起来一样。探测是在你打开页面时按需触发并做了节流的:没人打开的账号,不会在后台产生任何请求。
分组
分组是你自己在一个平台里划的段落。在分隔线上重命名、拖动排序,把创作者拖到分隔线上归组,或者右键 →「移动到分组」。选择会把列表变成可勾选状态,一次移动一批。分组标题上刻意不显示人数。
星标
每一行都有一颗五角星。星标属于人,而不是某一行:你在 YouTube 上标了某个人,他的 X 和 Substack 账号会一起亮起来。被标记的人会排在他原本所属区块的前面 —— 这是优先级,不是提拔。星标不会把一个安静的人挪进「最近活跃」,也不会绕过决定阅读提示覆盖范围的那些规则。
改掉 Aster 认错的地方
自动识别很好用,但不完美。「编辑资料」把名字、链接、备注、分组、标签放在同一个面板里改;「头像」可以上传你自己的图片。你手写过的内容就是你的 —— 后续的自动检查不会覆盖它。
5. 添加创作者
只有一步:粘贴链接。Aster 会取回名字和头像,并把这个人放进你点开「+ 添加」的那个位置 —— 目标学科和平台由上下文推断出来,只读展示,所以没有一个可以选错的下拉框。你唯一要选的是这个平台里的分组,留空也完全没问题。
头像会被存成 Aster 自己图床上的永久图片,而不是直接外链平台的地址 —— 这样平台一改图片链接,你的架子不会变成一片空白。
该粘贴哪种链接
| 平台 | 粘贴这个 |
|---|---|
| YouTube | 频道地址或 @handle 页面 |
| X | 主页地址。新添加的 X 创作者还会把公开简介写进备注,t.co 短链会被还原 |
| GitHub | 个人或组织主页地址 |
| 个人主页地址 | |
| Substack | 刊物主页、它的自定义域名、任意一篇文章链接,或 substack.com/@handle 个人页 |
| 播客 | Apple Podcasts 或 Spotify 的节目链接,也可以是自建播客的站点或订阅源 |
| B 站 | space.bilibili.com 主页,或 b23.tv 分享短链 |
| 小红书 | 主页链接,或 App 里分享出来的 xhslink.com 短链 |
| 微信公众号 | 该公众号的任意一篇文章 —— 公众号没有可粘贴的公开主页,所以 Aster 直接从文章页读出账号的名字、头像和简介 |
| 博客与个人站 | 站点自己的地址 |
搜索结果页并不指向某一个人,所以粘贴它时 Aster 会诚实地什么都不显示,而不是猜一个。
6.「时间线」—— 你关注的人发了什么
「时间线」是产品里唯一的流,而且它是已探测数据的一次投影,不是另一轮抓取。打开它触发的,是和架子上一样的、被节流的后台检查。
它是怎么归拢的
按人归拢,并跨平台合并 —— 同一个人在 YouTube、X、LinkedIn 上都发了,那是一张卡片,不是三张。卡片上是头像、名字、他这次发布过的所有平台标记、「N 条更新 · M 个平台」,以及读完大约需要多久。他的内容像枝条一样挂在卡片下方,最新的在上:默认露出三条,其余折进「展开另外 N 条」。
Andrej KarpathyYouTube · X · Substack —— 4 条更新 · 3 个平台 · 约 41 分钟
- YouTube一堂从零手写小型语言模型的课 大模型约 27 分钟最新的在上
- X一条关于评测集为何会误导人的札记 研究约 2 分钟
- Substack一篇谈今年工具链变化的长文 随笔约 12 分钟
- 展开另外 1 条只是折叠,没有被过滤
这是示意图,不是产品截图:一个人、他被合并的多个账号,以及挂在下面的内容,每条带着阅读提示给出的主题和时长。
折叠不是过滤。每一条都还在,只是收在了它所属的人下面;卡片之间按各自最新一条的时间排序。在 GitHub 的卡片里,连续的 commit 会按仓库折成一行,而发版、新建仓库、PR 和 Issue 各自单独成行并带类型标记。
时间窗与排序
用 chips 选今天 / 3 天 / 7 天(按设备记住),列表就正好是这个区间。旁边还有一个控件,在最新和A–Z之间切换。选 A–Z 时,页面按首字母分段,页边会出现一条字母轨:点字母跳转,按住往下拖可以快速刷过,读到哪一段哪个字母就亮起来。中文名按拼音首字母归位,所以「木辰有点菜」在 M。屏幕窄时,这条轨会像手机通讯录一样贴到右边缘。
平台 chips
你关注的每一个平台都有一个 chip,而不只是这次有更新的那些 —— 所以一个安静的平台会明确告诉你「近 N 天没有更新」,而不是悄悄消失。当你的架子覆盖的平台超过一行能放下时,这一排会用 ‹ › 翻页,而不是换行堆叠。
阅读提示
这是替你先读一遍的那一层,也是 Pro 真正卖的东西。每一条内容上都有:
- 一句概括 —— 这是一篇什么样的东西、讲的是什么,用你的界面语言写成,而不是把原文抄一遍;
- 一个主题标签,指出它属于哪个领域;
- 一个时长标签 —— 页面本身给出真实时长的(YouTube、B 站)就用真实时长,完全不经过 AI;给不出的用一个诚实的估计;两者都无法确定时明确写未知。绝不留空。
提示覆盖整个 7 天窗口,并且是增量累加的:一条内容只标注一次,之后每次重新生成都会沿用,所以只有新内容才会产生成本。到你在设置里选定的生成时间,它会在后台自己生成好,「时间线」按钮上的小点随之亮起。刷新随时可以重来一次,而没有变化的架子会直接跳过模型调用。顶部横幅统计的永远是屏幕上这一屏 —— 「N 位创作者 · M 条更新 · 全部看完约 X」 —— 有源没读到时也会明说:「有 N/M 个来源没能读取」。
悬停预览
把鼠标停在一条内容上,会出现一张小卡:封面、标题、开头几行和来源,让你不必开新标签页就能判断要不要读。所有 Aster 能读的平台都支持封面,包括那几个不肯把图片给外站的中文平台 —— 它们的图片走 Aster 自己的中转。只有真的有东西可展示时这张卡才会出现,比如一条纯文字的 X 内容就不会有。它只对鼠标生效,手机上不会出现。
这里没有排序算法,也没有 AI 过滤,以后也不会有。模型只负责描述,从不决定你看到什么、按什么顺序看到。别人眼里的废话,可能正是你等了很久的那一条 —— 这个判断权是你的。
7.「动态」—— 这一周谁真的在产出
如果说「时间线」是「今天」,「动态」就是「这一周」。同一个人的多个账号合成一行:本周更新数、距上次更新多久、他在哪些平台上,外加一段 AI 画像 —— 关注方向(他常写什么)、擅长(他最强的是什么),以及一句诚实的定位。画像是一次批量调用,按人缓存一周,只有在他最近的标题发生变化时才重算。没有模型密钥时,这一页会降级成纯活跃度统计,而不是报错。
只有一条时间轴
页面上显示的那个本地「周一到周日」自然周,驱动这一页的全部内容 —— 顶部日期区间、更新总数、七格活跃度条、分区和排序。一共三个区块,其中后两个的区别很重要:
- 最近活跃 —— 在显示的这一周里发过内容。
- 最近安静 —— 有 Aster 能读的信息源,但这一周没有更新。
- 暂无可读信号 —— 根本没有 Aster 能读到的公开信息源。这和「安静」不是一回事,Aster 不会把两者混为一谈。
控件
列表上方是两组 chips:全部 / ⭐ 星标(看哪些人),以及被一条细线隔开的活跃度 / A–Z(怎么排)。区块标题在自己的行还在视野里时会吸顶。日期上方的小小 ? 会解释账号合并、时间范围、分区和金色高亮。被星标的人在这里保留金色行,但没有星星 —— 「动态」是一个总览页,不是又一个编辑界面。
8. 搜索
一个输入框,搜的是你架子上的所有创作者。结果带上「学科 · 平台」的标注,点击直接打开创作者主页。它搜的是你的架子,不是全网。
9. 批量导入
入口在「+ 添加 → 一次导入多个」,设置里也有。三种方式:
- 粘贴文本 —— 一份随手写的名单,名字、handle 或链接都行,由 AI 解析出名字、平台和 URL。
- 截图 —— 把关注列表的截图拖进来。OCR 在你自己的浏览器里运行,图片不会上传。
- CSV —— Google Takeout 导出的
subscriptions.csv会被确定性识别,完全不用 AI,本地化表头也认;每一行都带着真实频道名和规范链接直接落地,头像则通过一个限速的后台过程慢慢补齐。其他格式的 CSV 会回落到普通文本解析。
对于只有名字、没有链接的行,Aster 会尝试找出规范地址。播客走 Apple 的 iTunes Search,免费、确定、带严格前缀校验,绝不会把一档不相干的节目挂上去;其他平台走模型加服务端验证。之后是确认环节:你可以在真正保存之前改学科、改某一行的平台、补链接,最后一次性批量保存。文件过大会给出明确理由拒绝,超长名单会截断并诚实报数 —— 绝不悄悄丢掉。
10. 跨平台账号发现
添加一个人之后,Aster 会去找他在别处的账号。它只对新添加或新导入的人运行,不会在后台反复扫你的整个架子。
难的从来不是找到候选,而是不把同名的陌生人、开发者小号或者产品子品牌错认成本人。所以 Aster 一边收集有边界的第一方证据 —— 创作者自己声明的链接、官网上的跳转、简介 —— 一边让模型的原生 Web Search 取回带引用的候选。每一个来自检索的候选都必须带上真实的工具结果引用,以及一个受支持平台上的规范 URL。随后由一次独立判断把它归成同一人 / 相关 / 不同人,再由确定性规则挡掉不合理的名字跳跃、伪造引用、自相矛盾,以及雇主、项目和子品牌。AnthropicDev 和 Anthropic 始终是两回事。
结果怎么呈现给你
绝不打断你。有候选的创作者,头像上会出现一个小小的 + 标记;点开是一份「平台 + 用户名 + 链接」的清单,分成两栏:确认匹配(默认勾选)和可能匹配(默认不勾)。任何一条都不会自动合并。每个候选都可以单独「不再提醒」。右键 →「查找其他账号」可以手动重跑,每人有 10 分钟冷却,并且会给出四种诚实结果之一:找到了候选、没有账号通过证据门槛、这次检查不完整,或者你触发了频率限制。
跨语言的账号尽量不动用网页搜索:当一个人的小红书账号用的中文名和他的英文名毫无字面关系时,Aster 会走小红书自己的笔记索引 —— 别人写他的笔记里会 @ 到这个账号,而这个标记带着真实标识符。必须有若干条互相独立的笔记指向同一个账号,它才会被拿去检查;而且这一步只决定「看谁」,是否确认仍然只取决于这个账号自己的第一方证据。
11. 设置
一页,五个部分,从账号头像菜单进入。左侧那列灰色索引其实是标签页 —— 点哪一项就只显示哪一部分。
| 部分 | 里面有什么 |
|---|---|
| 个人资料 | 头像、昵称、@handle、简介。handle 是你的身份 —— 3–20 位,字母、数字和下划线 —— 和可以随便改的昵称是两回事。简介上限 160 字。 |
| 你的架子 | 关于你自己阅读的四个诚实数字:关注了多少创作者、背后是多少个人,他们近 7 天发了多少(用的就是「时间线」的同一个时间窗,所以这个数字你可以自己核对),这一周你的 Top Voice,以及你最常打开谁 —— 最后这项只在本机统计,从不同步。它们被排成普通的设置行,刻意不做成数据看板。 |
| 账号 | 邮箱、设置或修改密码、退出登录,以及你的方案 —— Pro 会显示续费日或试用到期日。「管理」打开的是 Stripe 自己的账单页面。 |
| 偏好 | 阅读提示的生成时间(只在这里设置)、隐藏学科名、删除前询问,以及全站语言开关。 |
| 数据与关于 | 把整个架子导出为 JSON、打开批量导入,以及关于 / 条款 / 隐私。 |
12.「宇宙」—— 即将推出
「宇宙」是「共享架子」这个功能,它还没上线。它存在的理由是 Aster 底下那个想法:一份好的关注名单,不该是一种特权。上线之后,你可以浏览别人的架子,看到它和你自己的差集,然后一次确认就把整份名单搬过来 —— 永远不会自动合并。
分享始终是一个选择。每个架子都带私密/公开开关,而每个架子的起点都是私密。
今天,每一个架子在数据库层面都是私密的。这不是一句关于意图的承诺:读取策略规定一行数据只有它的所有者能读,所以目前根本不存在别的用户看到你架子的路径。「宇宙」需要有意识地把这道门打开,配合明确的主动授权 —— 而这道门还没有打开。
13. 免费版与 Pro
这不是一条按功能数量排的阶梯。免费的是架子本身;Pro 是替你读这层架子的那一层。
| 方案 | 包含什么 |
|---|---|
| 免费 | 学科、平台、创作者数量都不限。所有平台都能收,包括小红书和微信公众号。添加时的名字头像识别、手动分组、标签、备注、星标、批量导入、全局搜索、JSON 导出。 |
| Pro —— $10 / 月,或 $99 / 年 | 「时间线」及其阅读提示、「动态」及其 AI 画像、所有平台(含付费源)的更新时间,以及跨平台账号发现。两种周期都含 7 天免费试用;需要先绑卡,第 7 天前取消不会产生任何扣费。 |
价格在全球统一用美元,中文站也一样 —— 只翻译周围的文字,从不换算币种或金额。
免费账号里,「时间线」和「动态」的入口依然在,点进去是一页说明它们做什么、并给出升级入口的页面。把它们藏起来的方案被否掉了:没人看得见的功能,也就没人会决定为它付费,而一个凭空消失的页面读起来像是产品坏了。订阅结束时不会删除任何东西 —— 架子原封不动,只是这层阅读能力被锁上。
14. 什么才算一次更新
这是整份文档里最重要的一张表,因为 Aster 在这里是有立场的。「上次更新」只有在它真的意味着这个人发布了作品时才有用 —— 所以转发、互动和灌水都刻意不算。一个在 LinkedIn 上只发短「动态」的人,在这里读起来会比在 LinkedIn 上安静得多。这是我们想要的读数,不是漏读。
| 平台 | 算 | 不算 | 数据来源 |
|---|---|---|---|
| YouTube | 常规 /videos 视频 | Shorts —— 时间、密度、「动态」、阅读提示,一律不计 | 免费 |
| X | 创作者自己写的内容,包括引用转推(他加了自己的评论) | 纯转推别人的内容 | 先走免登录路径;只有读不到的账号才回落到付费源 |
| GitHub | 发版优先(带上维护者自己写的 release notes),然后是新建仓库和新开的 PR / Issue;commit 按仓库折成一行 | star、fork、评论及其他互动 | 免费 |
| 只有长文 | 普通动态、转发、评论 | 免费 | |
| Substack | 已发布的文章,读自刊物自己的公开 RSS | — | 免费,无需密钥与登录 |
| 播客 | 已发布的单集 | — | 免费 |
| B 站 | 投稿视频;当视频日期缺失或已超过 30 天时,改读动态 | 转发与直播提示 | 视频免费;动态走付费补救 |
| 小红书 | 笔记 | — | 只有付费源 —— 没有免费的服务端路径 |
| 微信公众号 | 最近一次发布日;点这一行会列出那天的所有文章并带封面,因为公众号没有可打开的公开主页 | — | 内容走付费源;账号身份从文章页免费读出 |
GitHub 组织账号是特殊处理的:组织自己的动态流从不显示发版,所以 Aster 转而去读这个组织最活跃的那几个仓库 —— 这也是为什么 Hugging Face 和 OpenAI 在这里能显示出真实活动,而不是一片空白。有新版本发布时,创作者那一行会出现一个金色的「发版」标记;而且一次发版即使后面被日常提交盖过去,也仍然会出现在阅读提示里。
15. 你的数据
我们存了什么
- 登录用的邮箱,以及你自己填的 handle、昵称、头像和简介。
- 你收藏的学科、平台和创作者,连同你写的备注、标签、分组和星标。
- 偏好设置 —— 语言、生成时间、是否隐藏学科名、删除是否二次确认。
- 浏览器里的本地缓存,让架子秒开。设置里「你最常打开谁」只存在于这里,从不同步。
我们不做什么
没有广告。不出售、不共享个人数据。没有第三方分析追踪脚本。创作者的元信息 —— 名字、头像、更新时间 —— 是在服务端从他们的公开页面抓取的,这些请求不携带你的任何个人数据。批量导入时拖进来的截图在你自己的浏览器里做 OCR,从不离开你的设备。
导出与删除
设置 →「数据与关于」可以随时把整个架子导出为 JSON,不用提交任何申请。删掉一个创作者、平台或学科,它就从数据库里消失了。需要注销整个账号,请发邮件到 sco.boulevard@outlook.com。
正式条款是隐私政策,从 astershelf.space 的页脚打开。
16. 第三方服务清单
Aster 依赖的全部外部服务、它们各自负责什么、能看到什么。不在这份清单上的服务,Aster 不会向它发送任何东西。
基础设施
| 服务 | 它为 Aster 做什么 | 它能看到什么 |
|---|---|---|
| Vercel | 托管站点,运行全部服务端函数 | 常规请求信息 —— IP、User Agent、请求路径 |
| Supabase | 数据库与登录(邮箱密码、魔法链接、Google 登录) | 你的账号记录和你的架子。每一行只有它的所有者能读 |
| Cloudflare R2 | 存放创作者头像与资料图片,按内容哈希存储,相同图片只存一份 | 图片本身,不含任何账号标识 |
| Stripe | 订阅结算、账单门户与发票 | 你的姓名、邮箱和支付信息。卡片信息从不经过 Aster —— 结算页和账单页都是 Stripe 自己的页面 |
| Google Fonts | 提供全站唯一字体 Fraunces | 你浏览器的 IP,和任何字体请求一样 |
| Google(OAuth) | 可选的「使用 Google 继续」登录 | 只有你选择它时才会用到;Aster 只拿到你的邮箱地址 |
| jsDelivr 与 esm.sh | 分发两个前端库:Supabase 客户端,以及批量导入用的 OCR 引擎 | 你浏览器的 IP |
智能层
| 服务 | 它为 Aster 做什么 | 会发送什么 |
|---|---|---|
| DeepSeek | 产品里唯一的大模型。deepseek-v4-flash 负责「时间线」的阅读提示、主题标签与时长估计、「动态」画像,以及批量导入的文本解析;带原生 Web Search 的 deepseek-v4-pro 负责账号发现 | 内容标题与简短摘录、创作者名字、平台名,以及公开的主页证据。绝不包含你的邮箱、handle 或账号标识 |
| Groq | 视频本身没有字幕时做语音识别(whisper-large-v3-turbo),让阅读提示能说出这条视频到底在讲什么 | 一条公开内容的音频 |
| TikHub | 小红书与微信公众号的公开内容数据 —— 这是仅有的两个没有免费服务端路径的平台 | 正在读取的公开账号或文章地址 |
| twitterapi.io | 免登录 X 读不到的账号的发布时间。只在免费路径失败后才会尝试 | 正在读取的公开 X handle |
| unavatar.io | 页面本身没有可用头像时的兜底查找 | 正在查询的公开 handle 或域名 |
| Apple iTunes Search | 导入时按名字定位播客 —— 免费、无密钥、结果确定 | 被搜索的节目名称 |
上面每一个计费服务都挂在同一个总开关下,并且每一个都是「降级」而不是「报错」:没有模型密钥时,阅读提示回落成原始标题,导入回落成确定性解析,账号发现如实返回「未完成」,付费探测直接跳过。故障会以故障的样子出现 —— 「有 N/M 个来源没能读取」 —— 而绝不会被伪装成「今天没有更新」。
17. 我们刻意不做的事
- 没有第四层。Aster 不存文章、不做划线、不做稍后读。创作者之后的下一步是他们自己的页面。
- 没有排序算法、没有信息流推荐、没有未读数。「时间线」在你选定的时间窗内严格按时间排列。
- 没有 AI 过滤。模型只描述内容,从不决定你看到哪些。
- 没有互动数据。没有粉丝数、互动率、受众画像、投放报告。Aster 不是营销工具,也不会变成营销工具。
- 没有社交关系。没有点赞、评论和私信 —— 现在没有,「宇宙」上线后也不会有。
- 没有浅色模式。只有一套安静的深空配色,没有切换。
- 没有后台爬取。探测发生在你打开页面的时候;没人打开的账号不产生任何开销。
Aster 是一个人在公开构建的独立项目。如果这一页上有哪里写错了、说得不清楚、或者少了什么 —— 又或者你觉得上面某一条本身就该改 —— 欢迎写信到 sco.boulevard@outlook.com。