{"id":"4b186c98-2e61-4e04-8daa-c54774ba9097","shortId":"wdrLE7","kind":"skill","title":"anonymous-file-upload","tagline":"Upload and host files anonymously using decentralized storage with Originless and IPFS.","description":"# Originless Agent Skill\n# Decentralized File Storage & Anonymous Content Hosting\n# Source: https://github.com/besoeasy/Originless\n\n## Overview\nOriginless is a privacy-first, decentralized file hosting backend using IPFS.\n\n**Key Principles:**\n- Anonymous uploads (no accounts, no tracking)\n- Persistent, censorship-resistant content via IPFS\n- Client-side encryption for sensitive data\n- Decentralized authentication (Daku)\n\n**Endpoints:**\n- Self-hosted: http://localhost:3232 (Docker recommended)\n- Public gateway: https://filedrop.besoeasy.com\n- Blossom fallback servers:\n  - https://blossom.primal.net\n  - https://24242.io/\n\nIf Docker is available, the best setup is running Originless locally:\n\n```bash\ndocker run -d --restart unless-stopped --name originless \\\n  -p 3232:3232 \\\n  -p 4001:4001/tcp \\\n  -p 4001:4001/udp \\\n  -v originlessd:/data \\\n  -e STORAGE_MAX=200GB \\\n  ghcr.io/besoeasy/originless\n```\n\nThat is where `http://localhost:3232/upload` comes from in the examples below.\n\n---\n\n## Skills\n\n### upload_file_anonymously\n\nUpload a local file to Originless/IPFS.\n\nFor `.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.\n\nOriginless `/upload` expects a real `multipart/form-data` request with a file part named exactly `file`.\nPrefer `curl -F` for this, since it handles multipart boundaries/headers correctly by default.\nIf another client/runtime is used, it must fully replicate `curl -F \"file=@...\"` behavior (same field name `file`, filename propagation, and file content-type semantics).\n\n**Usage:**\n```bash\n# HTML upload (Originless only)\ncurl -X POST -F \"file=@/path/to/index.html\" http://localhost:3232/upload || \\\ncurl -X POST -F \"file=@/path/to/index.html\" https://filedrop.besoeasy.com/upload\n\n# Self-hosted\ncurl -X POST -F \"file=@/path/to/file.pdf\" http://localhost:3232/upload\n\n# Public gateway\ncurl -X POST -F \"file=@/path/to/file.pdf\" https://filedrop.besoeasy.com/upload\n\n# Fallback strategy for non-HTML files (Originless first, then Blossom servers)\nSERVERS=(\n  \"http://localhost:3232/upload\"\n  \"https://filedrop.besoeasy.com/upload\"\n  \"https://blossom.primal.net/upload\"\n  \"https://24242.io/upload\"\n)\n\nMAX_RETRIES=7\nfor ((i=0; i<MAX_RETRIES; i++)); do\n  idx=$((i % ${#SERVERS[@]}))\n  target=\"${SERVERS[$idx]}\"\n  echo \"Trying: $target\"\n\n  if curl -fsS -X POST -F \"file=@/path/to/file.pdf\" \"$target\"; then\n    echo \"Upload succeeded via $target\"\n    break\n  fi\n\n  if [[ $i -eq $((MAX_RETRIES-1)) ]]; then\n    echo \"All upload attempts failed after $MAX_RETRIES retries\"\n    exit 1\n  fi\ndone\n```\n\n**Response:**\n```json\n{\n  \"status\": \"success\",\n  \"cid\": \"QmX5ZTbH9uP3qMq7L8vN2jK3bR9wC4eF6gD7h\",\n  \"url\": \"https://dweb.link/ipfs/QmX5ZTbH9uP3qMq7L8vN2jK3bR9wC4eF6gD7h?filename=file.pdf\",\n  \"size\": 245678,\n  \"type\": \"application/pdf\",\n  \"filename\": \"file.pdf\"\n}\n```\n\n**When to use:**\n- User asks to upload/share a file anonymously\n- Need permanent, account-free storage\n- Sharing files without creating accounts\n- Originless endpoint is down or rate-limited, and you need fallback servers\n\n**Blossom compatibility note:**\n- Some Blossom/Nostr media servers may use slightly different upload routes or auth requirements.\n- If `/upload` fails, probe server capabilities first (for example `/.well-known/nostr/nip96.json`) and adapt to server-specific upload endpoints.\n\n---\n\n### mirror_web_content\n\nMirror remote URL content to IPFS.\n\n**Usage:**\n```bash\ncurl -X POST http://localhost:3232/remoteupload \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com/image.png\"}'\n```\n\n**When to use:**\n- User wants to backup/arch web content\n- Preserving content that might be taken down\n- Creating permanent mirrors of online resources\n\n---\n\n### share_encrypted_content\n\nCreate client-side encrypted uploads for private sharing.\n\n**Workflow:**\n1. Encrypt content client-side (AES-GCM with Web Crypto API)\n2. Upload ciphertext to Originless\n3. Generate share link: `{cid}#{decryption_key}`\n4. Recipient decrypts locally\n\n**Example:**\n```javascript\nconst encrypted = await encryptWithPassphrase(content, passphrase);\nconst response = await fetch('http://localhost:3232/upload', {\n  method: 'POST',\n  body: formDataWithEncrypted(encrypted)\n});\nconst shareLink = `${response.url}#${passphrase}`;\n```\n\nFor Originless `/upload`, ensure `formDataWithEncrypted(encrypted)` builds true multipart form-data and appends the payload under the `file` field, equivalent to `curl -F`.\n\n**When to use:**\n- User wants private file sharing\n- Sensitive content that must remain confidential\n- Content that even the server shouldn't be able to read\n\n---\n\n### manage_persistent_pins\n\nPin CIDs for permanent storage (requires Daku authentication).\n\n**Generate Daku Credentials:**\n```bash\nnode -e \"const { generateKeyPair } = require('daku'); const keys = generateKeyPair(); console.log('Public:', keys.publicKey); console.log('Private:', keys.privateKey);\"\n```\n\n**Pin a CID:**\n```bash\ncurl -X POST http://localhost:3232/pin/add \\\n  -H \"daku: YOUR_DAKU_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"cids\": [\"QmHash1\", \"QmHash2\"]}'\n```\n\n**List pins:**\n```bash\ncurl -H \"daku: YOUR_DAKU_TOKEN\" http://localhost:3232/pin/list\n```\n\n**Remove pin:**\n```bash\ncurl -X POST http://localhost:3232/pin/remove \\\n  -H \"daku: YOUR_DAKU_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"cid\": \"QmHash\"}'\n```\n\n**When to use:**\n- User wants content to persist forever\n- Preventing garbage collection of important files\n- Managing a personal content library\n\n---\n\n## Decision Tree\n\n```\nUser wants to share file?\n├─ Must content persist permanently?\n│  ├─ YES → Use Originless/IPFS with pinning\n│  └─ NO → Continue below\n│\n├─ Is file type HTML?\n│  ├─ YES → Upload only to Originless endpoints (localhost/filedrop), no Blossom fallback\n│  └─ NO → Continue standard flow below\n│\n├─ File size check:\n│  ├─ > 10 GB → Use Originless/IPFS only\n│  ├─ 512 MB - 10 GB → Use transfer.sh or Originless\n│  ├─ < 512 MB → All services available\n│  └─ Continue based on duration needs\n│\n├─ How long must file be available?\n│  ├─ Permanent → Originless/IPFS with pinning\n│  ├─ Up to 1 year → 0x0.st or Originless\n│  ├─ Up to 14 days → transfer.sh\n│  └─ Temporary → Any service\n│\n├─ Is privacy critical?\n│  ├─ YES → Use encrypted content sharing (client-side encryption) + Originless\n│  │        OR use transfer.sh with GPG encryption\n│  └─ NO → Continue to simple upload\n│\n├─ Need download tracking/limits?\n│  ├─ YES → Use transfer.sh\n│  └─ NO → Continue to simple upload\n│\n├─ Quick temporary share?\n│  ├─ YES → 0x0.st (simplest) or transfer.sh\n│  └─ NO → Originless for reliability\n│\n├─ Did primary upload fail?\n│  ├─ YES → Try fallback: transfer.sh → 0x0.st → Blossom servers\n│  └─ NO → Continue with returned URL/CID\n│\n└─ Is content already online?\n   ├─ YES → Use Originless /remoteupload to mirror it\n   └─ NO → Direct upload\n```\n\n---\n\n## Alternative Anonymous File Hosts\n\n### upload_to_0x0\n\nUpload files to 0x0.st - a simple, no-frills file hosting service.\n\n**Features:**\n- No registration required\n- Files expire after 365 days (1 year)\n- Maximum file size: 512 MB\n- Simple HTTP upload\n\n**Usage:**\n```bash\n# Basic upload\ncurl -F \"file=@/path/to/file.pdf\" https://0x0.st\n\n# With custom filename\ncurl -F \"file=@/path/to/data.json\" https://0x0.st\n\n# Upload with custom expiration (in days, max 365)\ncurl -F \"file=@/path/to/image.png\" -F \"expires=30\" https://0x0.st\n\n# Upload with secret token for deletion\ncurl -F \"file=@/path/to/document.pdf\" -F \"secret=\" https://0x0.st\n```\n\n**Response:**\nReturns a direct URL to the uploaded file:\n```\nhttps://0x0.st/XaBc.pdf\n```\n\n**Delete uploaded file (if secret token was provided):**\n```bash\ncurl -F \"token=YOUR_SECRET_TOKEN\" -F \"delete=\" https://0x0.st/XaBc.pdf\n```\n\n**When to use:**\n- Quick temporary file sharing (up to 1 year)\n- Smaller files (under 512 MB)\n- When IPFS persistence is not needed\n- Simple paste/screenshot sharing\n- Quick file transfers without accounts\n\n**Limitations:**\n- Files expire after 365 days maximum\n- Not decentralized (single service)\n- No encryption built-in\n- Files can be taken down\n\n---\n\n### upload_to_transfer_sh\n\nUpload files to transfer.sh - a popular temporary file hosting service.\n\n**Features:**\n- No registration required\n- Files expire after 14 days by default\n- Maximum file size: 10 GB\n- Supports encryption with GPG\n- Download count tracking\n\n**Usage:**\n```bash\n# Basic upload\ncurl --upload-file /path/to/file.pdf https://transfer.sh/file.pdf\n\n# Upload with custom expiration (max 14 days)\ncurl --upload-file /path/to/image.png https://transfer.sh/image.png?expires=7d\n\n# Download count limit\ncurl --upload-file /path/to/data.zip https://transfer.sh/data.zip?downloads=5\n\n# Upload with encryption (requires gpg)\ncat /path/to/secret.txt | gpg -ac -o- | curl -X PUT --upload-file \"-\" https://transfer.sh/secret.txt.gpg\n\n# Upload from stdin\ncat /path/to/file.txt | curl --upload-file \"-\" https://transfer.sh/file.txt\n\n# Upload directory (tar + gzip)\ntar czf - /path/to/directory | curl --upload-file \"-\" https://transfer.sh/directory.tar.gz\n\n# Multiple files\ncurl --upload-file /path/to/file1.txt https://transfer.sh/file1.txt && \\\ncurl --upload-file /path/to/file2.txt https://transfer.sh/file2.txt\n```\n\n**Response:**\nReturns a direct URL to the uploaded file:\n```\nhttps://transfer.sh/random/file.pdf\n```\n\n**Download uploaded file:**\n```bash\ncurl https://transfer.sh/random/file.pdf -o file.pdf\n\n# Download and decrypt (if encrypted with gpg)\ncurl https://transfer.sh/random/secret.txt.gpg | gpg -d > secret.txt\n```\n\n**Advanced options:**\n```bash\n# Get download count\ncurl -H \"X-Transfer-Count: true\" https://transfer.sh/random/file.pdf\n\n# Upload with basic auth protection\ncurl -u username:password --upload-file /path/to/file.pdf https://transfer.sh/file.pdf\n```\n\n**When to use:**\n- Temporary file sharing (up to 14 days)\n- Large files up to 10 GB\n- Quick transfers without persistence needs\n- Download count tracking required\n- Built-in GPG encryption for sensitive data\n- Sending files with expiration/download limits\n\n**Limitations:**\n- Files expire after 14 days maximum\n- Not decentralized (single service)\n- No permanent storage\n- Service availability depends on infrastructure\n\n**Comparison:**\n\n| Service | Max Size | Max Duration | Encryption | Persistence | Best For |\n|---------|----------|--------------|------------|-------------|----------|\n| **Originless/IPFS** | ~200GB (configurable) | Permanent (if pinned) | Client-side | Decentralized | Long-term, censorship-resistant |\n| **transfer.sh** | 10 GB | 14 days | GPG optional | Temporary | Large temporary files |\n| **0x0.st** | 512 MB | 365 days | None | Temporary | Quick sharing, small files |\n\n---\n\n## Quick Reference\n\n**Originless/IPFS Endpoints:**\n\n| Endpoint | Method | Auth | Purpose |\n|----------|--------|------|---------|\n| `/upload` | POST | No | Upload local file |\n| `/remoteupload` | POST | No | Mirror remote URL |\n| `/pin/add` | POST | Daku | Pin CID permanently |\n| `/pin/list` | GET | Daku | List pinned CIDs |\n| `/pin/remove` | POST | Daku | Unpin a CID |\n\n**Alternative Services Quick Commands:**\n\n| Service | Upload Command | Max Size | Expiration |\n|---------|----------------|----------|------------|\n| **0x0.st** | `curl -F \"file=@file.pdf\" https://0x0.st` | 512 MB | 365 days |\n| **transfer.sh** | `curl --upload-file file.pdf https://transfer.sh/file.pdf` | 10 GB | 14 days |\n| **Originless** | `curl -F \"file=@file.pdf\" http://localhost:3232/upload` | ~200GB | Permanent* |\n\n*Permanent if pinned, otherwise subject to garbage collection\n\n**Recommended fallback servers:**\n- https://blossom.primal.net\n- https://24242.io/\n\n**Gateway URLs:**\n- https://dweb.link/ipfs/{CID} (default)\n- https://ipfs.io/ipfs/{CID}\n- https://cloudflare-ipfs.com/ipfs/{CID}\n\n---\n\n## Deployment\n\n**Docker (Recommended):**\n```bash\ndocker run -d --restart unless-stopped --name originless \\\n  -p 3232:3232 \\\n  -p 4001:4001/tcp \\\n  -p 4001:4001/udp \\\n  -v originlessd:/data \\\n  -e STORAGE_MAX=200GB \\\n  ghcr.io/besoeasy/originless\n```\n\n**Access:**\n- API: http://localhost:3232\n- Web UI: http://localhost:3232/index.html\n- Admin: http://localhost:3232/admin.html\n\n---\n\n## Privacy & Security Notes\n\n**TRUE PRIVACY:**\n- No account creation required\n- No IP logging or activity tracking\n- Content addressed by cryptographic hash (CID)\n\n**CLIENT-SIDE ENCRYPTION:**\n- Encrypt sensitive content before uploading\n- Passphrase never leaves user's device\n- Server cannot read encrypted content\n\n**CAVEATS:**\n- Uploaded content is public unless encrypted\n- Same file = same CID (deterministic)\n- Unpinned content may be garbage collected\n\n---\n\n## Common Patterns\n\n**Screenshot sharing (permanent):**\n```bash\n# Save to IPFS for permanent storage\ncurl -F \"file=@screenshot.png\" http://localhost:3232/upload\n```\n\n**Screenshot sharing (temporary):**\n```bash\n# Quick share with 0x0.st\ncurl -F \"file=@screenshot.png\" https://0x0.st\n\n# Or with transfer.sh for larger files\ncurl --upload-file screenshot.png https://transfer.sh/screenshot.png\n```\n\n**Nostr media attachment:**\n```bash\n# Upload image and embed IPFS URL in Nostr event\ncurl -F \"file=@image.jpg\" https://filedrop.besoeasy.com/upload\n# Returns: https://dweb.link/ipfs/QmX...\n```\n\n**Anonymous paste (14-day expiration):**\n```bash\n# Quick text sharing\necho \"Secret message\" | curl --upload-file \"-\" https://transfer.sh/message.txt\n```\n\n**Anonymous paste (permanent):**\n```bash\n# Permanent text storage\necho \"Important note\" > note.txt\ncurl -F \"file=@note.txt\" http://localhost:3232/upload\n```\n\n**Large file transfer:**\n```bash\n# For files 1-10 GB, use transfer.sh\ncurl --upload-file large-video.mp4 https://transfer.sh/video.mp4\n\n# For files > 10 GB, use Originless/IPFS\ncurl -F \"file=@huge-dataset.tar.gz\" http://localhost:3232/upload\n```\n\n**Encrypted temporary sharing:**\n```bash\n# Using transfer.sh with GPG\ncat sensitive.pdf | gpg -ac -o- | curl -X PUT --upload-file \"-\" https://transfer.sh/sensitive.pdf.gpg\n# Share URL + passphrase separately\n```\n\n---\n\n## Resources\n\n**Originless/IPFS:**\n- GitHub: https://github.com/besoeasy/Originless\n- Daku Auth: https://www.npmjs.com/package/daku\n- IPFS Docs: https://docs.ipfs.tech\n\n**Alternative Services:**\n- 0x0.st: https://0x0.st (source: https://github.com/mia-0/0x0)\n- transfer.sh: https://transfer.sh (source: https://github.com/dutchcoders/transfer.sh)","tags":["anonymous","file","upload","open","skills","besoeasy","agent-skills","ai-agents","claude-code","clawdbot","clawdbot-skill","llm-tools"],"capabilities":["skill","source-besoeasy","skill-anonymous-file-upload","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-clawdbot","topic-clawdbot-skill","topic-llm-tools","topic-mcp-server","topic-openai","topic-openclaw","topic-vibe-coding","topic-vibecoding"],"categories":["open-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/besoeasy/open-skills/anonymous-file-upload","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add besoeasy/open-skills","source_repo":"https://github.com/besoeasy/open-skills","install_from":"skills.sh"}},"qualityScore":"0.505","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 111 github stars · SKILL.md body (14,430 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:55:02.493Z","embedding":null,"createdAt":"2026-04-18T22:10:31.898Z","updatedAt":"2026-05-02T12:55:02.493Z","lastSeenAt":"2026-05-02T12:55:02.493Z","tsv":"'-1':331 '-10':1663 '/.well-known/nostr/nip96.json':421 '/besoeasy/originless':29,123,1480,1721 '/data':116,1473 '/data.zip?downloads=5':1104 '/directory.tar.gz':1149 '/dutchcoders/transfer.sh)':1743 '/file.pdf':1078,1235,1407 '/file.txt':1135 '/file1.txt':1159 '/file2.txt':1167 '/image.png':455 '/image.png?expires=7d':1093 '/ipfs/':1438,1443,1447 '/ipfs/qmx...':1619 '/ipfs/qmx5ztbh9up3qmq7l8vn2jk3br9wc4ef6gd7h?filename=file.pdf':355 '/message.txt':1638 '/mia-0/0x0)':1737 '/package/daku':1726 '/path/to/data.json':916 '/path/to/data.zip':1101 '/path/to/directory':1142 '/path/to/document.pdf':943 '/path/to/file.pdf':251,261,316,908,1075,1232 '/path/to/file.txt':1128 '/path/to/file1.txt':1156 '/path/to/file2.txt':1164 '/path/to/image.png':929,1090 '/path/to/index.html':231,239 '/path/to/secret.txt':1111 '/pin/add':1361 '/pin/list':1367 '/pin/remove':1373 '/random/file.pdf':1179,1187,1219 '/random/secret.txt.gpg':1200 '/remoteupload':856,1355 '/screenshot.png':1595 '/secret.txt.gpg':1123 '/sensitive.pdf.gpg':1711 '/upload':157,169,242,264,282,285,288,413,545,1349,1615 '/video.mp4':1677 '/xabc.pdf':958,978 '0':294 '0x0':869 '0x0.st':775,825,841,873,909,917,933,946,957,977,1330,1389,1394,1576,1581,1732,1733 '0x0.st/xabc.pdf':956,976 '1':343,491,773,891,988,1662 '10':738,745,1058,1250,1320,1408,1680 '14':780,1051,1084,1244,1278,1322,1410,1622 '2':504 '200gb':120,1304,1419,1477 '24242.io':83,287,1433 '24242.io/upload':286 '245678':357 '3':509 '30':932 '3232':73,106,107,1463,1464,1484 '3232/admin.html':1491 '3232/index.html':1488 '3232/pin/add':630 '3232/pin/list':655 '3232/pin/remove':663 '3232/remoteupload':445 '3232/upload':128,153,233,253,279,533,1418,1568,1655,1689 '365':889,925,1013,1333,1397 '4':516 '4001':109,112,1466,1469 '4001/tcp':110,1467 '4001/udp':113,1470 '512':743,751,896,993,1331,1395 '7':291 'abl':589 'ac':1113,1701 'access':1481 'account':48,375,382,1008,1498 'account-fre':374 'activ':1505 'adapt':423 'address':1508 'admin':1489 'advanc':1204 'ae':498 'aes-gcm':497 'agent':18 'alreadi':851 'altern':863,1379,1730 'anonym':2,9,23,45,138,371,864,1620,1639 'anonymous-file-upload':1 'anoth':196 'api':503,1482 'append':556 'application/json':450,640,673 'application/pdf':359 'ask':366 'attach':1598 'attempt':336 'auth':410,1223,1347,1723 'authent':66,602 'avail':87,755,766,1289 'await':524,530 'backend':40 'backup/arch':462 'base':757 'bash':95,221,440,606,625,647,658,902,967,1068,1183,1206,1452,1556,1572,1599,1625,1642,1659,1693 'basic':903,1069,1222 'behavior':207 'best':89,1301 'blossom':79,165,275,396,728,842 'blossom.primal.net':82,284,1432 'blossom.primal.net/upload':283 'blossom/nostr':400 'bodi':536 'boundaries/headers':191 'break':324 'build':549 'built':1023,1262 'built-in':1022,1261 'cannot':1529 'capabl':417 'cat':1110,1127,1698 'caveat':1533 'censorship':53,1317 'censorship-resist':52,1316 'check':737 'cid':350,513,596,624,642,675,1365,1372,1378,1439,1444,1448,1512,1543 'ciphertext':506 'client':59,483,495,795,1310,1514 'client-sid':58,482,494,794,1309,1513 'client/runtime':197 'cloudflare-ipfs.com':1446 'cloudflare-ipfs.com/ipfs/':1445 'collect':688,1428,1550 'come':129 'command':1382,1385 'common':1551 'comparison':1293 'compat':397 'confidenti':580 'configur':1305 'console.log':616,619 'const':522,528,539,609,613 'content':24,55,217,432,436,448,464,466,480,493,526,576,581,638,671,682,695,705,792,850,1507,1519,1532,1535,1546 'content-typ':216,447,637,670 'continu':714,731,756,806,817,845 'correct':192 'count':1065,1095,1209,1215,1258 'creat':381,472,481 'creation':1499 'credenti':605 'critic':788 'crypto':502 'cryptograph':1510 'curl':183,204,226,234,246,256,310,441,565,626,648,659,905,913,926,940,968,1071,1086,1097,1115,1129,1143,1152,1160,1184,1197,1210,1225,1390,1400,1413,1563,1577,1588,1609,1632,1650,1667,1684,1703 'custom':911,920,1081 'czf':1141 'd':98,451,641,674,1202,1455 'daku':67,601,604,612,632,634,650,652,665,667,1363,1369,1375,1722 'data':64,554,1268 'day':781,890,923,1014,1052,1085,1245,1279,1323,1334,1398,1411,1623 'decentr':11,20,37,65,1017,1282,1312 'decis':697 'decrypt':514,518,1192 'default':194,1054,1440 'delet':939,959,975 'depend':1290 'deploy':1449 'determinist':1544 'devic':1527 'differ':406 'direct':861,950,1171 'directori':1137 'doc':1728 'docker':74,85,96,1450,1453 'docs.ipfs.tech':1729 'done':345 'download':811,1064,1094,1180,1190,1208,1257 'durat':759,1298 'dweb.link':354,1437,1618 'dweb.link/ipfs/':1436 'dweb.link/ipfs/qmx...':1617 'dweb.link/ipfs/qmx5ztbh9up3qmq7l8vn2jk3br9wc4ef6gd7h?filename=file.pdf':353 'e':117,608,1474 'echo':306,319,333,1629,1646 'emb':1603 'encrypt':61,479,485,492,523,538,548,791,797,804,1021,1061,1107,1194,1265,1299,1516,1517,1531,1539,1690 'encryptwithpassphras':525 'endpoint':68,151,384,429,725,1344,1345 'ensur':546 'eq':328 'equival':563 'even':583 'event':1608 'exact':180 'exampl':133,420,520 'example.com':454 'example.com/image.png':453 'exit':342 'expect':170 'expir':887,921,931,1011,1049,1082,1276,1388,1624 'expiration/download':1272 'f':184,205,229,237,249,259,314,566,906,914,927,930,941,944,969,974,1391,1414,1564,1578,1610,1651,1685 'fail':337,414,836 'fallback':80,166,265,394,729,839,1430 'featur':882,1044 'fetch':531 'fi':325,344 'field':209,562 'file':3,8,21,38,137,142,147,177,181,206,211,215,230,238,250,260,271,315,370,379,561,573,691,703,717,735,764,865,871,879,886,894,907,915,928,942,955,961,984,991,1005,1010,1025,1035,1041,1048,1056,1074,1089,1100,1120,1132,1146,1151,1155,1163,1176,1182,1231,1240,1247,1270,1275,1329,1340,1354,1392,1403,1415,1541,1565,1579,1587,1591,1611,1635,1652,1657,1661,1670,1679,1686,1708 'file.pdf':361,1189,1393,1404,1416 'filedrop.besoeasy.com':78,156,241,263,281,1614 'filedrop.besoeasy.com/upload':155,240,262,280,1613 'filenam':212,360,912 'first':36,273,418 'flow':733 'forev':685 'form':553 'form-data':552 'formdatawithencrypt':537,547 'free':376 'frill':878 'fss':311 'fulli':202 'garbag':687,1427,1549 'gateway':77,255,1434 'gb':739,746,1059,1251,1321,1409,1664,1681 'gcm':499 'generat':510,603 'generatekeypair':610,615 'get':1207,1368 'ghcr.io':122,1479 'ghcr.io/besoeasy/originless':121,1478 'github':1718 'github.com':28,1720,1736,1742 'github.com/besoeasy/originless':27,1719 'github.com/dutchcoders/transfer.sh)':1741 'github.com/mia-0/0x0)':1735 'gpg':803,1063,1109,1112,1196,1201,1264,1324,1697,1700 'gzip':1139 'h':446,631,636,649,664,669,1211 'handl':189 'hash':1511 'host':7,25,39,71,245,866,880,1042 'html':146,162,222,270,719 'http':899 'huge-dataset.tar.gz':1687 'idx':300,305 'imag':1601 'image.jpg':1612 'import':690,1647 'infrastructur':1292 'ip':1502 'ipf':16,42,57,438,996,1559,1604,1727 'ipfs.io':1442 'ipfs.io/ipfs/':1441 'javascript':521 'json':347 'key':43,515,614 'keys.privatekey':621 'keys.publickey':618 'larg':1246,1327,1656,1672 'large-video':1671 'larger':1586 'leav':1524 'librari':696 'limit':390,1009,1096,1273,1274 'link':512 'list':645,1370 'local':94,141,519,1353 'localhost':72,127,152,232,252,278,444,532,629,654,662,1417,1483,1487,1490,1567,1654,1688 'localhost/filedrop':726 'log':1503 'long':762,1314 'long-term':1313 'manag':592,692 'max':119,289,296,329,339,924,1083,1295,1297,1386,1476 'maximum':893,1015,1055,1280 'may':403,1547 'mb':744,752,897,994,1332,1396 'media':401,1597 'messag':1631 'method':534,1346 'might':468 'mirror':430,433,474,858,1358 'mp4':1674 'multipart':190,551 'multipart/form-data':173 'multipl':1150 'must':201,578,704,763 'name':103,179,210,1460 'need':372,393,760,810,1000,1256 'never':1523 'no-fril':876 'node':607 'non':269 'non-html':268 'none':1335 'nostr':1596,1607 'note':398,1494,1648 'note.txt':1649,1653 'o':1114,1188,1702 'onlin':476,852 'option':1205,1325 'originless':14,17,31,93,104,150,168,224,272,383,508,544,724,750,777,798,830,855,1412,1461 'originless/ipfs':144,710,741,768,1303,1343,1683,1717 'originlessd':115,1472 'otherwis':1424 'overview':30 'p':105,108,111,1462,1465,1468 'part':178 'passphras':527,542,1522,1714 'password':1228 'past':1621,1640 'paste/screenshot':1002 'pattern':1552 'payload':558 'perman':373,473,598,707,767,1286,1306,1366,1420,1421,1555,1561,1641,1643 'persist':51,593,684,706,997,1255,1300 'person':694 'pin':594,595,622,646,657,712,770,1308,1364,1371,1423 'popular':1039 'post':228,236,248,258,313,443,535,628,661,1350,1356,1362,1374 'prefer':149,182 'preserv':465 'prevent':686 'primari':834 'principl':44 'privaci':35,787,1492,1496 'privacy-first':34 'privat':488,572,620 'probe':415 'propag':213 'protect':1224 'provid':966 'public':76,254,617,1537 'purpos':1348 'put':1117,1705 'qmhash':676 'qmhash1':643 'qmhash2':644 'qmx5ztbh9up3qmq7l8vn2jk3br9wc4ef6gd7h':351 'quick':821,982,1004,1252,1337,1341,1381,1573,1626 'rate':389 'rate-limit':388 'read':591,1530 'real':172 'recipi':517 'recommend':75,1429,1451 'refer':1342 'registr':884,1046 'reliabl':832 'remain':579 'remot':434,1359 'remov':656 'replic':203 'request':174 'requir':411,600,611,885,1047,1108,1260,1500 'resist':54,1318 'resourc':477,1716 'respons':346,529,947,1168 'response.url':541 'restart':99,1456 'retri':290,297,330,340,341 'return':847,948,1169,1616 'rout':161,408 'run':92,97,1454 'save':1557 'screenshot':1553,1569 'screenshot.png':1566,1580,1592 'secret':936,945,963,972,1630 'secret.txt':1203 'secur':1493 'self':70,244 'self-host':69,243 'semant':219 'send':1269 'sensit':63,575,1267,1518 'sensitive.pdf':1699 'separ':1715 'server':81,167,276,277,302,304,395,402,416,426,585,843,1431,1528 'server-specif':425 'servic':754,785,881,1019,1043,1284,1288,1294,1380,1383,1731 'setup':90 'sh':1033 'share':378,478,489,511,574,702,793,823,985,1003,1241,1338,1554,1570,1574,1628,1692,1712 'sharelink':540 'shouldn':586 'side':60,484,496,796,1311,1515 'simpl':808,819,875,898,1001 'simplest':826 'sinc':187 'singl':1018,1283 'size':356,736,895,1057,1296,1387 'skill':19,135 'skill-anonymous-file-upload' 'slight':405 'small':1339 'smaller':990 'sourc':26,1734,1740 'source-besoeasy' 'specif':427 'standard':732 'status':348 'stdin':1126 'stop':102,1459 'storag':12,22,118,377,599,1287,1475,1562,1645 'strategi':266 'subject':1425 'succeed':321 'success':349 'support':1060 'taken':470,1028 'tar':1138,1140 'target':303,308,317,323 'temporari':783,822,983,1040,1239,1326,1328,1336,1571,1691 'term':1315 'text':1627,1644 'token':635,653,668,937,964,970,973 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-clawdbot' 'topic-clawdbot-skill' 'topic-llm-tools' 'topic-mcp-server' 'topic-openai' 'topic-openclaw' 'topic-vibe-coding' 'topic-vibecoding' 'track':50,1066,1259,1506 'tracking/limits':812 'transfer':1006,1032,1214,1253,1658 'transfer.sh':748,782,801,815,828,840,1037,1077,1092,1103,1122,1134,1148,1158,1166,1178,1186,1199,1218,1234,1319,1399,1406,1584,1594,1637,1666,1676,1695,1710,1738,1739 'transfer.sh/data.zip?downloads=5':1102 'transfer.sh/directory.tar.gz':1147 'transfer.sh/file.pdf':1076,1233,1405 'transfer.sh/file.txt':1133 'transfer.sh/file1.txt':1157 'transfer.sh/file2.txt':1165 'transfer.sh/image.png?expires=7d':1091 'transfer.sh/message.txt':1636 'transfer.sh/random/file.pdf':1177,1185,1217 'transfer.sh/random/secret.txt.gpg':1198 'transfer.sh/screenshot.png':1593 'transfer.sh/secret.txt.gpg':1121 'transfer.sh/sensitive.pdf.gpg':1709 'transfer.sh/video.mp4':1675 'tree':698 'tri':307,838 'true':550,1216,1495 'type':218,358,449,639,672,718 'u':1226 'ui':1486 'unless':101,1458,1538 'unless-stop':100,1457 'unpin':1376,1545 'upload':4,5,46,136,139,163,223,320,335,407,428,486,505,721,809,820,835,862,867,870,900,904,918,934,954,960,1030,1034,1070,1073,1079,1088,1099,1105,1119,1124,1131,1136,1145,1154,1162,1175,1181,1220,1230,1352,1384,1402,1521,1534,1590,1600,1634,1669,1707 'upload-fil':1072,1087,1098,1118,1130,1144,1153,1161,1229,1401,1589,1633,1668,1706 'upload/share':368 'url':352,435,452,951,1172,1360,1435,1605,1713 'url/cid':848 'usag':220,439,901,1067 'use':10,41,199,364,404,458,569,679,709,740,747,790,800,814,854,981,1238,1665,1682,1694 'user':365,459,570,680,699,1525 'usernam':1227 'v':114,1471 'via':56,322 'video':1673 'want':460,571,681,700 'web':431,463,501,1485 'without':380,1007,1254 'workflow':490 'www.npmjs.com':1725 'www.npmjs.com/package/daku':1724 'x':227,235,247,257,312,442,627,660,1116,1213,1704 'x-transfer-count':1212 'year':774,892,989 'yes':708,720,789,813,824,837,853","prices":[{"id":"55bf961f-a39d-4195-91f4-35e45a2eb966","listingId":"4b186c98-2e61-4e04-8daa-c54774ba9097","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"besoeasy","category":"open-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:10:31.898Z"}],"sources":[{"listingId":"4b186c98-2e61-4e04-8daa-c54774ba9097","source":"github","sourceId":"besoeasy/open-skills/anonymous-file-upload","sourceUrl":"https://github.com/besoeasy/open-skills/tree/main/skills/anonymous-file-upload","isPrimary":false,"firstSeenAt":"2026-04-18T22:10:31.898Z","lastSeenAt":"2026-05-02T12:55:02.493Z"}],"details":{"listingId":"4b186c98-2e61-4e04-8daa-c54774ba9097","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"besoeasy","slug":"anonymous-file-upload","github":{"repo":"besoeasy/open-skills","stars":111,"topics":["agent-skills","ai","ai-agents","claude-code","clawdbot","clawdbot-skill","llm-tools","mcp-server","openai","openclaw","vibe-coding","vibecoding"],"license":null,"html_url":"https://github.com/besoeasy/open-skills","pushed_at":"2026-03-31T13:05:30Z","description":"Battle-tested skill library for AI agents. Save 98% of API costs with ready-to-use code for crypto, PDFs, search, web scraping & more. No trial-and-error, no expensive APIs.","skill_md_sha":"81450ca9d33766f3f61000185c5cd0e01a731ad6","skill_md_path":"skills/anonymous-file-upload/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/besoeasy/open-skills/tree/main/skills/anonymous-file-upload"},"layout":"multi","source":"github","category":"open-skills","frontmatter":{"name":"anonymous-file-upload","description":"Upload and host files anonymously using decentralized storage with Originless and IPFS."},"skills_sh_url":"https://skills.sh/besoeasy/open-skills/anonymous-file-upload"},"updatedAt":"2026-05-02T12:55:02.493Z"}}