| name | reading-club |
| description | Fetch articles and save them to a local reading buffer, or compile all unsent articles into a Kindle-optimized PDF digest and email it to Kindle. Use when the user provides URLs to save for reading, or says "send" / "send to kindle" to compile and dispatch the digest.
|
| metadata | {"author":"dandaka","version":"1.0"} |
| allowed-tools | Bash(md-to-pdf*), Bash(gog gmail*), Bash(mv*), WebFetch, Read, Write, Edit, Glob |
Reading Club
Manages a personal reading buffer: fetch articles → buffer locally → compile PDF → send to Kindle.
Invocation
/reading-club https://url1.com https://url2.com # Fetch & buffer articles
/reading-club send # Build PDF digest + send to Kindle
Base Directory
All files live in: ~/projects/knowledge-base/reading/
index.md — tracking table (title, url, date added, sent status)
YYYY-MM-DD-slug.md — individual fetched articles
digest-YYYY-MM-DD.pdf — compiled digests (kept for reference)
Fetch Mode
When args contain URLs (not "send"):
- For each URL:
a. Try
WebFetch to get the article content
b. If content is poor/empty, use agent-browser skill as fallback
- Extract: title, clean body text → Markdown
- Save as
reading/YYYY-MM-DD-slug.md where slug = last URL path segment, lowercased, hyphens
- Create
reading/index.md if it doesn't exist (with header row)
- Append entry to index:
N. [Title](url) — YYYY-MM-DD
Article MD format
# Article Title
**Source:** https://original-url.com
**Fetched:** YYYY-MM-DD
---
[article body in clean markdown]
Send Mode
When args = "send":
- Read
reading/index.md, find all entries without ✅
- Load their
.md files from reading/
- Build combined markdown
reading/_digest-tmp.md:
- Header:
# Reading Digest — YYYY-MM-DD
- Article sections: one per article, full body, separated by
---
- Each article starts with its H1 title and source URL
- Run
md-to-pdf with Kindle A6 CSS (see style spec below)
- Save output as
reading/digest-YYYY-MM-DD.pdf
- Send via
gog gmail send using ni-gate (see Sending section below). Use a unique filename for the attachment (e.g. append -vN) to avoid Kindle caching the old version
- Update
reading/index.md: append ✅ YYYY-MM-DD to each sent entry
- Delete temp file
reading/_digest-tmp.md
PDF Style — Kindle A6
Pass this CSS inline to md-to-pdf via a config or --stylesheet flag:
@page {
size: 108mm 144mm;
margin: 8mm;
}
body {
font-family: Georgia, 'Times New Roman', serif;
font-size: 12pt;
line-height: 1.5;
color: #000;
max-width: 100%;
}
h1 {
font-size: 16pt;
margin-top: 1em;
margin-bottom: 0.5em;
page-break-before: always;
}
h1:first-of-type {
page-break-before: avoid;
}
h2 { font-size: 14pt; }
h3 { font-size: 12pt; }
p { margin: 0.4em 0; }
a { color: #000; text-decoration: underline; }
table {
width: 100%;
border-collapse: collapse;
font-size: 10pt;
}
th, td {
border: 1px solid #ccc;
padding: 2mm 3mm;
text-align: left;
}
hr {
border: none;
border-top: 1px solid #ccc;
margin: 1em 0;
}
img { max-width: 100%; }
Running md-to-pdf
IMPORTANT: Use $HOME not ~ for the stylesheet path — tilde is NOT expanded by md-to-pdf and will silently fail, causing the default tiny-font style to be used instead.
md-to-pdf \
--stylesheet "$HOME/.claude/skills/reading-club/kindle-a6.css" \
--pdf-options '{"width":"108mm","height":"144mm","margin":{"top":"8mm","right":"8mm","bottom":"8mm","left":"8mm"}}' \
reading/_digest-tmp.md
Index File Format
# Reading Club Index
1. [Article Title](https://url) — 2026-02-20
2. [Another Article](https://url) — 2026-02-19 ✅ 2026-02-21
Unsent: no ✅. Sent: append ✅ YYYY-MM-DD.
Sending via gog gmail
Send the PDF using ni-gate to inject secrets, then call gog gmail send via a shell script.
Do NOT use source ~/.claude/.env — vars will be empty. Do NOT pass ~ in paths.
cat > /tmp/send-digest.sh << 'EOF'
gog gmail send \
--account "$GOOGLE_ACCOUNT" \
--to "$KINDLE_EMAIL" \
--subject "Reading Digest YYYY-MM-DD" \
--body "Reading digest — N articles." \
--attach "/absolute/path/to/reading/digest-YYYY-MM-DD.pdf"
EOF
chmod +x /tmp/send-digest.sh
ni-gate run KINDLE_EMAIL GOOGLE_ACCOUNT -- sh /tmp/send-digest.sh