Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ B站 页面上的 AI 判断照上表:值得留绿、可清理红、拿不准
- ✦ 放在会走到 AI 请求的入口上:「✦ AI 打标签」「✦ 问 AI」「✦ 继续问」、侧边栏的「✦ AI 总结」。纯管理用的弹窗不加 ✦,比如「标签管理」。
- 说明文字不要散在外面。改成按钮后面加一个琥珀色小点,点开以后说明写在里面,通常放进输入框的 placeholder。

- 设置页各节按这个顺序排:读字幕、笔记格式、观看进度、AI 平台、分拣台、MCP、Obsidian、数据与存储、高级。用到 AI 的三节(AI 平台、分拣台、MCP)挨在一起,和 AI 无关的观看进度排在它们前面;MCP 排在分拣台后面,因为它的开关管分拣台和收藏。为什么:按和 AI 有没有关系分组,找 AI 相关的设置不用跳着看(2026-11-10 用户定)。
- 设置页「AI 平台」的「视频」「网页」是页签,照 B站 空间页的页签:16px,当前的加粗、下面 3px 粉线,旁边小灰字写用在哪(「B站 · YouTube」「其他网站」),一次只显示一组;左右方向键切换。每次打开设置页在「视频」。为什么:两组的项同名,摆在一起分不清在改哪一组(2026-10-22 用户定)。
- 设置页里只在另一个开关开着时才起作用的开关(「允许 Agent 读我的收藏、关注和历史」之于「允许 MCP 连接」,「允许 Agent 改分拣台」和「允许 Agent 改我的收藏」之于前两个,按这个顺序排)放在那一行下面,左边缩进 24px,两行之间没有分隔线。上面那个关着时它变灰、不能点,悬停写「先打开「允许 MCP 连接」」(关着的有两个时写最上面那个),说明文字里也写这一句;它自己的开关状态照存,上面那个再打开时恢复原样,不自动打开也不清掉。为什么:看得出从属关系,又不让关掉上层就丢了下层的选择(2026-11-06 用户定)。

Expand Down
134 changes: 67 additions & 67 deletions extension/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ <h1><span class="brand-mark" aria-hidden="true"></span>MoonDigest<small>/ 设置
<nav class="toc" id="toc" aria-label="设置目录">
<a href="#basic"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M7 13h4M13 13h4M7 16h10"/></svg><span class="lbl">读字幕</span><span class="dot" hidden></span></a>
<a href="#note"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 14h8M8 17h5"/></svg><span class="lbl">笔记格式</span><span class="dot" hidden></span></a>
<a href="#ai"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2 5 5 2-5 2-2 5-2-5-5-2 5-2z"/></svg><span class="lbl">AI 平台</span><span class="dot" hidden></span><span id="aiPill" class="pill off">未配置</span></a>
<a href="#seen"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg><span class="lbl" data-text="seen">观看进度</span><span class="dot" hidden></span></a>
<a href="#ai"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2 5 5 2-5 2-2 5-2-5-5-2 5-2z"/></svg><span class="lbl">AI 平台</span><span class="dot" hidden></span><span id="aiPill" class="pill off">未配置</span></a>
<a href="#triage"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/></svg><span class="lbl">分拣台</span><span class="dot" hidden></span></a>
<a href="#mcp"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 2v5M15 2v5M6 7h12v5a6 6 0 0 1-12 0zM12 18v4"/></svg><span class="lbl">MCP</span><span class="dot" hidden></span></a>
<a href="#obsidian"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M8 3l8 2 4 8-4 8H8l-4-8z"/></svg><span class="lbl">Obsidian</span><span class="dot" hidden></span><span id="obsidianPill" class="pill off">关</span></a>
<a href="#data"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.7 3.6 3 8 3s8-1.3 8-3V5M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"/></svg><span class="lbl">数据与存储</span><span class="dot" hidden></span></a>
<a href="#mcp"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 2v5M15 2v5M6 7h12v5a6 6 0 0 1-12 0zM12 18v4"/></svg><span class="lbl">MCP</span><span class="dot" hidden></span></a>
<a href="#more"><svg class="ico" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0 5 5L22 14l-8 8-2.3-2.3a4 4 0 0 0-5-5L4 12l8-8z"/></svg><span class="lbl">高级</span><span class="dot" hidden></span></a>
</nav>

Expand Down Expand Up @@ -136,6 +136,47 @@ <h2>笔记格式</h2>
</div>
</section>

<section class="sec" id="seen" data-name="观看进度" data-text="seen">
<div class="sec-head">
<h2 data-text="seen">观看进度</h2>
<p>仅 B站。</p>
</div>
<div class="rows">
<div class="row">
<div class="lab"><label class="name" for="seenShow">封面显示</label><p class="hint">按你的 B站历史记录,在分拣台和 B站页面的封面上标出看到哪里。</p><p class="note">按最后停下的位置算,同一个视频记最高的一次(B站重看会冲回开头,这里不会)。开着时替换 BewlyCat 的进度条和已看标记。关闭时不读历史,打开后只在打开分拣台或 B站页面时读新记录,<span data-seen-limits></span>。</p></div>
<div class="ctl">
<select id="seenShow">
<option value="off">关</option>
<option value="bar">进度条</option>
<option value="mark">看完了标记</option>
<option value="both">进度条和看完了标记</option>
</select>
</div>
</div>
<div class="row" data-seen-mark-row>
<div class="lab"><label class="name" for="seenThreshold">看到多少算看完了</label><p class="hint">到了的带 ✓,样式在「看完了标记样式」里选;没到的只在角上写浅色小字。</p></div>
<div class="ctl"><input id="seenThreshold" type="number" step="1" /> %</div>
</div>
<div class="row" data-seen-mark-row>
<div class="lab"><label class="name" for="seenStyle">看完了标记样式</label><p class="hint">角标:写在封面角上。封面遮罩:封面盖一层暗色,字写在正中。</p></div>
<div class="ctl">
<select id="seenStyle">
<option value="badge">角标</option>
<option value="veil">封面遮罩</option>
</select>
</div>
</div>
<div class="row wide seen-demo" id="seenDemo">
<div class="covers" aria-hidden="true">
<figure><div class="cover c1"><span class="seen-tag" data-text="seenDone">✓ 看完了</span><i style="width: 100%"></i></div><figcaption>看到 100%</figcaption></figure>
<figure data-seen-at="full"><div class="cover c2"><span class="seen-tag">✓ 看到 80%</span><i style="width: 80%"></i></div><figcaption>达到设定比例</figcaption></figure>
<figure data-seen-at="half"><div class="cover c3"><span class="seen-tag faint-tag">看到 40%</span><i style="width: 40%"></i></div><figcaption>没到比例,淡色</figcaption></figure>
</div>
<p class="hint">进度条和 B站自己的一样。</p>
</div>
</div>
</section>

<section class="sec" id="ai" data-name="AI 平台">
<div class="sec-head">
<h2>AI 平台</h2>
Expand Down Expand Up @@ -192,47 +233,6 @@ <h2>AI 平台</h2>
</div>
</section>

<section class="sec" id="seen" data-name="观看进度" data-text="seen">
<div class="sec-head">
<h2 data-text="seen">观看进度</h2>
<p>仅 B站。</p>
</div>
<div class="rows">
<div class="row">
<div class="lab"><label class="name" for="seenShow">封面显示</label><p class="hint">按你的 B站历史记录,在分拣台和 B站页面的封面上标出看到哪里。</p><p class="note">按最后停下的位置算,同一个视频记最高的一次(B站重看会冲回开头,这里不会)。开着时替换 BewlyCat 的进度条和已看标记。关闭时不读历史,打开后只在打开分拣台或 B站页面时读新记录,<span data-seen-limits></span>。</p></div>
<div class="ctl">
<select id="seenShow">
<option value="off">关</option>
<option value="bar">进度条</option>
<option value="mark">看完了标记</option>
<option value="both">进度条和看完了标记</option>
</select>
</div>
</div>
<div class="row" data-seen-mark-row>
<div class="lab"><label class="name" for="seenThreshold">看到多少算看完了</label><p class="hint">到了的带 ✓,样式在「看完了标记样式」里选;没到的只在角上写浅色小字。</p></div>
<div class="ctl"><input id="seenThreshold" type="number" step="1" /> %</div>
</div>
<div class="row" data-seen-mark-row>
<div class="lab"><label class="name" for="seenStyle">看完了标记样式</label><p class="hint">角标:写在封面角上。封面遮罩:封面盖一层暗色,字写在正中。</p></div>
<div class="ctl">
<select id="seenStyle">
<option value="badge">角标</option>
<option value="veil">封面遮罩</option>
</select>
</div>
</div>
<div class="row wide seen-demo" id="seenDemo">
<div class="covers" aria-hidden="true">
<figure><div class="cover c1"><span class="seen-tag" data-text="seenDone">✓ 看完了</span><i style="width: 100%"></i></div><figcaption>看到 100%</figcaption></figure>
<figure data-seen-at="full"><div class="cover c2"><span class="seen-tag">✓ 看到 80%</span><i style="width: 80%"></i></div><figcaption>达到设定比例</figcaption></figure>
<figure data-seen-at="half"><div class="cover c3"><span class="seen-tag faint-tag">看到 40%</span><i style="width: 40%"></i></div><figcaption>没到比例,淡色</figcaption></figure>
</div>
<p class="hint">进度条和 B站自己的一样。</p>
</div>
</div>
</section>

<section class="sec" id="triage" data-name="分拣台">
<div class="sec-head">
<h2 data-text="triage">B站分拣台</h2>
Expand Down Expand Up @@ -270,6 +270,30 @@ <h2 data-text="triage">B站分拣台</h2>
</div>
</section>

<section class="sec" id="mcp" data-name="MCP">
<div class="sec-head">
<h2>MCP</h2>
</div>
<div class="rows">
<div class="row">
<div class="lab"><label class="name" for="mcpEnabled">允许 MCP 连接</label><p class="hint">让 Cursor、Codex、Claude Code 等 Agent 通过本机的 <a href="https://github.com/PathGao/MoonDigest/blob/main/mcp/README.md" target="_blank">MCP 服务</a> 搜索 B站和 YouTube 视频,读视频的字幕、评论和画面。用 MCP 时再打开:开着时插件每分钟试连一次本机 127.0.0.1:47823,连上后插件后台会一直运行。不用时关掉,能省一点电和内存。</p></div>
<div class="ctl"><input id="mcpEnabled" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpPersonalData">允许 Agent 读我的收藏、关注和历史</label><p class="hint">Agent 还能通过 MCP 读你 B站的收藏夹和里面的视频(带分拣台的标签、备注和 AI 判断)、关注和分组(带 UP 标签)、观看历史、稍后再看,以及 YouTube 的稍后观看、赞过的视频、订阅、历史记录和 YouTube 播放列表。只读,不改 B站、YouTube 和 MoonDigest 里的任何东西;不含 API Key 和 AI 对话。要先打开「允许 MCP 连接」。</p></div>
<div class="ctl"><input id="mcpPersonalData" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpWrites">允许 Agent 改分拣台</label><p class="hint">Agent 还能通过 MCP 写分拣台里的 AI 判断、保留、备注和视频标签,分拣台里按 U 撤销。取消收藏、移动和复制它只能提议,在分拣台里由你确认后才改 B站。要先打开「允许 Agent 读我的收藏、关注和历史」。</p></div>
<div class="ctl"><input id="mcpWrites" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpCollectionWrite">允许 Agent 改我的收藏</label><p class="hint">Agent 还能通过 MCP 把视频加进或移出你的 B站稍后再看、YouTube 稍后观看和你自己建的 YouTube 播放列表。一次不超过 20 个,一个一个改,改前改后各读一次,被限流就停。要先打开「允许 Agent 读我的收藏、关注和历史」。</p></div>
<div class="ctl"><input id="mcpCollectionWrite" type="checkbox" class="switch" /></div>
</div>
</div>
</section>

<section class="sec" id="obsidian" data-name="Obsidian">
<div class="sec-head">
<h2>Obsidian</h2>
Expand Down Expand Up @@ -338,30 +362,6 @@ <h2>数据与存储</h2>
</div>
</section>

<section class="sec" id="mcp" data-name="MCP">
<div class="sec-head">
<h2>MCP</h2>
</div>
<div class="rows">
<div class="row">
<div class="lab"><label class="name" for="mcpEnabled">允许 MCP 连接</label><p class="hint">让 Cursor、Codex、Claude Code 等 Agent 通过本机的 <a href="https://github.com/PathGao/MoonDigest/blob/main/mcp/README.md" target="_blank">MCP 服务</a> 搜索 B站和 YouTube 视频,读视频的字幕、评论和画面。用 MCP 时再打开:开着时插件每分钟试连一次本机 127.0.0.1:47823,连上后插件后台会一直运行。不用时关掉,能省一点电和内存。</p></div>
<div class="ctl"><input id="mcpEnabled" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpPersonalData">允许 Agent 读我的收藏、关注和历史</label><p class="hint">Agent 还能通过 MCP 读你 B站的收藏夹和里面的视频(带分拣台的标签、备注和 AI 判断)、关注和分组(带 UP 标签)、观看历史、稍后再看,以及 YouTube 的稍后观看、赞过的视频、订阅、历史记录和 YouTube 播放列表。只读,不改 B站、YouTube 和 MoonDigest 里的任何东西;不含 API Key 和 AI 对话。要先打开「允许 MCP 连接」。</p></div>
<div class="ctl"><input id="mcpPersonalData" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpWrites">允许 Agent 改分拣台</label><p class="hint">Agent 还能通过 MCP 写分拣台里的 AI 判断、保留、备注和视频标签,分拣台里按 U 撤销。取消收藏、移动和复制它只能提议,在分拣台里由你确认后才改 B站。要先打开「允许 Agent 读我的收藏、关注和历史」。</p></div>
<div class="ctl"><input id="mcpWrites" type="checkbox" class="switch" /></div>
</div>
<div class="row sub">
<div class="lab"><label class="name" for="mcpCollectionWrite">允许 Agent 改我的收藏</label><p class="hint">Agent 还能通过 MCP 把视频加进或移出你的 B站稍后再看、YouTube 稍后观看和你自己建的 YouTube 播放列表。一次不超过 20 个,一个一个改,改前改后各读一次,被限流就停。要先打开「允许 Agent 读我的收藏、关注和历史」。</p></div>
<div class="ctl"><input id="mcpCollectionWrite" type="checkbox" class="switch" /></div>
</div>
</div>
</section>

<section class="sec" id="more" data-name="高级">
<div class="sec-head">
<h2>高级</h2>
Expand Down
Loading