360 Secure SkillHub
360 安全技能中心

Axi Send File

把工作区中的 Markdown 文件转换为 PDF,或将多个文件打包为 ZIP,再通过在回复中输出 MEDIA: 路径,由 OpenClaw 经 Telegram 以可下载附件形式发送。PDF 与图片可直接发送,CSV、JSON 等文本文件建议压缩后发送。依赖 Bash、文件系统、mdpdf 与 zip。

awalesagar
awalesagar
热度 31.05
最近更新 2026-05-11 17:46:41
分类:效率依赖:代码执行 / 读写文件 / 第三方 API应用场景:文件转换 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add axi-send-file
Metadata
name
send-file
description
Convert workspace files into Telegram-downloadable attachments (PDF/ZIP). Use when the user asks to receive, download, or be sent a file that was generated or exists in the workspace. Handles the OpenClaw MEDIA: delivery mechanism for Telegram channel.
allowed-tools
["Bash(mdpdf *)","Bash(zip *)","Bash(cp *)","Bash(ls *)","Bash(mkdir *)"]

send-file

Convert local files into Telegram-friendly downloadable attachments.

When to use

  • User says "send me the file", "download", "attach", "share this"
  • You generated a report, spreadsheet, or document the user wants
  • Previous MEDIA: delivery of .md or raw text failed (user couldn't download)

The Problem

OpenClaw's MEDIA: directive delivers files through Telegram's Bot API. However:

  • .md files → Telegram shows inline as plain text, NOT as a downloadable document
  • .zip files → Sometimes work, sometimes blocked
  • .pdf files → ✅ Always delivered as a downloadable document
  • .png/.jpg files → ✅ Always delivered as an image

Solution

Step 1: Convert to PDF

# Install if not already present
pip install --user --break-system-packages mdpdf 2>/dev/null

# Convert markdown → PDF
~/.local/bin/mdpdf -o /tmp/output.pdf /path/to/input.md

Step 2: Deliver via MEDIA

In your reply, add:

MEDIA:/tmp/output.pdf

For multiple files — ZIP them

cd /tmp && zip bundle.pdf.zip file1.pdf file2.pdf

Then:

MEDIA:/tmp/bundle.pdf.zip

Important: Name ZIP files with .pdf.zip suffix — Telegram handles these more reliably.

Delivery Patterns

Single markdown file

~/.local/bin/mdpdf -o /tmp/report.pdf /home/axiom/.openclaw/workspace/report.md

Reply:

MEDIA:/tmp/report.pdf

Multiple markdown files

~/.local/bin/mdpdf -o /tmp/report1.md file1.md
~/.local/bin/mdpdf -o /tmp/report2.md file2.md
cd /tmp && zip reports.pdf.zip report1.pdf report2.pdf

Reply:

MEDIA:/tmp/reports.pdf.zip

Already a binary file (PDF, image, etc.)

Just send directly — no conversion needed:

MEDIA:/path/to/file.pdf

Non-markdown text files (CSV, JSON, etc.)

# Wrap in a zip for reliable download
cd /tmp && zip data.zip data.csv

Reply:

MEDIA:/tmp/data.zip

OpenClaw MEDIA: Reference

The MEDIA:/path line in assistant output triggers OpenClaw's file delivery:

  • Local paths are resolved against allowed roots: workspace, /tmp, ~/.openclaw/media/
  • Files are loaded and sent via the channel's native API (Telegram Bot API sendDocument)
  • Must be on its own line, no other text on that line
  • Multiple MEDIA: lines = multiple attachments

Tool Dependencies

  • mdpdf — Markdown to PDF converter (pip install mdpdf)
  • zip — Standard Unix zip (usually pre-installed)