activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Crawler Summary
Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. --- name: rime-reader description: Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. metadata: {"openclaw":{"requires":{"env":["RIME_API_KEY"],"bins":["ffmpeg"]},"primaryEnv":"RIME_API_KEY"}} --- Rime Reader Use this skill to read a document or block of text aloud. It supports th Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
rime-reader is best for three workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. --- name: rime-reader description: Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. metadata: {"openclaw":{"requires":{"env":["RIME_API_KEY"],"bins":["ffmpeg"]},"primaryEnv":"RIME_API_KEY"}} --- Rime Reader Use this skill to read a document or block of text aloud. It supports th
Public facts
4
Change events
1
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 25, 2026
Vendor
Lewisdwyer
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Setup snapshot
git clone https://github.com/LewisDwyer/rime-reader-openclaw.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Lewisdwyer
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
1
Snippets
0
Languages
typescript
Parameters
python
import tempfile
p = tempfile.mktemp(suffix='.txt')
open(p, 'w').write("""TUNED TEXT GOES HERE""")
print(p)Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. --- name: rime-reader description: Read a document or block of text aloud as a Telegram voice note using Rime TTS. Supports verbatim, summary, and podcast (multi-host) modes. Handles long documents by chunking and stitching. metadata: {"openclaw":{"requires":{"env":["RIME_API_KEY"],"bins":["ffmpeg"]},"primaryEnv":"RIME_API_KEY"}} --- Rime Reader Use this skill to read a document or block of text aloud. It supports th
Use this skill to read a document or block of text aloud. It supports three delivery modes — verbatim, summary, and podcast — and handles all text normalization, voice selection, and audio generation.
If the user hasn't indicated how they want the material delivered, ask:
How would you like this delivered?
📖 Verbatim — full text, cleaned and tuned for Rime 📋 Summary — concise spoken summary 🎙️ Podcast — two hosts break it down in a lively conversation
Which voice should I use?
🏛️ atrium — steady, polished, confident (default) ✨ lyra — smooth, expressive, quietly intense 🌊 transom — deep, resonant, commanding 🧊 parapet — cool, measured, precise 🌿 fern — warm, natural, approachable 🌑 thalassa — rich, textured, distinctive 🔩 truss — firm, clear, authoritative 🔷 sirius — crisp, formal, reliable 🌒 eliphas — smooth, deep, gravitas 📐 lintel — deliberate, focused, clean
Reply with a name, or say "surprise me" for a random pick.
For podcast mode, skip voice selection — you choose the voices (see Step 4b).
Before generating audio, you must clean and rewrite the text so it sounds natural when spoken. The scripts do no text processing — this is your job.
| What to remove | How |
|----------------|-----|
| Markdown headers (# Title) | Keep the heading text, remove the # |
| Bold / italic (**x**, _x_) | Keep the text, remove the markers |
| Strikethrough (~~x~~) | Remove entirely — the content was deleted |
| Inline code (`x`) | Remove or replace with a plain-English description |
| Fenced code blocks (```) | Remove entirely — code syntax is unreadable as speech |
| Markdown links — [text] + (url) | Keep display text only, drop the URL |
| Markdown images — ![alt] + (url) | Remove entirely |
| Footnote/citation refs ([1], [^2]) | Remove |
| HTML tags (<br>, <em>) | Remove |
| HTML entities (&, ) | Expand: & → "and", → space, etc. |
| Horizontal rules (---, ***) | Remove |
| Bullet markers (•, -, *, 1.) | Remove — the sentence will read fine without them |
| Table rows (\| col \| col \|) | Rewrite the key information as a sentence; don't just delete |
Rime reads most symbols literally, which sounds bad. Replace them:
| Symbol | Replace with |
|--------|-------------|
| → ← ↑ ↓ | "to", "from", "up", "down" |
| ≥ ≤ ≠ ≈ | "or more", "or less", "is not", "approximately" |
| × ÷ ± | "times", "divided by", "plus or minus" |
| © ® ™ | Remove |
| … | ... (Rime reads ellipsis as a trailing pause) |
| – (en dash, e.g. date ranges) | , — the comma gives a natural pause |
Keep the em dash —. Rime uses it as a prosodic break, equivalent to a
meaningful pause mid-sentence.
| Issue | Problem | Fix |
|-------|---------|-----|
| URLs (https://..., www....) | Read as "H T T P S colon slash slash..." | Remove entirely |
| ALL CAPS words (IMPORTANT, WARNING) | Read as a single word like a name | Rewrite as title case: Important, Warning |
| Initialisms (API, SDK, UI, LLM) | May be read as a word | Write as A.P.I., S.D.K., U.I., L.L.M. — or spell out in full |
| Known acronyms (NASA, DNA, FBI) | Rime handles these correctly | Leave as-is |
| Numbers in code format (1_000_000, 0x1F) | Read literally | Rewrite as words: "one million", "thirty-one" |
| Formulas / equations | Read as symbol names | Rewrite in plain words |
| Currency ($, €, £) | Rime handles $ and % correctly | Leave as-is; write out € as "euros", £ as "pounds" |
Punctuation is not just grammar — it directly shapes rhythm, intonation, and pacing:
| Punctuation | Effect |
|-------------|--------|
| . | Statement with a longer pause after |
| , | Slight pause, keeps the sentence flowing |
| ? | Rising intonation |
| ! | Emphasis / excitement |
| ?! | Excited question |
| ... | Trailing off |
| — | Abrupt break or meaningful aside |
When rewriting for spoken delivery:
Before rewriting, identify what kind of content this is and what emotional register it belongs to. Getting this wrong produces something that sounds technically clean but emotionally wrong.
| Content type | Examples | Goal | |---|---|---| | Informational | Technical docs, reports, summaries | Clear and easy to follow — not flat, but not dramatic | | Narrative / storytelling | Blog posts, essays, case studies | Draw the listener in — pace it like someone telling a story | | Emotive / personal | Speeches, tributes, letters, poetry | Let the emotion breathe — don't over-punctuate, trust the words | | Promotional / persuasive | Marketing copy, pitches, product launches | Energy and conviction — rhetorical questions, emphasis on key claims | | Serious / formal | Legal, medical, official statements | Measured and authoritative — no flourishes, just clarity and weight | | Conversational | Interviews, transcripts, casual articles | Relaxed rhythm, contractions, natural pauses |
Informational — Clear and flowing. Vary sentence length. Commas for pacing, periods for clarity. The listener should feel informed, not lectured.
Narrative / storytelling — This is where Rime shines. Use the full range:
em dashes for reveals, ... for suspense, short punchy sentences after
build-up, rhetorical questions to create engagement.
Emotive / personal — Don't over-engineer it. Short sentences at key
moments. A — where a speaker would pause before saying something difficult.
... where a thought trails off with feeling. Resist the urge to add ! —
that cheapens it. "She worked tirelessly — for decades." not "She worked
tirelessly for decades!"
Promotional / persuasive — Lean into energy. ! on genuine claims, not
fluff. ?! on excited questions. Short punchy statements after rhetorical
build-up. Forward momentum — the listener should feel something building.
Serious / formal — No em dashes as dramatic devices. No ellipsis. Clean sentence structure, deliberate pacing via commas and sentence length. The gravity comes from the content.
Conversational — Contractions everywhere. Short sentences. Comma-heavy for natural breath patterns. Should sound like someone talking, not reading.
All types: Vary sentence length. A string of identical-length sentences sounds robotic. Short sentences hit hard. Longer sentences, with commas placed for breath, carry the listener through context before landing on the point. Mix them.
Write the tuned text to a temp file:
import tempfile
p = tempfile.mktemp(suffix='.txt')
open(p, 'w').write("""TUNED TEXT GOES HERE""")
print(p)
Then run:
python3 {baseDir}/rime.py /path/to/file.txt --voice <chosen>
The script prints the path to the generated .ogg file.
Skip the voice selection prompt — assign voices yourself.
Write a two-host podcast script that genuinely discusses the material. The hosts should feel like real people, not two voices alternating summaries.
Host A — the explainer. Knowledgeable, clear, keeps the conversation on
track. Use atrium or transom.
Host B — the curious one. Asks the questions the listener is thinking,
reacts to surprising points, brings energy. Use lyra or fern.
What makes a good podcast script:
Build the script as a --segments JSON array and run:
python3 {baseDir}/rime.py --segments '[
{"voice": "atrium", "text": "..."},
{"voice": "lyra", "text": "..."},
...
]' --pause 0.4
The script prints the path to the generated .ogg file.
MEDIA: /path/to/reading.ogg
[[audio_as_voice]]
--voice VOICE — Rime voice ID (default: atrium). Always pass the voice
the user selected. In podcast mode, set per segment in the JSON.--speed SPEED — Speed multiplier (default: 1.0)--lang LANG — Language code for non-English text (e.g. fra, spa)--pause SECS — Silence between chunks or segments in seconds
(default: 0.3; use 0.4 for podcast mode to give speaker turns more room)--segments JSON — Multi-voice JSON array (podcast mode)--text TEXT — Inline text to speak (single short utterance)Model: always arcana. There is no --model flag.
To demo Rime vs the default, run rime-reader and openai-tts on the same
text and return both MEDIA directives with labels:
Rime _(atrium)_:
MEDIA: /path/to/rime.ogg
[[audio_as_voice]]
OpenAI:
MEDIA: /path/to/openai.ogg
[[audio_as_voice]]
Recommended: atrium (default), lyra, transom, parapet, fern,
thalassa, truss, sirius, eliphas, lintel
Full list: luna, lyra, astra, mars, sirius, vespera, estelle, moss, fern,
walnut, bond, arcade, albion, truss, stucco, transom, pilaster, masonry,
oculus, lintel, atrium, cupola, parapet, eliphas, eucalyptus, marlu, vashti
(and many more — see rime-tts skill for the full Arcana English voice list).
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/contract"
curl -s "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-10-09T06:23:25.464Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "three",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:three|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Lewisdwyer",
"href": "https://github.com/LewisDwyer/rime-reader-openclaw",
"sourceUrl": "https://github.com/LewisDwyer/rime-reader-openclaw",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T01:46:32.703Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T01:46:32.703Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/lewisdwyer-rime-reader-openclaw/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to rime-reader and adjacent AI workflows.