← 返回 Skills 市场
ainekomacx

Blog to Kindle

作者 ainekomacx · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
2674
总下载
0
收藏
3
当前安装
1
版本数
在 OpenClaw 中安装
/install blog-to-kindle
功能描述
Scrape blogs/essay sites and compile into Kindle-friendly EPUB with AI-generated cover. Use for requests to download blogs for Kindle, compile essays into ebook, or send blog archives to Kindle. Supports Paul Graham, Kevin Kelly, Derek Sivers, Wait But Why, Astral Codex Ten, and custom sites.
使用说明 (SKILL.md)

Blog to Kindle

Scrape blog/essay sites, compile into EPUB with cover art, and deliver to Kindle.

Quick Start

# 1. Fetch essays from a supported site
uv run scripts/fetch_blog.py --site paulgraham --output ./pg-essays

# 2. Generate cover (uses Nano Banana Pro)
# See nano-banana-pro skill for cover generation

# 3. Compile to EPUB with cover
uv run scripts/compile_epub.py --input ./pg-essays --cover ./cover.png --output essays.epub

# 4. Send to Kindle
uv run scripts/send_to_kindle.py --file essays.epub --kindle-email [email protected]

Workflow (MUST follow this order)

  1. Fetch - Download all essays/posts from the blog
  2. Generate Cover - Create cover art via Nano Banana Pro skill (DO NOT SKIP)
  3. Compile - Combine into EPUB with cover embedded
  4. Send - Email to Kindle address

⚠️ Always generate and include cover before sending. Never send without cover.

Supported Sites

Site Key URL Pattern
Paul Graham paulgraham paulgraham.com/articles.html
Kevin Kelly kevinkelly kk.org/thetechnium
Derek Sivers sivers sive.rs/blog
Wait But Why waitbutwhy waitbutwhy.com/archive
Astral Codex Ten acx astralcodexten.com

For unlisted sites, use --site custom --url \x3Carchive-url>.

Cover Generation

Use the nano-banana-pro skill to generate covers. Prompt template:

Book cover for '[Author Name]: [Subtitle]'. 
Minimalist design with elegant typography. 
[Brand color] accent. Clean white/cream background. 
Simple geometric or abstract motif related to [topic].
Professional literary feel. No photos, no faces.
Portrait orientation book cover dimensions.

Generate at 2K resolution for good quality without huge file size.

Kindle Delivery

Default Kindle address (Simon): [email protected]

Uses Mail.app via AppleScript to send. Ensure:

  • Sender email is on Kindle approved list
  • File under 50MB (EPUB compresses well)

State Tracking

State files stored in ~/.clawdbot/state/blog-kindle/:

  • {site}-last-fetch.json - Last fetch timestamp, article count
  • {site}-sent.json - List of sent article IDs

Use for incremental updates (only fetch new posts).

Manual Workflow (no scripts)

If scripts unavailable, follow this pattern:

  1. Fetch: curl archive page → parse article links → fetch each → convert to markdown
  2. Combine: Concatenate markdown with YAML frontmatter (title, author)
  3. Cover: Generate via Nano Banana Pro
  4. Convert: pandoc combined.md -o output.epub --epub-cover-image=cover.png --toc
  5. Send: AppleScript Mail.app with attachment

See references/manual-workflow.md for detailed steps.

安全使用建议
What to consider before installing and running this skill: - Missing runtime requirements: The scripts expect a macOS Mail.app/osascript environment and external tools (pandoc) and Python libraries (httpx, BeautifulSoup). Don’t run blindly — install and audit dependencies (pip install httpx bs4 or use a venv) and ensure pandoc is from a trusted source. - Replace the default Kindle address: The scripts and docs include a hard-coded Kindle email ([email protected]). Change it before sending anything — otherwise you may accidentally send content to someone else. - Keychain/API usage is implicit: The manual workflow shows retrieving GEMINI_API_KEY from the macOS keychain to drive a cover-generation skill. If you follow that path, inspect the nano-banana-pro skill and confirm how it uses any API keys before allowing it access to your keychain or secrets. - macOS-specific behavior: Sending relies on Mail.app via AppleScript. If you’re not on macOS or prefer not to use your Mail.app account, modify send_to_kindle.py to use an alternative (SMTP with explicit credentials that you control) or test via a local sandbox first. - Test safely: Run fetch/compile steps on a small site or a local HTML snapshot first. Inspect ~/.clawdbot/state/blog-kindle/ for what the skill writes. Avoid enabling any autonomous invocation or automation until you’re comfortable with behavior. - Provenance and audit: The skill's source/homepage is unknown. If you don’t know or trust the owner, review the included scripts line-by-line (they’re short) before use. Consider running in an isolated VM/container and not granting any keychain/API access until you verify the other skills it depends on. If you want, I can: (a) list the exact dependencies and commands to set up a safe environment to run this skill, (b) suggest a patched send_to_kindle.py that prompts for the Kindle address instead of using the hard-coded default, or (c) scan the scripts for specific strings/hosts to look for potential exfiltration points.
功能分析
Type: OpenClaw Skill Name: blog-to-kindle Version: 1.0.0 The skill is classified as suspicious due to the use of `osascript` in `scripts/send_to_kindle.py` and `references/manual-workflow.md`. While intended for legitimate email sending via Mail.app, this method is vulnerable to AppleScript injection if the input arguments (file path, email address, subject) are maliciously crafted by a compromised agent. Additionally, `scripts/fetch_blog.py` allows fetching content from arbitrary custom URLs, and `references/manual-workflow.md` demonstrates accessing `GEMINI_API_KEY` from the macOS Keychain, highlighting the agent's broad capabilities, even if for a stated purpose.
能力评估
Purpose & Capability
The name/description (scrape blogs → EPUB → Kindle) matches the included scripts. However the skill fails to declare required runtime pieces the scripts clearly need (pandoc binary, Python packages like httpx and BeautifulSoup, and a macOS Mail/osascript environment). The use of an external 'nano-banana-pro' skill for cover generation is expected for cover creation but is not declared as a dependency.
Instruction Scope
SKILL.md and references/manual-workflow.md instruct actions beyond simple fetching/compiling: AppleScript via Mail.app (macOS-only) to send mail, manual keychain access in the cover-generation example (security find-generic-password to fetch GEMINI_API_KEY), and an instruction to always generate a cover via another skill. Those steps access system components (keychain, Mail.app) and call other skills/tools that are not listed as required, increasing scope and potential for accidental exposure.
Install Mechanism
There is no install spec (instruction-only) which lowers risk, but the package contains runnable Python scripts. The repository does not declare or install dependencies (httpx, bs4), nor does it declare that pandoc and osascript/Mail.app are required. Lack of declared dependencies is a usability and security concern because users may run scripts in an environment that behaves differently than expected.
Credentials
The skill declares no environment variables or credentials, yet the manual workflow shows retrieving GEMINI_API_KEY from keychain and the SKILL.md refers to `nano-banana-pro` (which likely needs an API key). The most notable red flag is the hard-coded default Kindle email ([email protected]) embedded in documentation and scripts; that could cause accidental delivery to a third party if the user doesn't replace it. No other broad credentials or system paths are requested by the scripts themselves, but implicit reliance on keychain/API keys is present without justification.
Persistence & Privilege
The skill is not always-enabled and does not request elevated privileges. State is written only to a user-scoped path (~/.clawdbot/state/blog-kindle/), which is reasonable for tracking fetch/sent status. It does not modify other skills or system-wide configuration.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install blog-to-kindle
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /blog-to-kindle 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: Scrape blogs/essay sites and compile into Kindle-friendly EPUB with AI-generated cover.
元数据
Slug blog-to-kindle
版本 1.0.0
许可证
累计安装 3
当前安装数 3
历史版本数 1
常见问题

Blog to Kindle 是什么?

Scrape blogs/essay sites and compile into Kindle-friendly EPUB with AI-generated cover. Use for requests to download blogs for Kindle, compile essays into ebook, or send blog archives to Kindle. Supports Paul Graham, Kevin Kelly, Derek Sivers, Wait But Why, Astral Codex Ten, and custom sites. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 2674 次。

如何安装 Blog to Kindle?

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

Blog to Kindle 是免费的吗?

是的,Blog to Kindle 完全免费(开源免费),可自由下载、安装和使用。

Blog to Kindle 支持哪些平台?

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

谁开发了 Blog to Kindle?

由 ainekomacx(@ainekomacx)开发并维护,当前版本 v1.0.0。

💬 留言讨论