一键导入
medium-reader
Receives Medium digest emails, filters clickbait, and captures worthy articles verbatim to Memex inbox via archive sources
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Receives Medium digest emails, filters clickbait, and captures worthy articles verbatim to Memex inbox via archive sources
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Author one loop-harness planning ticket in the format the implement-ticket loop consumes. Use when asked to plan a feature, scope a change, draft a ticket, or turn a described problem into a ticket the loop can run. Writes one ticket file to the configured plans directory.
Run one planning ticket through the loop lifecycle - perceive (ledger + git reconcile), implement tests-first, gate via `loopctl stamp`, self-review, adversarial review, commit, close via `loopctl finish`. Use when asked to implement the next ticket, run the loop, or continue autonomous ticket implementation.
Generate static artwork/illustrations for a repo with Nano Banana Pro (aka "nano banana", Gemini 3 Pro Image) via the bundled generate_art.py — craft a detailed prompt, run the script, view the result, iterate. Use this whenever the user wants to create, generate, or regenerate a visual asset for a project: an architecture diagram, portrait, card/illustration, icon, splash, or any image that lands as a PNG in the repo — even if they don't name the tool or just say "make me an image / a picture of X". Do NOT trigger for application runtime image needs, or for editing source code rather than producing an image file.
Remove a solid background from an image and write a transparent PNG, using the bundled remove_background.py. Use this whenever the user wants to knock out, drop, or make transparent the background of a logo, banner, icon, or other static image asset in a repo, or to trim an asset to its content and pad it. Pairs with generate-art: generate a flat asset, then key its background here. Do NOT trigger for photo cutouts needing subject segmentation, for runtime image processing, or for editing source code rather than an image file.
Teach the user a new codebase, technology, framework, or system by walking through it from high-level architecture down to implementation details using a paginated, layered approach. Use this skill whenever the user wants to understand how something works, needs onboarding onto a new technology, asks you to explain a system end-to-end, or says things like "walk me through", "explain how X works", "I need to learn X", "teach me", or "help me understand". Also use when the user shares documentation and asks to be taught from it.
Write or refactor project documentation — tutorials, how-to guides, reference pages, and explanation articles — using the Diátaxis framework. Enforces strict mode purity (a tutorial is not a how-to is not a reference is not an explanation), Orwell's six rules for clear prose, and a ladder-of-abstraction rhythm where concrete examples open and close each piece. Targets HUMAN readers — not agents — so emphasizes plain, everyday English over jargon. Use whenever the user asks to write, draft, refactor, edit, improve, or polish documentation — phrases like "write a tutorial", "draft a how-to", "turn this into a reference", "document this feature", "rewrite this doc", "improve the README", "add user docs", "document the API", "explain how X works for newcomers", or any task that produces user-facing prose for a software project. Triggers even when the user does not say "Diátaxis" explicitly — any doc-writing or doc-refactoring task gets this lens.
| name | medium-reader |
| description | Receives Medium digest emails, filters clickbait, and captures worthy articles verbatim to Memex inbox via archive sources |
| version | 1.1.0 |
| metadata | {"hermes":{"tags":["productivity","medium","curation","articles","memex"],"category":"productivity"}} |
Activate when you receive a Medium digest email containing article links and summaries. The skill evaluates each article, filters out clickbait, and captures worthy articles verbatim to the Memex inbox vault.
app:hermes:medium-reader:*memex_*). Do not shell out to curl.Parse the email content for Medium article URLs. These typically look like:
https://medium.com/...https://<publication>.medium.com/...pub.towardsai.net, betterprogramming.pub)?source=email or similar tracking parametersIgnore non-article links: unsubscribe, preferences, Medium homepage, tracking pixels, social media links.
For each article, note the URL and any title/description visible in the email.
For each article, evaluate the title and description from the email.
SKIP if any of these patterns match:
KEEP if:
For each article that passes the filter:
Generate the idempotency key: medium-reader:article:<url_slug> where <url_slug> is derived from the article URL (strip protocol, replace / with -, remove query params). This key MUST be generated BEFORE any navigation.
Check if already captured:
memex_kv_get(key="app:hermes:medium-reader:article:{url_slug}")
If it exists, skip this article.
For each new worthy article, attempt sources in this order. If one fails (bot wall, empty page, "Security Verification", "Just a moment"), do NOT retry the same URL -- immediately move to the next source:
https://archive.is/<original_url>https://web.archive.org/web/<original_url>https://webcache.googleusercontent.com/search?q=cache:<original_url>For whichever source succeeds:
Use browser_navigate to load the URL, then browser_snapshot to read rendered content.
Extract from the page:
<h1>, <title>, or og:title. Never invent titles.Content gate: if the extracted body is less than 1500 characters or contains "security verification" / "just a moment" keywords, the capture failed. Skip this article and delegate the error to a subagent with the /post-mortem skill.
For each successfully captured article, BEFORE saving to Memex:
curl -sL -A "Mozilla/5.0 (X11; Linux x86_64)" -o /tmp/{uuid}.png {image_url}
If image download fails, continue -- save the article text anyway. Missing assets are not a reason to skip the article.
Create the note:
memex_retain(
title="{extracted article title, verbatim from the page}",
author="medium-reader",
description="One-sentence summary of the article",
tags=["medium-reader", "medium", "{publication-slug}"],
markdown_content=$FULL_VERBATIM_MARKDOWN,
vault_id="inbox",
note_key="medium-reader:article:{url_slug}",
background=True
)
Capture the returned note id into NOTE_ID. The markdown_content must include the source URL, author, date, and complete body text as raw markdown (no base64 encoding).
The note_key MUST match the idempotency key generated in Step 3. This is mandatory for deduplication.
After creating the note, attach any downloaded assets from Step 4b via memex_add_assets(note_id=$NOTE_ID, ...).
Mark as processed:
memex_kv_write(
key="app:hermes:medium-reader:article:{url_slug}",
value="captured:{ISO-timestamp}",
ttl_seconds=259200
)
After processing all articles, briefly report what you did:
When you encounter errors (bot detection, asset capture failures, content extraction failures, Memex save failures), delegate to a subagent with the /post-mortem skill describing the issue. Include what went wrong, the root cause if identifiable, and a suggested fix. Do NOT write your own post-mortem notes to Memex. Only report actual failures, not clean runs.
app:hermes:medium-reader: -- do not use the old app:openfang:medium-reader: prefix.