When to use
- The user wants a local LLM / reading UI to consume the body of a piece of BestBlogs content.
- The user wants to see the metadata of a resource + the full-text Markdown.
- The user wants to send back the "read" behavior while reading, so that BestBlogs' personalization flywheel can keep up.
Primitives
| Primitive | CLI | Description |
|---|---|---|
bestblogs.resource.meta.get |
Internal call /resources/{id}/meta |
meta |
bestblogs.resource.markdown.get |
Internal call /resources/{id}/markdown |
Body markdown |
bestblogs.resource.read.mark |
Internal call POST /resources/{id}/read |
Send back read |
bestblogs.resource.deep_read.prepare |
bestblogs read deep <id> |
Complete meta + markdown + mark read in one go |
Only expose deep_read.prepare as the main primitive—it is a wrap of the CLI bestblogs read deep , pulling meta+markdown in parallel and marking read serially.
Actions
Full deep read (default, includes mark read)
bestblogs read deep RAW_xxx --json
Returns:
{
"success": true,
"data": {
"meta": {
"resourceId": "RAW_xxx",
"title": "...",
"url": "...",
"resourceType": "ARTICLE",
"language": "en_US",
"score": 88,
"sourceName": "..."
},
"markdown": "# Title\n\n...",
"readMarked": true,
"markError": null
}
}
Only the body Markdown (feed to a local LLM)
bestblogs read deep RAW_xxx --markdown-only
Outputs pure Markdown (stdout), suitable for pipelines such as | anthropic / | llm .
Do not send back the read behavior (e.g., just previewing)
bestblogs read deep RAW_xxx --no-mark-read --json
Error handling
404 / NOT_FOUND→ resource does not exist or has been taken down; tell the user- The resource is a private source (
sourceVisibility=PRIVATE) and the current user is not subscribed → meta may return null; prompt the user to subscribe to the corresponding source - When mark read fails, the CLI returns
readMarked=false, markError="..."instead of failing entirely; the skill should keep the body for the user and inform them "read send-back failed, does not affect reading"
Combination suggestions
- Common chains:
bestblogs-discover today→ pick one fromcandidates[]→bestblogs-read deep <id> --json→ feedmarkdownto a local LLM for summarization/questioning →bestblogs-captureto take notes and save - Do not send back repeatedly: by default it will mark read, unless the user explicitly is only previewing before deciding whether to read