360 Secure SkillHub
360 安全技能中心

Tmpfiles Upload

该 Skill 通过 Python 脚本把本地图片、PDF 或文档上传至 tmpfiles.org,返回可下载链接,并按示例通过飞书等消息平台发送链接;链接约 1 小时后过期,文件在有效期内公开可访问,适合临时分享,不适合敏感或永久存储。

turbos7
turbos7
热度 81.04
最近更新 2026-05-11 17:33:02
分类:协作依赖:代码执行 / 读写文件 / 第三方 API应用场景:工作流

安装技能

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

执行命令安装此 skill: npx secure-skills-cli add tmpfiles-upload
Metadata
name
tmpfiles-upload
description
Upload files (images, PDFs, documents) to tmpfiles.org and send download links via messaging platforms. Use when: (1) User asks to send screenshots/files via Feishu/other platforms, (2) Direct file upload to messaging platform fails, (3) User needs a temporary file sharing solution with auto-expiring links.

tmpfiles.org File Upload

Upload files to tmpfiles.org (temporary file hosting) and get a download link.

When to Use

  • Sending screenshots to Feishu when direct upload fails
  • Sharing files temporarily (links expire after ~1 hour)
  • Quick file sharing without authentication

Upload Script

import requests

def upload_to_tmpfiles(file_path):
    """Upload file to tmpfiles.org and return download URL"""
    with open(file_path, 'rb') as f:
        r = requests.post('https://tmpfiles.org/api/v1/upload', files={'file': f})
        data = r.json()
        if data.get('status') == 'success':
            # Replace org/ with org/dl/ for direct download
            return data['data']['url'].replace('org/', 'org/dl/')
        raise Exception(f"Upload failed: {data}")

Usage in OpenClaw

Step 1: Capture screenshot (if needed)

/usr/sbin/screencapture -x ~/Desktop/screenshot.png

Step 2: Upload to tmpfiles.org

python3 -c "
import requests
with open('/path/to/file.png', 'rb') as f:
    r = requests.post('https://tmpfiles.org/api/v1/upload', files={'file': f})
    d = r.json()
    if d.get('status') == 'success':
        print(d['data']['url'].replace('org/', 'org/dl/'))
"

Step 3: Send link via message

{
  "action": "send",
  "channel": "feishu",
  "message": "文件链接:https://tmpfiles.org/dl/xxx",
  "target": "user_id"
}

Notes

  • Links expire after ~1 hour
  • Max file size: ~100MB
  • Files are publicly accessible while active
  • Not suitable for sensitive/permanent storage