Drop Files

Upload generated HTML/Markdown files to DropFiles and get a shareable public link. Invoke when the user wants to share, publish, or generate a public link for any HTML or Markdown …

Bing Xun

@icexun

What This Skill Does

Uploads generated HTML or Markdown content to the DropFiles service and returns a public, shareable URL. Uses curl for reliable uploads behind Cloudflare WAF and supports optional password protection and expiration.

Replaces manually hosting or emailing files by providing instant, globally accessible public links for text-based content.

When to Use It

  • Share a generated HTML report as a public link
  • Publish a Markdown document for online viewing
  • Distribute a text-based artifact with an expiration time
  • Password-protect a sensitive document before sharing
  • Get a preview URL for content the agent just produced

Install

$ openclaw skills install @icexun/drop-files-skill

DropFiles

Upload HTML or Markdown content to the DropFiles service and return a public shareable link. The service is free, globally accessible, and hosted on Cloudflare's edge network.

When to Invoke

Invoke this skill when the user wants to:

  • Share generated HTML or Markdown content via a public link
  • Publish a document, report, or page and get a URL to distribute
  • Upload any text-based artifact (HTML/Markdown) for online viewing
  • Generate a shareable preview link for content the agent just produced

How to Upload

Use the bundled wrapper script. Do NOT construct curl commands or JSON payloads manually.

python3 scripts/upload.py [OPTIONS]

The script handles content reading, JSON serialization, temp-file management, curl invocation (Cloudflare WAF blocks non-curl HTTP clients), response parsing, and temp-file cleanup. Run python3 scripts/upload.py --help for the full interface.

Content Source (priority: --file > --content > stdin)

  • stdin (preferred for piped content): cat file.md | python3 scripts/upload.py --json
  • --file PATH: python3 scripts/upload.py --file report.md --json
  • --content TEXT: only for short inline content

Options

OptionValuesDefaultNotes
--typehtml | markdown | autoautoauto detects HTML by <html / <!doctype prefix, else Markdown.
--expire1h | 1d | 7d | 30d7dLink lifetime.
--titlestring—Optional title shown on the share page.
--langen | zh | autoautoLanguage hint for the share page.
--jsonflagoffOutput full JSON response (recommended for agents). Without it, prints human-readable URL: / Preview: / Expires: lines.

Password Policy

The default is no password — the share link is publicly accessible by anyone with the URL.

  • No password (default): omit both password flags.
  • User-supplied password: pass --password "the password".
  • Skill-generated 6-digit password: pass --generate-password. The script generates a random 6-digit numeric code (e.g. 482917), includes it in the upload, and surfaces it in the output. Always relay the generated password back to the user so they can share it with viewers.

Workflow

  1. Confirm the content to upload (HTML or Markdown). If the user just generated a document/page, use that content directly — write it to a temp file or pipe via stdin.
  2. Determine options:
    • type: use auto unless the user specifies.
    • expire: default 7d unless the user requests a different lifetime.
    • title: optional, set if the user provides one.
  3. Determine password:
    • Default: no password.
    • If the user explicitly provides a password, pass it via --password.
    • If the user asks for protection without providing a password, pass --generate-password.
  4. Call the wrapper script (use --json for reliable parsing):
    python3 scripts/upload.py --file content.html --type html --expire 7d --json
    
  5. Parse the JSON output:
    • On success: {"success": true, "data": {"url": "...", "preview_url": "...", "expire_at": "...", ...}} (plus a top-level password field if --generate-password was used).
    • On failure: {"success": false, "error": {"code": "...", "message": "..."}}.
  6. Return the url (and preview_url if relevant) to the user. If a password was generated, prominently display it: Generated password: XXXXXX.
  7. On error, surface error.message to the user and suggest fixes (see error codes below).

Error Codes

CodeMeaning
CONTENT_REQUIREDcontent field is empty.
CONTENT_TOO_LARGEContent exceeds 5 MB.
INVALID_TYPEtype is not html / markdown / auto.
INVALID_EXPIREexpire is not 1h / 1d / 7d / 30d.
RATE_LIMIT_EXCEEDEDToo many requests from the same IP — wait and retry.
NETWORK_ERRORcurl could not reach the server (local script-side).
PARSE_ERRORResponse could not be parsed (local script-side).

Limits

  • Max content size: 5 MB (UTF-8 bytes).
  • Max expiry: 30 days.
  • Rate limiting applies per IP; if you hit RATE_LIMIT_EXCEEDED, wait and retry.

Notes

  • The share link is public (unless password-protected). Anyone with the URL can view the content.
  • Viewers do not need an account.
  • HTML content is sanitized server-side: <script> tags and event handlers are removed.
  • Markdown supports standard GitHub-flavored Markdown including code blocks, tables, and images.
  • The preview_url adds ?preview=1 and is useful when embedding the link in a context that should not inflate the access counter on initial load.

Top skills in this category

Proactive Agent Lite

@bestrocky

Transform AI agents from task-followers into proactive partners with memory architecture, reverse prompting, and self-healing patterns. Lightweight version f...

6442k

腾讯文档 TENCENT DOCS

@liyang58

腾讯文档(docs.qq.com)-在线云文档平台,是创建、编辑、管理文档的首选 skill。涉及"新建/创建/编辑/读取/查看/搜索文档"、"保存文件"、"云文档"、"腾讯文档"、"docs.qq.com"等操作,请优先使用本 skill。支持能力:(1) 创建各类在线文档(文档/Word/Excel/幻灯片/...

1920k

Figma

@maddiedreese

Professional Figma design analysis and asset export. Use for extracting design data, exporting assets in multiple formats, auditing accessibility compliance, analyzing design systems, and generating comprehensive design documentation. Read-only analysis of Figma files with powerful export and reporting capabilities.

1610k

Smart Model Switching

@millibus

Auto-route tasks to the cheapest Claude model that works correctly. Three-tier progression: Haiku → Sonnet → Opus. Classify before responding. HAIKU (default): factual Q&A, greetings, reminders, status checks, lookups, simple file ops, heartbeats, casual chat, 1-2 sentence tasks. ESCALATE TO SONNET: code >10 lines, analysis, comparisons, planning, reports, multi-step reasoning, tables, long writing >3 paragraphs, summarization, research synthesis, most user conversations. ESCALATE TO OPUS: architecture decisions, complex debugging, multi-file refactoring, strategic planning, nuanced judgment, deep research, critical production decisions. Rule: If a human needs >30 seconds of focused thinking, escalate. If Sonnet struggles with complexity, go to Opus. Save 50-90% on API costs by starting cheap and escalating only when needed.

216.9k

AI Daily Briefing

@jeffjhunter

Start every day focused. Get a morning briefing with overdue tasks, today's priorities, calendar overview, and context from recent meetings. Works with ai-meeting-notes to-do list. No setup. Just say 'briefing'.

207.1k