一键导入
anonymous-file-upload
Upload and host files anonymously using decentralized storage with Originless and IPFS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Upload and host files anonymously using decentralized storage with Originless and IPFS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Log all file changes (write, edit, delete) to a SQLite database for debugging and audit. Use when: (1) Tracking code changes, (2) Debugging issues, (3) Auditing file modifications, or (4) The user asks to track file changes.
Fetch current and historical crypto prices and compute ATH or ATL over common time windows.
Host static websites and assets via zip upload to Originless IPFS. Use when: (1) Deploying static sites, (2) Hosting HTML/CSS/JS projects, (3) Sharing web assets publicly, or (4) User asks to host static files.
Search for torrents by title or IMDB ID via a Torznab-compatible API. Use when: (1) User asks to find a torrent for a movie or show, (2) You need a magnet link for a given title, or (3) User provides an IMDB ID and wants download options.
Scrape websites at scale using Scrapy, a Python web crawling and scraping framework. Use when: (1) Crawling multiple pages or entire sites, (2) Extracting structured data from HTML/XML, or (3) Building automated data pipelines from web sources.
| name | anonymous-file-upload |
| description | Upload and host files anonymously using decentralized storage with Originless and IPFS. |
Originless is a privacy-first, decentralized file hosting backend using IPFS.
Key Principles:
Endpoints:
If Docker is available, the best setup is running Originless locally:
docker run -d --restart unless-stopped --name originless \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-v originlessd:/data \
-e STORAGE_MAX=200GB \
ghcr.io/besoeasy/originless
That is where http://localhost:3232/upload comes from in the examples below.
Upload a local file to Originless/IPFS.
For .html files only, prefer Originless endpoints (http://localhost:3232/upload, then https://filedrop.besoeasy.com/upload) and do not route HTML uploads to Blossom fallback servers.
Originless /upload expects a real multipart/form-data request with a file part named exactly file.
Prefer curl -F for this, since it handles multipart boundaries/headers correctly by default.
If another client/runtime is used, it must fully replicate curl -F "file=@..." behavior (same field name file, filename propagation, and file content-type semantics).
Usage:
# HTML upload (Originless only)
curl -X POST -F "file=@/path/to/index.html" http://localhost:3232/upload || \
curl -X POST -F "file=@/path/to/index.html" https://filedrop.besoeasy.com/upload
# Self-hosted
curl -X POST -F "file=@/path/to/file.pdf" http://localhost:3232/upload
# Public gateway
curl -X POST -F "file=@/path/to/file.pdf" https://filedrop.besoeasy.com/upload
# Fallback strategy for non-HTML files (Originless first, then Blossom servers)
SERVERS=(
"http://localhost:3232/upload"
"https://filedrop.besoeasy.com/upload"
"https://blossom.primal.net/upload"
"https://24242.io/upload"
)
MAX_RETRIES=7
for ((i=0; i<MAX_RETRIES; i++)); do
idx=$((i % ${#SERVERS[@]}))
target="${SERVERS[$idx]}"
echo "Trying: $target"
if curl -fsS -X POST -F "file=@/path/to/file.pdf" "$target"; then
echo "Upload succeeded via $target"
break
fi
if [[ $i -eq $((MAX_RETRIES-1)) ]]; then
echo "All upload attempts failed after $MAX_RETRIES retries"
exit 1
fi
done
Response:
{
"status": "success",
"cid": "QmX5ZTbH9uP3qMq7L8vN2jK3bR9wC4eF6gD7h",
"url": "https://dweb.link/ipfs/QmX5ZTbH9uP3qMq7L8vN2jK3bR9wC4eF6gD7h?filename=file.pdf",
"size": 245678,
"type": "application/pdf",
"filename": "file.pdf"
}
When to use:
Blossom compatibility note:
/upload fails, probe server capabilities first (for example /.well-known/nostr/nip96.json) and adapt to server-specific upload endpoints.Mirror remote URL content to IPFS.
Usage:
curl -X POST http://localhost:3232/remoteupload \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/image.png"}'
When to use:
Create client-side encrypted uploads for private sharing.
Workflow:
{cid}#{decryption_key}Example:
const encrypted = await encryptWithPassphrase(content, passphrase);
const response = await fetch('http://localhost:3232/upload', {
method: 'POST',
body: formDataWithEncrypted(encrypted)
});
const shareLink = `${response.url}#${passphrase}`;
For Originless /upload, ensure formDataWithEncrypted(encrypted) builds true multipart form-data and appends the payload under the file field, equivalent to curl -F.
When to use:
Pin CIDs for permanent storage (requires Daku authentication).
Generate Daku Credentials:
node -e "const { generateKeyPair } = require('daku'); const keys = generateKeyPair(); console.log('Public:', keys.publicKey); console.log('Private:', keys.privateKey);"
Pin a CID:
curl -X POST http://localhost:3232/pin/add \
-H "daku: YOUR_DAKU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cids": ["QmHash1", "QmHash2"]}'
List pins:
curl -H "daku: YOUR_DAKU_TOKEN" http://localhost:3232/pin/list
Remove pin:
curl -X POST http://localhost:3232/pin/remove \
-H "daku: YOUR_DAKU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cid": "QmHash"}'
When to use:
User wants to share file?
├─ Must content persist permanently?
│ ├─ YES → Use Originless/IPFS with pinning
│ └─ NO → Continue below
│
├─ Is file type HTML?
│ ├─ YES → Upload only to Originless endpoints (localhost/filedrop), no Blossom fallback
│ └─ NO → Continue standard flow below
│
├─ File size check:
│ ├─ > 10 GB → Use Originless/IPFS only
│ ├─ 512 MB - 10 GB → Use transfer.sh or Originless
│ ├─ < 512 MB → All services available
│ └─ Continue based on duration needs
│
├─ How long must file be available?
│ ├─ Permanent → Originless/IPFS with pinning
│ ├─ Up to 1 year → 0x0.st or Originless
│ ├─ Up to 14 days → transfer.sh
│ └─ Temporary → Any service
│
├─ Is privacy critical?
│ ├─ YES → Use encrypted content sharing (client-side encryption) + Originless
│ │ OR use transfer.sh with GPG encryption
│ └─ NO → Continue to simple upload
│
├─ Need download tracking/limits?
│ ├─ YES → Use transfer.sh
│ └─ NO → Continue to simple upload
│
├─ Quick temporary share?
│ ├─ YES → temp.sh (3 days, up to 4GB) or 0x0.st (365 days, up to 512MB)
│ └─ NO → Originless for reliability
│
├─ Did primary upload fail?
│ ├─ YES → Try fallback: transfer.sh → 0x0.st → temp.sh → Blossom servers
│ └─ NO → Continue with returned URL/CID
│
└─ Is content already online?
├─ YES → Use Originless /remoteupload to mirror it
└─ NO → Direct upload
Upload files to 0x0.st - a simple, no-frills file hosting service.
Features:
Usage:
# Basic upload
curl -F "file=@/path/to/file.pdf" https://0x0.st
# With custom filename
curl -F "file=@/path/to/data.json" https://0x0.st
# Upload with custom expiration (in days, max 365)
curl -F "file=@/path/to/image.png" -F "expires=30" https://0x0.st
# Upload with secret token for deletion
curl -F "file=@/path/to/document.pdf" -F "secret=" https://0x0.st
Response: Returns a direct URL to the uploaded file:
https://0x0.st/XaBc.pdf
Delete uploaded file (if secret token was provided):
curl -F "token=YOUR_SECRET_TOKEN" -F "delete=" https://0x0.st/XaBc.pdf
When to use:
Limitations:
Upload files to temp.sh — a simple, no-auth file sharing service.
Features:
Usage:
# Basic upload
curl -F "file=@/path/to/file.pdf" https://temp.sh/upload
# Any file type
curl -F "file=@video.mp4" https://temp.sh/upload
# Upload from stdin (text)
echo "Hello world" | curl -F "file=@-" https://temp.sh/upload
# Upload directory (tar first)
tar czf - mydir/ | curl -F "file=@-;filename=mydir.tar.gz" https://temp.sh/upload
Response: Returns a direct download URL:
https://temp.sh/abc123
Download:
curl -L https://temp.sh/abc123 -o file.pdf
ShareX config (Windows):
# Download from https://temp.sh/temp.sh.sxcu
When to use:
Limitations:
Upload files to transfer.sh - a popular temporary file hosting service.
Features:
Usage:
# Basic upload
curl --upload-file /path/to/file.pdf https://transfer.sh/file.pdf
# Upload with custom expiration (max 14 days)
curl --upload-file /path/to/image.png https://transfer.sh/image.png?expires=7d
# Download count limit
curl --upload-file /path/to/data.zip https://transfer.sh/data.zip?downloads=5
# Upload with encryption (requires gpg)
cat /path/to/secret.txt | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/secret.txt.gpg
# Upload from stdin
cat /path/to/file.txt | curl --upload-file "-" https://transfer.sh/file.txt
# Upload directory (tar + gzip)
tar czf - /path/to/directory | curl --upload-file "-" https://transfer.sh/directory.tar.gz
# Multiple files
curl --upload-file /path/to/file1.txt https://transfer.sh/file1.txt && \
curl --upload-file /path/to/file2.txt https://transfer.sh/file2.txt
Response: Returns a direct URL to the uploaded file:
https://transfer.sh/random/file.pdf
Download uploaded file:
curl https://transfer.sh/random/file.pdf -o file.pdf
# Download and decrypt (if encrypted with gpg)
curl https://transfer.sh/random/secret.txt.gpg | gpg -d > secret.txt
Advanced options:
# Get download count
curl -H "X-Transfer-Count: true" https://transfer.sh/random/file.pdf
# Upload with basic auth protection
curl -u username:password --upload-file /path/to/file.pdf https://transfer.sh/file.pdf
When to use:
Limitations:
Comparison:
| Service | Max Size | Max Duration | Encryption | Persistence | Best For |
|---|---|---|---|---|---|
| temp.sh | 4 GB | 3 days | None | Temporary | Quick shares, medium files |
| Originless/IPFS | ~200GB (configurable) | Permanent (if pinned) | Client-side | Decentralized | Long-term, censorship-resistant |
| transfer.sh | 10 GB | 14 days | GPG optional | Temporary | Large temporary files |
| 0x0.st | 512 MB | 365 days | None | Temporary | Quick sharing, small files |
Originless/IPFS Endpoints:
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/upload | POST | No | Upload local file |
/remoteupload | POST | No | Mirror remote URL |
/pin/add | POST | Daku | Pin CID permanently |
/pin/list | GET | Daku | List pinned CIDs |
/pin/remove | POST | Daku | Unpin a CID |
Alternative Services Quick Commands:
| Service | Upload Command | Max Size | Expiration |
|---|---|---|---|
| temp.sh | curl -F "file=@file.pdf" https://temp.sh/upload | 4 GB | 3 days |
| 0x0.st | curl -F "file=@file.pdf" https://0x0.st | 512 MB | 365 days |
| transfer.sh | curl --upload-file file.pdf https://transfer.sh/file.pdf | 10 GB | 14 days |
| Originless | curl -F "file=@file.pdf" http://localhost:3232/upload | ~200GB | Permanent* |
*Permanent if pinned, otherwise subject to garbage collection
Recommended fallback servers:
Gateway URLs:
Docker (Recommended):
docker run -d --restart unless-stopped --name originless \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-v originlessd:/data \
-e STORAGE_MAX=200GB \
ghcr.io/besoeasy/originless
Access:
TRUE PRIVACY:
CLIENT-SIDE ENCRYPTION:
CAVEATS:
Screenshot sharing (permanent):
# Save to IPFS for permanent storage
curl -F "file=@screenshot.png" http://localhost:3232/upload
Screenshot sharing (temporary):
# Quick share with 0x0.st
curl -F "file=@screenshot.png" https://0x0.st
# Or with transfer.sh for larger files
curl --upload-file screenshot.png https://transfer.sh/screenshot.png
Nostr media attachment:
# Upload image and embed IPFS URL in Nostr event
curl -F "file=@image.jpg" https://filedrop.besoeasy.com/upload
# Returns: https://dweb.link/ipfs/QmX...
Anonymous paste (14-day expiration):
# Quick text sharing
echo "Secret message" | curl --upload-file "-" https://transfer.sh/message.txt
Anonymous paste (permanent):
# Permanent text storage
echo "Important note" > note.txt
curl -F "file=@note.txt" http://localhost:3232/upload
Large file transfer:
# For files 1-10 GB, use transfer.sh
curl --upload-file large-video.mp4 https://transfer.sh/video.mp4
# For files > 10 GB, use Originless/IPFS
curl -F "file=@huge-dataset.tar.gz" http://localhost:3232/upload
Encrypted temporary sharing:
# Using transfer.sh with GPG
cat sensitive.pdf | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/sensitive.pdf.gpg
# Share URL + passphrase separately
Originless/IPFS:
Alternative Services: