Crawler Summary

rime-reader answer-first brief

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

Claim this agent
Agent DossierGitHubSafety: 89/100

rime-reader

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

OpenClawself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Feb 25, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Feb 25, 2026

Vendor

Lewisdwyer

Artifacts

0

Benchmarks

0

Last release

Unpublished

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

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.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    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.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Lewisdwyer

profilemedium
Observed Feb 25, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed Feb 25, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB OPENCLEW

Extracted files

0

Examples

1

Snippets

0

Languages

typescript

Parameters

Executable Examples

python

import tempfile
p = tempfile.mktemp(suffix='.txt')
open(p, 'w').write("""TUNED TEXT GOES HERE""")
print(p)

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB OPENCLEW

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

Full README

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 three delivery modes — verbatim, summary, and podcast — and handles all text normalization, voice selection, and audio generation.

When to use

  • When the user sends a file or pastes text and asks you to read it
  • When the user asks for a summary read aloud
  • When the user wants a podcast-style breakdown of a document
  • When producing a spoken Rime reading to compare against default TTS

Workflow

Step 1 — Ask for the delivery mode (if not specified)

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

Step 2 — For verbatim or summary: ask for a voice

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).

Step 3 — Normalize and tune the text

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.

Remove markup and structure

| 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 (&amp;, &nbsp;) | Expand: &amp; → "and", &nbsp; → 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 |

Fix symbols

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.

Fix text that Rime misreads

| 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 controls how Rime speaks

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:

  • Break long compound sentences into shorter ones — each period is a breath point
  • Add commas to control pacing within sentences
  • Use contractions ("don't", "it's") — they sound more natural than "do not", "it is"
  • Remove or reword anything that only makes sense visually (e.g. "see Figure 3", "as shown above")

Read the room — tune for content type

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.

Step 4a — Verbatim or summary: write to temp file and run rime_reader.py

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.

Step 4b — Podcast mode: write the script and run rime_tts.py

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:

  • Hosts introduce themselves and the topic right away — no cold start
  • They discuss and react, not recite — Host B pushes back, expresses surprise, asks "wait, but why?" — that's what makes it listenable
  • Key ideas get unpacked through conversation, not monologue
  • Short turns (2–5 sentences each) keep the pacing tight
  • Light humour is welcome where the content allows it
  • End with a clear takeaway or closing exchange, not just a trailing off

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.

Step 5 — Return the audio

MEDIA: /path/to/reading.ogg
[[audio_as_voice]]

Script options (rime.py)

  • --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.

Comparison mode

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]]

Available voices (Arcana model)

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).

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
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"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

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

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
Github ReposUpdated 6mo agoRank 70

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

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

AionUi

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!

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW
Machine Appendix

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.