Install
openclaw skills install @pe4atnik/telegram-wim-wsl-file-deliveryDeliver local reports and artifacts through OpenClaw chat channels. Use when a generated HTML/PDF/archive/table or other local file must be sent from a local, self-hosted, or WSL OpenClaw setup where path handling and host-read policy matter.
openclaw skills install @pe4atnik/telegram-wim-wsl-file-deliveryUse for file delivery from the local filesystem into an OpenClaw message channel.
Prefer this skill when the hard part is not Telegram itself, but the path from local disk -> OpenClaw host-read -> channel send.
Treat file delivery as an external action.
If the user did not explicitly ask to send the file, confirm:
If the user already asked to send it, continue.
Never send ~, relative paths, or guessed paths.
{
"tool": "exec",
"command": "ls -lh /absolute/path/to/file && file /absolute/path/to/file"
}
Check:
Use these defaults:
--force-document if compression must be avoidedOn some local/self-hosted OpenClaw setups, ordinary local HTML from arbitrary workspace paths is rejected by host-read policy.
Resolve or assume the trusted tmp directory, then copy HTML there before sending.
If needed, resolve the preferred tmp path:
{
"tool": "exec",
"command": "node -e \"import('/usr/lib/node_modules/openclaw/dist/tmp-openclaw-dir-C60hWKdY.js').then(m=>console.log(m.n()))\""
}
Typical copy flow:
{
"tool": "exec",
"command": "set -euo pipefail\nSRC=/absolute/path/report.html\nTMP=/tmp/openclaw\nmkdir -p \"$TMP\"\nchmod 700 \"$TMP\" || true\ncp \"$SRC\" \"$TMP/report.html\"\nchmod 600 \"$TMP/report.html\"\nls -lh \"$TMP/report.html\"\nfile \"$TMP/report.html\""
}
Send the tmp copy, not the original HTML.
If a wrapper/tool path injects bad fields or fails ambiguously, stop retrying the same path. Use the documented CLI.
Read the local CLI doc if needed:
{
"tool": "read",
"path": "/usr/lib/node_modules/openclaw/docs/cli/message.md"
}
Typical Telegram sends:
{
"tool": "exec",
"command": "openclaw message send --channel telegram --target <target> --message \"HTML report\" --media /tmp/openclaw/report.html --force-document"
}
{
"tool": "exec",
"command": "openclaw message send --channel telegram --target <target> --message \"Report archive\" --media /absolute/path/to/report.tar.gz --force-document"
}
For other channels, keep the same shape and adjust --channel and --target according to the CLI docs.
Report the concrete send result or message id.
For report bundles, prefer this order:
.html / .pdf).tar.gz / .zip).csv / .tsv)Poll fields require action "poll"
openclaw message send ... or a truly minimal send path.hostReadCapability permits only validated plain-text documents and trusted generated HTML reports for local reads
/tmp/openclaw and send that copy.Message: ~/path failed
~ to an absolute path; for HTML use trusted tmp.Host-local media sends require buffer-verified media/document types
file, or archive the artifact.Telegram compresses media
--force-document.Archive too large
Never loop on the same failing command. Change one variable, retry once.
/tmp/openclaw/... and valid HTML document shape.MEDIA:/... paths may fail even when the file exists.~ and relative paths are risky; use absolute paths..zip or .tar.gz and send as document.references/debug-notes.md - anonymized failure sequence and working commandsreferences/positioning.md - audience and differentiationreferences/comparison-notes.md - what this skill adds beyond generic Telegram sendersexamples/send-html-report.shexamples/send-archive.sh