{"id":"899fd506-735b-40ef-a742-662621c82765","shortId":"LdTzwp","kind":"skill","title":"torrent-search","tagline":"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.","description":"# Torrent Search\n\nSearch any Torznab-compatible indexer (e.g. bitmagnet) for torrents by title or IMDB ID. Returns magnet links, file sizes, seeders, resolution, and codec.\n\n## When to use\n\n- User asks to find a torrent for a movie, TV show, or any other content\n- User provides an IMDB ID (e.g. `tt1234567`) and wants download options\n- You need to programmatically retrieve a magnet link for a given title\n- User asks to compare available qualities (720p, 1080p, 2160p) for a release\n\n## Required tools / APIs\n\n- `curl` — HTTP requests (pre-installed on most systems)\n- `jq` — JSON parsing (used after XML→JSON conversion)\n- `xmllint` — XML parsing (optional, from `libxml2-utils`)\n- A running Torznab endpoint — examples use `https://bitmagnetfortheweebs.midnightignite.me/torznab/api`\n\nInstall options:\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install -y curl jq libxml2-utils\n\n# macOS\nbrew install curl jq libxml2\n\n# Node.js (no extra packages — uses native fetch + DOMParser via fast-xml-parser)\nnpm install fast-xml-parser\n```\n\n## Skills\n\n### search_by_title\n\nSearch for torrents using a free-text title query.\n\n```bash\nTORZNAB_URL=\"https://bitmagnetfortheweebs.midnightignite.me/torznab/api\"\nQUERY=\"Breaking Bad\"\n\ncurl -fsS --max-time 15 \\\n  \"${TORZNAB_URL}?t=search&q=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$QUERY\")\" \\\n  | xmllint --xpath \"//item\" - 2>/dev/null \\\n  | grep -oP '(?<=<title>).*?(?=</title>)'\n```\n\nFull extraction with magnet links:\n\n```bash\nTORZNAB_URL=\"https://bitmagnetfortheweebs.midnightignite.me/torznab/api\"\nQUERY=\"Inception 2010\"\n\nxml=$(curl -fsS --max-time 15 \\\n  \"${TORZNAB_URL}?t=search&q=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$QUERY\")\")\n\n# Print title + magnet for each result\necho \"$xml\" | python3 - << 'EOF'\nimport sys, xml.etree.ElementTree as ET\n\ndata = sys.stdin.read()\nroot = ET.fromstring(data)\nns = {'torznab': 'http://torznab.com/schemas/2015/feed'}\n\nfor item in root.findall('.//item'):\n    title = item.findtext('title', '')\n    size  = item.findtext('size', '0')\n    enc   = item.find('enclosure')\n    magnet = enc.get('url') if enc is not None else ''\n\n    attrs = {a.get('name'): a.get('value') for a in item.findall('torznab:attr', ns)}\n    seeders    = attrs.get('seeders', '?')\n    resolution = attrs.get('resolution', '')\n    codec      = attrs.get('video', '')\n\n    size_gb = round(int(size) / 1_073_741_824, 2)\n    print(f\"{title}\")\n    print(f\"  Size: {size_gb} GB  Seeders: {seeders}  {resolution} {codec}\")\n    print(f\"  Magnet: {magnet[:80]}...\")\n    print()\nEOF\n```\n\n**Node.js:**\n\n```javascript\nimport { XMLParser } from 'fast-xml-parser';\n\nconst TORZNAB_URL = 'https://bitmagnetfortheweebs.midnightignite.me/torznab/api';\n\nasync function searchTorrents(query) {\n  const url = `${TORZNAB_URL}?t=search&q=${encodeURIComponent(query)}`;\n  const res = await fetch(url, { signal: AbortSignal.timeout(15000) });\n  if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n  const xml = await res.text();\n  const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });\n  const doc = parser.parse(xml);\n\n  const items = doc?.rss?.channel?.item ?? [];\n  const list = Array.isArray(items) ? items : [items];\n\n  return list.map(item => {\n    const attrs = {};\n    const rawAttrs = item['torznab:attr'] ?? [];\n    const attrList = Array.isArray(rawAttrs) ? rawAttrs : [rawAttrs];\n    for (const a of attrList) attrs[a['@_name']] = a['@_value'];\n\n    return {\n      title:      item.title,\n      sizeBytes:  Number(item.size ?? 0),\n      sizeGB:     +(Number(item.size ?? 0) / 1_073_741_824).toFixed(2),\n      magnet:     item.enclosure?.['@_url'] ?? attrs.magneturl ?? '',\n      infohash:   attrs.infohash ?? '',\n      seeders:    Number(attrs.seeders ?? 0),\n      leechers:   Number(attrs.leechers ?? 0),\n      resolution: attrs.resolution ?? '',\n      codec:      attrs.video ?? '',\n      year:       attrs.year ?? '',\n      imdb:       attrs.imdb ? `tt${attrs.imdb}` : '',\n    };\n  });\n}\n\n// Usage\nsearchTorrents('Inception 2010').then(results => {\n  results.forEach(r => {\n    console.log(`${r.title}`);\n    console.log(`  ${r.sizeGB} GB | ${r.resolution} ${r.codec} | ${r.seeders} seeders`);\n    console.log(`  ${r.magnet.slice(0, 80)}...`);\n    console.log();\n  });\n});\n```\n\n---\n\n### search_by_imdb_id\n\nSearch by exact IMDB ID to get all available releases for a specific title.\n\n```bash\nTORZNAB_URL=\"https://bitmagnetfortheweebs.midnightignite.me/torznab/api\"\nIMDB_ID=\"tt12735488\"   # Kalki 2898 AD\n\ncurl -fsS --max-time 15 \\\n  \"${TORZNAB_URL}?t=search&q=${IMDB_ID}\" \\\n  | python3 - << 'EOF'\nimport sys, xml.etree.ElementTree as ET\n\nroot = ET.fromstring(sys.stdin.read())\nns = {'torznab': 'http://torznab.com/schemas/2015/feed'}\n\nfor item in root.findall('.//item'):\n    title = item.findtext('title', '')\n    size  = int(item.findtext('size', '0'))\n    enc   = item.find('enclosure')\n    magnet = enc.get('url') if enc is not None else ''\n    attrs = {a.get('name'): a.get('value') for a in item.findall('torznab:attr', ns)}\n\n    print(f\"[{attrs.get('resolution','?'):6}] {round(size/1e9,1):5.1f}GB  \"\n          f\"S:{attrs.get('seeders','?'):>3}  {title}\")\nEOF\n```\n\n**Node.js:**\n\n```javascript\nimport { XMLParser } from 'fast-xml-parser';\n\nconst TORZNAB_URL = 'https://bitmagnetfortheweebs.midnightignite.me/torznab/api';\n\nasync function searchByImdb(imdbId) {\n  // imdbId format: 'tt1234567' or just '1234567'\n  const id = imdbId.startsWith('tt') ? imdbId : `tt${imdbId}`;\n  const url = `${TORZNAB_URL}?t=search&q=${id}`;\n\n  const res = await fetch(url, { signal: AbortSignal.timeout(15000) });\n  if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n  const xml = await res.text();\n  const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });\n  const doc = parser.parse(xml);\n\n  const items = doc?.rss?.channel?.item ?? [];\n  const list = Array.isArray(items) ? items : [items];\n\n  return list.map(item => {\n    const attrs = {};\n    const rawAttrs = item['torznab:attr'] ?? [];\n    for (const a of Array.isArray(rawAttrs) ? rawAttrs : [rawAttrs]) {\n      attrs[a['@_name']] = a['@_value'];\n    }\n    return {\n      title:      item.title,\n      sizeGB:     +(Number(item.size ?? 0) / 1_073_741_824).toFixed(2),\n      magnet:     item.enclosure?.['@_url'] ?? attrs.magneturl ?? '',\n      infohash:   attrs.infohash ?? '',\n      seeders:    Number(attrs.seeders ?? 0),\n      resolution: attrs.resolution ?? '',\n      codec:      attrs.video ?? '',\n      year:       attrs.year ?? '',\n    };\n  });\n}\n\n// Usage — find all releases for a specific IMDB title\nsearchByImdb('tt12735488').then(results => {\n  // Sort by seeders descending, then by size descending\n  results.sort((a, b) => b.seeders - a.seeders || b.sizeGB - a.sizeGB);\n  results.forEach(r =>\n    console.log(`[${r.resolution || '?':>6}] ${r.sizeGB}GB  S:${r.seeders}  ${r.title}`)\n  );\n});\n```\n\n---\n\n### pick_best_result\n\nFilter and rank results by quality preference (resolution priority + seeder count).\n\n**Node.js:**\n\n```javascript\nfunction pickBest(results, { preferResolution = '1080p', minSeeders = 1 } = {}) {\n  const resolutionRank = { '2160p': 4, '1080p': 3, '720p': 2, '480p': 1 };\n  const preferred = resolutionRank[preferResolution] ?? 3;\n\n  return results\n    .filter(r => r.seeders >= minSeeders)\n    .sort((a, b) => {\n      const ra = resolutionRank[a.resolution] ?? 0;\n      const rb = resolutionRank[b.resolution] ?? 0;\n      // Exact preferred resolution first, then by seeders\n      const aMatch = ra === preferred ? 1 : 0;\n      const bMatch = rb === preferred ? 1 : 0;\n      if (bMatch !== aMatch) return bMatch - aMatch;\n      return b.seeders - a.seeders;\n    })[0] ?? null;\n}\n\n// Usage\nconst results = await searchByImdb('tt12735488');\nconst best = pickBest(results, { preferResolution: '1080p', minSeeders: 1 });\nif (best) {\n  console.log(`Best pick: ${best.title}`);\n  console.log(`Magnet: ${best.magnet}`);\n}\n```\n\n## Output format\n\nEach result object contains:\n\n- `title` — string — release name as indexed (e.g. `\"Inception.2010.1080p.BluRay.x264\"`)\n- `sizeGB` — number — file size in gigabytes (e.g. `3.15`)\n- `magnet` — string — full magnet URI starting with `magnet:?xt=urn:btih:...`\n- `infohash` — string — 40-char hex SHA-1 info hash\n- `seeders` — number — active seeders at index time (may be stale)\n- `leechers` — number — active leechers at index time\n- `resolution` — string — `\"720p\"`, `\"1080p\"`, `\"2160p\"`, or `\"\"` if unknown\n- `codec` — string — `\"x264\"`, `\"x265\"`, `\"XviD\"`, `\"AV1\"`, or `\"\"` if unknown\n- `year` — string — release year (e.g. `\"2024\"`)\n- `imdb` — string — IMDB ID in `tt` format (e.g. `\"tt12735488\"`)\n\nError shape:\n\n```json\n{ \"error\": \"HTTP 503\", \"fix\": \"Indexer is down — retry in 30s or use a different endpoint\" }\n```\n\n## Rate limits / Best practices\n\n- The public endpoint has no documented rate limit; add a 1-second delay between batch queries\n- IMDB ID search (`?q=tt...`) is more precise than title search — prefer it when you have the ID\n- Seeder counts in the index may lag reality by hours — always surface them to the user but don't rely on them for availability\n- Sort results by seeders descending before presenting to the user\n- Filter out results with 0 seeders unless no others exist\n- Cache results for at least 5 minutes — the index is not real-time\n- For batch lookups, space requests at least 1 second apart\n\n## Agent prompt\n\n```text\nYou have torrent-search capability via a Torznab API.\nWhen a user asks to find a torrent for something:\n\n1. If they provide an IMDB ID (tt...), use search_by_imdb_id for precise results.\n2. Otherwise use search_by_title with the title and year if known.\n3. Parse the XML response and extract: title, sizeGB, seeders, resolution, magnet link.\n4. Sort results by seeders descending. Filter out 0-seeder results unless nothing else exists.\n5. Present the top 3–5 results with: title, size, resolution, seeder count.\n6. Ask the user which one they want, then return the full magnet link.\n7. Never auto-start a download without user confirmation.\n\nTorznab endpoint: https://bitmagnetfortheweebs.midnightignite.me/torznab/api\n```\n\n## Troubleshooting\n\n**Empty results / no `<item>` elements:**\n- Symptom: The XML response has a `<channel>` but no `<item>` children\n- Solution: The indexer has no matches. Try a shorter query (just the title, no year). Try searching by IMDB ID instead.\n\n**`xmllint` not found:**\n- Symptom: `xmllint: command not found`\n- Solution: `sudo apt-get install -y libxml2-utils` (Linux) or `brew install libxml2` (macOS). Alternatively use the Python `xml.etree` approach which needs no extra tools.\n\n**`fast-xml-parser` not available:**\n- Symptom: `Cannot find module 'fast-xml-parser'`\n- Solution: `npm install fast-xml-parser`. As a zero-dependency alternative, use the Bash + Python script path which only needs the standard library.\n\n**Endpoint unreachable (connection refused / timeout):**\n- Symptom: `curl: (7) Failed to connect` or `curl: (28) Operation timed out`\n- Solution: The specific public instance may be offline. Self-host bitmagnet (`docker run -d ghcr.io/bitmagnet-io/bitmagnet`) and point `TORZNAB_URL` to your local instance.\n\n**Magnet link is empty:**\n- Symptom: `enclosure url` is missing or blank for some items\n- Solution: Reconstruct from infohash: `magnet:?xt=urn:btih:<infohash>&dn=<encoded-title>`\n\n## See also\n\n- [../using-youtube-download/SKILL.md](../using-youtube-download/SKILL.md) — Download videos from YouTube with yt-dlp\n- [../anonymous-file-upload/SKILL.md](../anonymous-file-upload/SKILL.md) — Upload files without an account (IPFS / transfer.sh)","tags":["torrent","search","open","skills","besoeasy","agent-skills","ai-agents","claude-code","clawdbot","clawdbot-skill","llm-tools","mcp-server"],"capabilities":["skill","source-besoeasy","skill-torrent-search","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/torrent-search","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 (11,659 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:04.830Z","embedding":null,"createdAt":"2026-04-18T22:10:54.899Z","updatedAt":"2026-05-02T12:55:04.830Z","lastSeenAt":"2026-05-02T12:55:04.830Z","tsv":"'-1':990 '/anonymous-file-upload/skill.md':1475,1476 '/bitmagnet-io/bitmagnet':1431 '/dev/null':257 '/item':255,325,617 '/schemas/2015/feed''':320,612 '/torznab/api':168,228,270,578,1287 '/torznab/api'';':410,682 '/using-youtube-download/skill.md':1465,1466 '0':332,498,502,518,522,552,625,779,795,891,896,909,915,925,1136,1239 '073':372,504,781 '1':20,251,294,371,503,657,780,862,872,908,914,940,1074,1163,1189 '1080p':127,860,867,938,1013 '1234567':692 '15':237,280,590 '15000':431,715 '2':32,256,375,508,785,870,1205 '2010':273,536 '2024':1032 '2160p':128,865,1014 '28':1410 '2898':583 '3':43,665,868,877,1218,1250 '3.15':972 '30s':1054 '4':866,1231 '40':986 '480p':871 '5':1147,1246,1251 '5.1':658 '503':1047 '6':654,834,1259 '7':1273,1404 '720p':126,869,1012 '741':373,505,782 '80':393,553 '824':374,506,783 'a.get':346,348,639,641 'a.resolution':890 'a.seeders':827,924 'a.sizegb':829 'abortsignal.timeout':430,714 'account':1481 'activ':995,1005 'ad':584 'add':1072 'agent':1166 'also':1464 'altern':1347,1384 'alway':1108 'amatch':905,918,921 'apart':1165 'api':17,134,1178 'approach':1352 'apt':175,1334 'apt-get':174,1333 'array.isarray':462,478,746,764 'ask':22,83,121,1182,1260 'async':411,683 'attr':345,355,470,475,487,638,648,754,759,768 'attributenameprefix':449,733 'attrlist':477,486 'attrs.get':358,361,364,652,663 'attrs.imdb':530,532 'attrs.infohash':514,791 'attrs.leechers':521 'attrs.magneturl':512,789 'attrs.resolution':524,797 'attrs.seeders':517,794 'attrs.video':526,799 'attrs.year':528,801 'auto':1276 'auto-start':1275 'av1':1023 'avail':124,567,1121,1363 'await':426,441,710,725,930 'b':825,886 'b.resolution':895 'b.seeders':826,923 'b.sizegb':828 'bad':231 'bash':171,223,265,573,1387 'batch':1078,1157 'best':841,934,942,944,1062 'best.magnet':949 'best.title':946 'bitmagnet':62,1425 'bitmagnetfortheweebs.midnightignite.me':167,227,269,409,577,681,1286 'bitmagnetfortheweebs.midnightignite.me/torznab/api':166,226,268,576,1285 'bitmagnetfortheweebs.midnightignite.me/torznab/api'';':408,680 'blank':1450 'bmatch':911,917,920 'break':230 'brew':185,1343 'btih':983,1461 'c':244,287 'cach':1142 'cannot':1365 'capabl':1174 'channel':458,742 'char':987 'children':1301 'codec':78,363,388,525,798,1018 'command':1328 'compar':123 'compat':16,59 'confirm':1282 'connect':1399,1407 'console.log':541,543,550,554,832,943,947 'const':405,415,424,439,443,450,454,460,469,471,476,483,677,693,700,708,723,727,734,738,744,753,755,761,863,873,887,892,904,910,928,933 'contain':955 'content':96 'convers':151 'count':853,1099,1258 'curl':135,179,187,232,275,585,1403,1409 'd':1428 'data':311,315 'delay':1076 'depend':1383 'descend':818,822,1126,1236 'differ':1058 'dlp':1474 'dn':1462 'doc':451,456,735,740 'docker':1426 'document':1069 'dompars':197 'download':51,106,1279,1467 'e.g':61,102,962,971,1031,1040 'echo':302 'element':1292 'els':344,637,1244 'empti':1289,1443 'enc':333,340,626,633 'enc.get':337,630 'enclosur':335,628,1445 'encodeuricompon':422 'endpoint':163,1059,1066,1284,1397 'eof':305,395,599,667 'error':436,720,1042,1045 'et':310,604 'et.fromstring':314,606 'exact':561,897 'exampl':164 'exist':1141,1245 'extra':192,1356 'extract':261,1224 'f':377,380,390,651,659,661 'fail':1405 'fals':448,732 'fast':200,206,402,674,1359,1369,1376 'fast-xml-pars':199,205,401,673,1358,1368,1375 'fetch':196,427,711 'file':73,967,1478 'filter':843,880,1132,1237 'find':24,85,803,1184,1366 'first':900 'fix':1048 'format':688,951,1039 'found':1325,1330 'free':219 'free-text':218 'fss':233,276,586 'full':260,975,1270 'function':412,684,856 'gb':367,383,384,545,660,836 'get':176,565,1335 'ghcr.io':1430 'ghcr.io/bitmagnet-io/bitmagnet':1429 'gigabyt':970 'given':40,118 'grep':258 'hash':992 'hex':988 'host':1424 'hour':1107 'http':136,437,721,1046 'id':11,48,69,101,558,563,580,597,694,707,1036,1081,1097,1195,1201,1321 'ignoreattribut':447,731 'imdb':10,47,68,100,529,557,562,579,596,809,1033,1035,1080,1194,1200,1320 'imdbid':686,687,697,699 'imdbid.startswith':695 'import':245,288,306,398,600,670 'incept':272,535 'inception.2010.1080p.bluray':963 'index':60,961,998,1008,1049,1102,1150,1304 'info':991 'infohash':513,790,984,1457 'instal':140,169,177,186,204,1336,1344,1374 'instanc':1418,1439 'instead':1322 'int':369,622 'ipf':1482 'item':322,455,459,463,464,465,468,473,614,739,743,747,748,749,752,757,1453 'item.enclosure':510,787 'item.find':334,627 'item.findall':353,646 'item.findtext':327,330,619,623 'item.size':497,501,778 'item.title':494,775 'javascript':397,669,855 'jq':144,180,188 'json':145,150,1044 'kalki':582 'known':1217 'lag':1104 'least':1146,1162 'leecher':519,1003,1006 'librari':1396 'libxml2':158,182,189,1339,1345 'libxml2-utils':157,181,1338 'limit':1061,1071 'link':37,72,115,264,1230,1272,1441 'linux':1341 'list':461,745 'list.map':467,751 'local':1438 'lookup':1158 'maco':184,1346 'magnet':36,71,114,263,298,336,391,392,509,629,786,948,973,976,980,1229,1271,1440,1458 'match':1307 'max':235,278,588 'max-tim':234,277,587 'may':1000,1103,1419 'minseed':861,883,939 'minut':1148 'miss':1448 'modul':1367 'movi':29,90 'name':347,489,640,770,959 'nativ':195 'need':34,109,1354,1393 'never':1274 'new':435,445,719,729 'node.js':190,396,668,854 'none':343,636 'noth':1243 'npm':203,1373 'ns':316,356,608,649 'null':926 'number':496,500,516,520,777,793,966,994,1004 'object':954 'offlin':1421 'one':1264 'op':259 'oper':1411 'option':52,107,155,170 'other':1140 'otherwis':1206 'output':950 'packag':193 'pars':146,154,1219 'parser':202,208,404,444,676,728,1361,1371,1378 'parser.parse':452,736 'path':1390 'pick':840,945 'pickbest':857,935 'point':1433 'practic':1063 'pre':139 'pre-instal':138 'precis':1087,1203 'prefer':849,874,898,907,913,1091 'preferresolut':859,876,937 'present':1128,1247 'print':248,291,296,376,379,389,394,650 'prioriti':851 'programmat':111 'prompt':1167 'provid':45,98,1192 'public':1065,1417 'python':1350,1388 'python3':243,286,304,598 'q':242,285,421,595,706,1083 'qualiti':125,848 'queri':222,229,252,271,295,414,423,1079,1311 'r':540,831,881 'r.codec':547 'r.magnet.slice':551 'r.resolution':546,833 'r.seeders':548,838,882 'r.sizegb':544,835 'r.title':542,839 'ra':888,906 'rank':845 'rate':1060,1070 'rawattr':472,479,480,481,756,765,766,767 'rb':893,912 'real':1154 'real-tim':1153 'realiti':1105 'reconstruct':1455 'refus':1400 'releas':131,568,805,958,1029 'reli':1117 'request':137,1160 'requir':132 'res':425,709 'res.ok':433,717 'res.status':438,722 'res.text':442,726 'resolut':76,360,362,387,523,653,796,850,899,1010,1228,1256 'resolutionrank':864,875,889,894 'respons':1222,1296 'result':301,538,814,842,846,858,879,929,936,953,1123,1134,1143,1204,1233,1241,1252,1290 'results.foreach':539,830 'results.sort':823 'retri':1052 'retriev':112 'return':70,466,492,750,773,878,919,922,1268 'root':313,605 'root.findall':324,616 'round':368,655 'rss':457,741 'run':161,1427 'script':1389 'search':3,4,54,55,210,213,241,284,420,555,559,594,705,1082,1090,1173,1198,1208,1318 'searchbyimdb':685,811,931 'searchtorr':413,534 'second':1075,1164 'see':1463 'seeder':75,357,359,385,386,515,549,664,792,817,852,903,993,996,1098,1125,1137,1227,1235,1240,1257 'self':1423 'self-host':1422 'sha':989 'shape':1043 'shorter':1310 'show':31,92 'signal':429,713 'size':74,329,331,366,370,381,382,621,624,821,968,1255 'size/1e9':656 'sizebyt':495 'sizegb':499,776,965,1226 'skill':209 'skill-torrent-search' 'solut':1302,1331,1372,1414,1454 'someth':1188 'sort':815,884,1122,1232 'source-besoeasy' 'space':1159 'specif':571,808,1416 'stale':1002 'standard':1395 'start':978,1277 'string':957,974,985,1011,1019,1028,1034 'sudo':173,1332 'surfac':1109 'symptom':1293,1326,1364,1402,1444 'sys':247,290,307,601 'sys.argv':250,293 'sys.stdin.read':312,607 'system':143 'text':220,1168 'throw':434,718 'time':236,279,589,999,1009,1155,1412 'timeout':1401 'titl':8,41,66,119,212,221,297,326,328,378,493,572,618,620,666,774,810,956,1089,1210,1213,1225,1254,1314 'tofix':507,784 'tool':133,1357 'top':1249 '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' 'torrent':2,6,26,53,64,87,215,1172,1186 'torrent-search':1,1171 'torznab':15,58,162,224,238,266,281,317,354,406,417,474,574,591,609,647,678,702,758,1177,1283,1434 'torznab-compat':14,57 'torznab.com':319,611 'torznab.com/schemas/2015/feed''':318,610 'transfer.sh':1483 'tri':1308,1317 'troubleshoot':1288 'tt':531,696,698,1038,1084,1196 'tt1234567':103,689 'tt12735488':581,812,932,1041 'tv':91 'ubuntu/debian':172 'unknown':1017,1026 'unless':1138,1242 'unreach':1398 'upload':1477 'uri':977 'url':225,239,267,282,338,407,416,418,428,511,575,592,631,679,701,703,712,788,1435,1446 'urllib.parse':246,289 'urllib.parse.quote':249,292 'urn':982,1460 'usag':533,802,927 'use':18,81,147,165,194,216,1056,1197,1207,1348,1385 'user':21,44,82,97,120,1113,1131,1181,1262,1281 'util':159,183,1340 'valu':349,491,642,772 'via':12,198,1175 'video':365,1468 'want':50,105,1266 'without':1280,1479 'x264':964,1020 'x265':1021 'xml':149,153,201,207,274,303,403,440,453,675,724,737,1221,1295,1360,1370,1377 'xml.etree':1351 'xml.etree.elementtree':308,602 'xmllint':152,253,1323,1327 'xmlparser':399,446,671,730 'xpath':254 'xt':981,1459 'xvid':1022 'y':178,1337 'year':527,800,1027,1030,1215,1316 'youtub':1470 'yt':1473 'yt-dlp':1472 'zero':1382 'zero-depend':1381","prices":[{"id":"1d477447-b0bf-4328-8a36-da1a886cba02","listingId":"899fd506-735b-40ef-a742-662621c82765","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:54.899Z"}],"sources":[{"listingId":"899fd506-735b-40ef-a742-662621c82765","source":"github","sourceId":"besoeasy/open-skills/torrent-search","sourceUrl":"https://github.com/besoeasy/open-skills/tree/main/skills/torrent-search","isPrimary":false,"firstSeenAt":"2026-04-18T22:10:54.899Z","lastSeenAt":"2026-05-02T12:55:04.830Z"}],"details":{"listingId":"899fd506-735b-40ef-a742-662621c82765","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"besoeasy","slug":"torrent-search","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":"0fc07921adc0d57197e5fe1b05136bdcf9e15137","skill_md_path":"skills/torrent-search/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/besoeasy/open-skills/tree/main/skills/torrent-search"},"layout":"multi","source":"github","category":"open-skills","frontmatter":{"name":"torrent-search","description":"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."},"skills_sh_url":"https://skills.sh/besoeasy/open-skills/torrent-search"},"updatedAt":"2026-05-02T12:55:04.830Z"}}