← 返回 Skills 市场
yumyumtum

Yum NoteBook

作者 TommyYanPS · GitHub ↗ · v0.1.1 · MIT-0
cross-platform ✓ 安全检测通过
45
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install yumnb
功能描述
Yum NoteBook — a local-first NotebookLM alternative for AI agents, built for real source capture. Ingest a web URL, YouTube video, or screenshot, then genera...
使用说明 (SKILL.md)

Yum NoteBook (yumnb) — Source → Summary + Talk-show + Slides

A local-first NotebookLM alternative for AI agents, built for real source capture.

What It Does

Given a source (URL / YouTube / screenshot / raw text), creates one folder per request under \x3Coutput_dir>/\x3CYYYYMMDD-HHMM-slug>/ containing:

  1. source/ — raw material (downloaded HTML, transcript, screenshot copy …)
  2. summary.md — AI summary (one-liner / key points / facts / takeaways)
  3. talkshow.txt + talkshow.mp3 — dual-host script + MP3 (edge-tts)
  4. deck.pptx — slide deck (bullets, tables, flow, images, summary)
  5. links.json — record of what was generated and any share links

This “one request = one folder” model is intentional: many such folders can accumulate into a local knowledge base that can be read, searched, narrated, and presented later.

If a webhook is configured, a notification is posted to Slack / Discord / Teams Workflow. If deliver.provider is configured, yumnb can also push the finished outputs directly to an IM/chat surface through OpenClaw / Hermes (Telegram / Discord / Teams / Slack / etc.).

You can position yumnb as a local-first, polite alternative to NotebookLM: it keeps notebooks and generated artifacts as ordinary local files by default, then only uploads or delivers them if you explicitly configure that.

Two Ways to Run

A. Fully-automatic (built-in AI provider)

Configure ai.provider in config.yaml (openai / anthropic / gemini / ollama / cli) and run:

python -m yumnb auto "\x3CURL or path>" [--title "short name"]

This runs ingest → AI summary → AI slide-plan → TTS → PPT → publish in one shot.

B. Step-by-step (agent-driven — you bring your own LLM)

If you're driving this from an agent CLI (GitHub Copilot CLI, Claude Code, Cursor, Aider, …), set ai.provider: none and call the subcommands individually. The agent reads the source, writes summary.md and deck.json itself, then asks yumnb to render TTS / PPT / publish.

# 1) Pull raw material
python -m yumnb ingest "\x3CURL>" [--title "..."]
#    → prints the note folder path

# 2) (Agent writes \x3Cfolder>/summary.md following the schema in README)

# 3) Render dual-host MP3 from a talkshow script the agent wrote
python -m yumnb tts "\x3Cfolder>/talkshow.txt" --output "\x3Cfolder>/talkshow.mp3"

# 4) Render PPT from a deck.json the agent wrote
python -m yumnb ppt "\x3Cfolder>/deck.json" --output "\x3Cfolder>/deck.pptx"

# 5) Finalize + optional webhook / IM delivery
python -m yumnb publish "\x3Cfolder>"

Schemas the Agent Writes

summary.md

# \x3Ctitle>

> **Source**: \x3Curl or file>
> **Type**: youtube|url|image|text
> **Length**: \x3Cduration or word count>

## 🎯 One-line summary

## 📌 Key points (3-5)

## 🔑 Facts / data

## 💡 Takeaways

## 🤔 Open questions

deck.json (rendered to deck.pptx)

{
  "title": "Deck title",
  "subtitle": "Source / date",
  "slides": [
    {"type": "title",      "title": "...", "subtitle": "..."},
    {"type": "bullets",    "title": "...", "bullets": ["...", "..."]},
    {"type": "table",      "title": "...", "headers": ["A","B"], "rows": [["1","2"]]},
    {"type": "flow",       "title": "...", "steps": ["Step 1","Step 2","Step 3"]},
    {"type": "image",      "title": "...", "image_path": "/abs/path.png", "caption": "..."},
    {"type": "two_column", "title": "...", "left": "bullet text", "image_path": "..."},
    {"type": "summary",    "title": "...", "text": "..."}
  ]
}

Recommended: 5–12 slides — title, 1-2 overview, 3-6 main (bullets/table/ flow/image), 1 summary. Reuse images from source/ (YouTube thumbnail, HTML hero image, original screenshot).

talkshow.txt

Lines tagged with [\x3CSpeakerName>] where \x3CSpeakerName> matches a voice configured in config.yamltts.voices. Example:

[HostA] Welcome to the show — today we're chewing on…
[HostB] And by chewing I mean ruthlessly mocking, right?
[HostA] Pretty much.

Prerequisites

  • Python 3.9+
  • Preferred first-run: ./scripts/bootstrap.sh
  • Or manual: pip install -r requirements.txt
  • Plus the AI SDK matching your provider (only one): openai / anthropic / google-generativeai / ollama — or none if you use provider: cli / none.

Notes

  • edge-tts uses Microsoft's free online voices. No API key required.
  • The intro/outro jingle is generated procedurally in pure Python — no external assets bundled.
  • YouTube ingest order is: yt-dlp manual subtitles → yt-dlp auto subtitles → youtube-transcript-api fallback → description-only fallback.
  • This skill carries no platform/tenant/organization-specific defaults. All endpoints and credentials come from config.yaml or environment variables (YUMNB_*, OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.).
  • Direct IM delivery is channel-agnostic: configure deliver.provider: openclaw (or hermes) plus deliver.openclaw.channel + target to send the finished note to Telegram, Discord, Teams, Slack, and other supported surfaces via the local bridge.

Language

config.yamllanguage (default en). Influences both AI prompt language and the default TTS voice pair. Override per-run with --language en|zh|ja|es|fr|de|....

Built-in default voice pairs (male + female, edge-tts):

language HostA (male) HostB (female)
en en-US-AndrewNeural en-US-AvaNeural
zh zh-CN-YunyangNeural 云飞 zh-CN-XiaoxiaoNeural 小晓
ja ja-JP-KeitaNeural ja-JP-NanamiNeural
es es-ES-AlvaroNeural es-ES-ElviraNeural
fr fr-FR-HenriNeural fr-FR-DeniseNeural
de de-DE-ConradNeural de-DE-KatjaNeural

Override any pair (or add new languages) under tts.language_voices. Setting tts.voices directly always wins.

Cloud upload (OneDrive / Google Drive / S3 / Dropbox / …)

config.yamlupload.provider: rclone makes publish upload the generated mp3 / pptx / summary to your configured cloud and inline the shareable URLs in links.json and the notification payload — so users get one-click mp3 + ppt links instead of local file:// URIs.

upload:
  provider: rclone
  rclone:
    remote: "onedrive:yumnb"   # or gdrive:yumnb, s3:bucket/yumnb, etc.
    share: true

Set it up once with rclone config (see https://rclone.org). yumnb delegates everything to rclone so the same skill works with every backend rclone supports.

安全使用建议
Before installing, review config.yaml and leave ai.provider, upload.provider, notify.webhook_url, and deliver.provider disabled unless you trust the destination. Do not use provider: cli, --fetcher, custom OpenClaw binaries, rclone extras, or a OneDrive uploader path unless you trust the exact command or file. Disable TTS for confidential notes, since edge-tts sends narration text to Microsoft. Prefer pinning dependencies with a lockfile for repeatable installs.
能力标签
cryptorequires-sensitive-credentials
能力评估
Purpose & Capability
The artifacts are coherent: the skill ingests user-supplied URLs, YouTube links, screenshots, files, or text, writes a local notebook folder, and can generate summaries, audio, slides, links, uploads, notifications, and chat delivery. These capabilities match the stated NotebookLM-style purpose.
Instruction Scope
The README, SKILL.md, and config example disclose most sensitive flows, including external AI providers, Microsoft edge-tts, rclone/cloud upload, webhooks, OpenClaw/Hermes delivery, custom fetchers, and a CLI AI provider. The broad CLI/fetcher hooks are powerful but user-configured rather than hidden or automatic.
Install Mechanism
Installation is a normal user-invoked Python virtualenv/bootstrap flow, but requirements use lower-bound dependency constraints rather than pinned versions or a lockfile.
Credentials
Network, local file, subprocess, and credential use are proportionate to the advertised source-capture and publishing workflow, with local-first defaults for AI, upload, notify, and delivery; users should still treat enabled providers as data recipients.
Persistence & Privilege
The skill persists generated notebooks under the configured output directory and does not install background services or privilege escalation mechanisms. Optional cloud/chat delivery and configured local commands run only when selected by config or command-line options.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install yumnb
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /yumnb 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.1
Patch release: local-first NotebookLM alternative tagline, clearer user flow, stronger source extraction messaging, README polish.
v0.1.0
First public release: packaged modules, smoke tests, OpenClaw/Hermes delivery, local-first NotebookLM alternative.
元数据
Slug yumnb
版本 0.1.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Yum NoteBook 是什么?

Yum NoteBook — a local-first NotebookLM alternative for AI agents, built for real source capture. Ingest a web URL, YouTube video, or screenshot, then genera... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 45 次。

如何安装 Yum NoteBook?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install yumnb」即可一键安装,无需额外配置。

Yum NoteBook 是免费的吗?

是的,Yum NoteBook 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Yum NoteBook 支持哪些平台?

Yum NoteBook 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Yum NoteBook?

由 TommyYanPS(@yumyumtum)开发并维护,当前版本 v0.1.1。

💬 留言讨论