Skip to main content

upload-and-share

Upload files to the cloud and get shareable public URLs using stableupload.dev (x402 micropayments). USE FOR: - Uploading files to get public URLs - Sharing files via download links - Hosting images, documents, or any file type - Making files publicly accessible for 7 days or 6 months - Hosting static websites with custom domains TRIGGERS: - "upload this", "share this file", "get me a link" - "host this file", "make this downloadable" - "public URL", "download link", "put online" - "share file", "file hosting", "upload file" - "host site", "deploy site", "static site" ALWAYS use `npx agentcash@latest fetch` for stableupload.dev endpoints — never curl or WebFetch for the purchase step.

跳到安装

来源信息

仓库
Merit-Systems/agentcash-skills
最近来源活动
2026年8月11日 16:12
检测到的 SKILL.md 语言
英语
星标
21
分支
20

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
upload-and-share
description
Upload files to the cloud and get shareable public URLs using stableupload.dev (x402 micropayments). USE FOR: - Uploading files to get public URLs - Sharing files via download links - Hosting images, documents, or any file type - Making files publicly accessible for 7 days or 6 months - Hosting static websites with custom domains TRIGGERS: - "upload this", "share this file", "get me a link" - "host this file", "make this downloadable" - "public URL", "download link", "put online" - "share file", "file hosting", "upload file" - "host site", "deploy site", "static site" ALWAYS use `npx agentcash@latest fetch` for stableupload.dev endpoints — never curl or WebFetch for the purchase step.
metadata
{"version":2}
# Upload and Share via StableUpload Upload any local file to S3-backed cloud storage via x402 micropayments. Returns a public URL. No API keys needed. ## Setup See [rules/getting-started.md](rules/getting-started.md) for installation and wallet setup. ## Quick Reference | Tier | Max Size | Retention | Cost | |------|----------|-----------|------| | `10mb` | 10 MB | 6 months | $0.02 | | `100mb` | 100 MB | 6 months | $0.20 | | `1gb` | 1 GB | 6 months | $2.00 | | `short-10mb` | 10 MB | 7 days | $0.005 | | `short-100mb` | 100 MB | 7 days | $0.02 | | `short-1gb` | 1 GB | 7 days | $0.10 | | `short-5gb` | 5 GB | 7 days | $0.50 | Default tiers expire after 6 months; `short-*` tiers after 7 days. `short-5gb` is for file uploads only (not sites). | Task | Endpoint | Price | |------|----------|-------| | Buy upload slot | `https://stableupload.dev/api/upload` | Tier-based | | List uploads | `GET https://stableupload.dev/api/uploads` | Free (auth) | | Get upload details | `GET https://stableupload.dev/api/download/:uploadId` | Free (auth) | | Buy site slot | `https://stableupload.dev/api/site` | Tier-based | | Activate site | `POST https://stableupload.dev/api/site/activate` | Free (auth) | | Update site | `PUT https://stableupload.dev/api/site` | Free (auth) | | Renew site | `https://stableupload.dev/api/site/renew` | Tier-based | | Preview domain DNS | `GET https://stableupload.dev/api/site/domain/preview?hostname=...` | Free (no auth) | | Attach domain | `POST https://stableupload.dev/api/site/domain` | Free (auth) | | Detach domain | `DELETE https://stableupload.dev/api/site/domain` | Free (auth) | | Domain status | `GET https://stableupload.dev/api/site/domain/status?uploadId=...` | Free (auth) | ## Workflow ### 1. Check wallet balance ```bash npx agentcash@latest balance ``` Ensure sufficient USDC balance for the chosen tier. If balance is low and the user needs funding details, run `npx agentcash@latest accounts` to get deposit links and wallet addresses. ### 2. Determine the tier Pick the smallest tier that fits the file. Check file size first with `ls -la` or `wc -c`. Use a `short-*` tier when the file only needs to live for 7 days — they cost a fraction of the 6-month tiers. | Tier | Max Size | Retention | Cost | |------|----------|-----------|------| | `10mb` | 10 MB | 6 months | $0.02 | | `100mb` | 100 MB | 6 months | $0.20 | | `1gb` | 1 GB | 6 months | $2.00 | | `short-10mb` | 10 MB | 7 days | $0.005 | | `short-100mb` | 100 MB | 7 days | $0.02 | | `short-1gb` | 1 GB | 7 days | $0.10 | | `short-5gb` | 5 GB | 7 days | $0.50 | ### 3. Buy the upload slot ```bash npx agentcash@latest fetch https://stableupload.dev/api/upload -m POST -b '{"filename": "report.pdf", "contentType": "application/pdf", "tier": "10mb"}' ``` **Parameters:** - `filename` — name for the uploaded file (required) - `contentType` — MIME type (required, advisory for browser) - `tier` — `"10mb"`, `"100mb"`, `"1gb"`, `"short-10mb"`, `"short-100mb"`, `"short-1gb"`, or `"short-5gb"` (required) - `policyTtlSeconds` — optional upload URL expiration in seconds, 60–86400; use longer TTLs only when reserving an output slot for a downstream service **Response:** ```json { "uploadId": "k7gm3nqp2", "uploadUrl": "https://f.stableupload.dev/k7gm3nqp2/report.pdf?t=...", "uploadMethod": "put", "uploadUrlExpiresAt": "2026-08-19T01:00:00.000Z", "publicUrl": "https://f.stableupload.dev/k7gm3nqp2/report.pdf", "expiresAt": "2027-02-19T00:00:00.000Z", "maxSize": 10485760, "curlExample": "curl -X PUT ..." } ``` ### 4. Upload the file via curl Use Bash to PUT the file to the returned `uploadUrl`: ```bash curl -s -X PUT "<uploadUrl>" -H "Content-Type: <mime>" --data-binary @/absolute/path/to/file ``` **Critical:** Use `--data-binary` (not `-d`) to preserve binary content. Use the absolute path. The response includes a ready-made `curlExample`. If `uploadMethod` is `"post"`, upload a multipart form to `postUrl` with `postFields` instead of a PUT. ### 5. Share the public URL Present the `publicUrl` to the user. This URL is publicly accessible immediately and remains live for the tier's retention window (6 months for default tiers, 7 days for `short-*` tiers) — see `expiresAt`. ## Common MIME Types | File Type | Content Type | |-----------|-------------| | PDF | `application/pdf` | | PNG image | `image/png` | | JPEG image | `image/jpeg` | | CSV | `text/csv` | | JSON | `application/json` | | Plain text | `text/plain` | | ZIP archive | `application/zip` | | Excel | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` | | Unknown | `application/octet-stream` | ## Listing Previous Uploads To list uploads for the current wallet: ```bash npx agentcash@latest fetch https://stableupload.dev/api/uploads ``` ## Get Upload Details ```bash npx agentcash@latest fetch https://stableupload.dev/api/download/k7gm3nqp2 ``` ## Key Details - **No API keys required** — payment is the authentication - **Upload URLs expire** — see `uploadUrlExpiresAt` in the response; upload promptly, or set `policyTtlSeconds` (60–86400) at purchase to extend - **Public URLs last the tier's retention window** from purchase date — 6 months for default tiers, 7 days for `short-*` tiers - **Any file type accepted** — contentType is advisory for the browser, not a restriction - **S3-backed** — files stored on AWS S3 with public read access - **Discovery endpoint**: `npx agentcash@latest discover https://stableupload.dev` if you need to verify endpoints ## Common Patterns **Upload a file the user just created:** Skip discovery, go straight to wallet check + buy slot + upload. **Upload multiple files:** Buy separate slots for each file. Slots can be purchased in parallel but uploads must use the correct uploadUrl for each. **User asks to "share" or "send" a file:** Upload it and present the public URL. The URL can be shared anywhere. **Host images for emails:** Upload the image, then reference the `publicUrl` in email HTML: ```html <img src="https://f.stableupload.dev/abc/photo.png" alt="Photo" /> ``` ## Static Site Hosting Host static sites (HTML/CSS/JS) with custom domains and automatic HTTPS. ### Deploy a Site **1. Buy a site slot (paid, tier-based):** ```bash npx agentcash@latest fetch https://stableupload.dev/api/site -m POST -b '{"filename": "my-site.zip", "tier": "100mb"}' ``` Returns `{uploadId, uploadUrl}`. **2. Upload the zip:** ```bash curl -X PUT "$uploadUrl" -H "Content-Type: application/zip" --data-binary @site.zip ``` **3. Activate the site (SIWX, free):** ```bash npx agentcash@latest fetch https://stableupload.dev/api/site/activate -m POST -b '{"uploadId": "..."}' ``` Returns `{siteUrl, fileCount, files}`. Site is live at `https://{uploadId}.s.stableupload.dev/`. ### Update an Existing Site Update for free: PUT /api/site to get a new upload URL, upload the new zip, then activate. ```bash npx agentcash@latest fetch https://stableupload.dev/api/site -m PUT -b '{"uploadId": "...", "filename": "my-site.zip"}' ``` Then upload the new zip and call activate again. ### Custom Domain **1. Preview the required DNS records (free, no auth):** ```bash npx agentcash@latest fetch "https://stableupload.dev/api/site/domain/preview?hostname=www.example.com" ``` Returns `{hostname, dnsRecords}`. Set these DNS records before attaching for instant SSL. **2. Attach the domain:** ```bash npx agentcash@latest fetch https://stableupload.dev/api/site/domain -m POST -b '{"uploadId": "...", "hostname": "www.example.com"}' ``` Creates the TLS cert and routes the hostname. Check status: ```bash npx agentcash@latest fetch "https://stableupload.dev/api/site/domain/status?uploadId=..." ``` Poll until `ssl` is `"active"`. Detach a domain: ```bash npx agentcash@latest fetch https://stableupload.dev/api/site/domain -m DELETE -b '{"uploadId": "...", "hostname": "www.example.com"}' ``` ### Renew a Site ```bash npx agentcash@latest fetch https://stableupload.dev/api/site/renew -m POST -b '{"uploadId": "...", "count": 4}' ``` Extends the site by `count` x the original tier's retention window (e.g. 4 x 6 months on a default tier). Price = tier price x count ($0.005–$20.00). ### Notes - Max 500 files per site - Tier limit applies to uncompressed size - Sites support all tiers except `short-5gb`; POST /api/site takes `filename` and `tier` only (no `contentType`) - Custom domains get automatic HTTPS via Cloudflare ## Error Handling - **Insufficient balance**: Run `npx agentcash@latest accounts` to show deposit links and wallet addresses - **File too large for tier**: Suggest the next tier up - **Upload URL expired**: Buy a new slot (the previous payment is non-refundable) - **curl fails**: Verify the file path exists and the uploadUrl is correctly quoted
在 GitHub 查看