{"id":"5e0ec820-f8cb-43ac-983b-fb778d26e97a","slug":"image-upload-skill","kind":"skill","name":"image-upload-skill","summary":"Claude Skill that upload image to free online service, returns URL and markdown for the image.","owner":"iamzifei","repoUrl":"https://github.com/iamzifei/image-upload-skill","license":"MIT","licenseTier":"permissive","trust":"community","stars":6,"match":null,"fewStars":false,"format":"skill","createdAt":"2026-01-15T01:33:46.000Z","addedAt":"2026-10-21T22:23:08.231Z","logoUrl":"https://avatars.githubusercontent.com/u/399680?u=ec75fa70c11cd4f07d2c1167ea564f1e2ebc55d3&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["design-media","files-documents"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T16:42:08.997Z","sample":false,"url":"https://conduits.dev/tools/image-upload-skill","language":"TypeScript","transports":["stdio"],"install":{"npm":"image-upload"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Image Upload Skill\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2T024VDBG)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Claude Code skill for uploading images to various hosting providers and getting shareable URLs.\n\n## Features\n\n- **Zero Configuration**: Works out of the box with Catbox.moe (no API key needed!)\n- **Multiple Providers**: Support for 6 image hosting services\n- **Multiple Formats**: Get URLs in plain, Markdown, HTML, and BBCode formats\n- **CLI & Programmatic**: Use from command line or import as a module\n\n## Provider Comparison\n\n| Provider | Max Size | Auth Required | Daily Limit | China Access | Stability |\n|----------|----------|---------------|-------------|--------------|-----------|\n| **Catbox** | 200MB | None | Unlimited | OK | Good |\n| ImgBB | 32MB | API Key | ~Unlimited | Good | Good |\n| Imgur | 20MB | Client-ID | ~1,250 | Blocked | Excellent |\n| Freeimage | 64MB | API Key | Unknown | Good | Medium |\n| ImgHippo | 50MB | API Key | Unknown | Unknown | Medium |\n| Weibo | 20MB | Cookies | Unknown | Excellent | Poor |\n\n### Recommendation\n\n- **Default**: Use **Catbox** - no configuration, anonymous, permanent storage\n- **For production**: Consider **ImgBB** with API key for reliability\n- **In China**: **Catbox** or **Weibo** (if you have an account)\n- **Avoid**: **Imgur** is blocked in China\n\n## Installation\n\n### As a Claude Code Skill\n\nClaude Code skills are installed in the `~/.claude/skills/` directory. Choose one of the following methods:\n\n#### Method 1: Symlink (Recommended)\n\nThis method is recommended for development as changes to the repository are immediately reflected.\n\n```bash\n# 1. Clone the repository to your preferred location\ngit clone git@github.com:iamzifei/image-upload-skill.git\ncd image-upload-skill\n\n# 2. Install dependencies and build\nnpm install\nnpm run build\n\n# 3. Create the skills directory if it doesn't exist\nmkdir -p ~/.claude/skills\n\n# 4. Create a symbolic link to the Claude skills folder\nln -s \"$(pwd)\" ~/.claude/skills/image-upload\n\n# 5. Verify the symlink was created\nls -la ~/.claude/skills/\n```\n\n#### Method 2: Clone Directly into Skills Folder\n\n```bash\n# 1. Create the skills directory if it doesn't exist\nmkdir -p ~/.claude/skills\n\n# 2. Clone directly into the skills folder\ngit clone git@github.com:iamzifei/image-upload-skill.git ~/.claude/skills/image-upload\n\n# 3. Install dependencies and build\ncd ~/.claude/skills/image-upload\nnpm install\nnpm run build\n```\n\n#### Method 3: Copy Installation\n\nIf you don't need git tracking:\n\n```bash\n# 1. Clone and build the project\ngit clone git@github.com:iamzifei/image-upload-skill.git\ncd image-upload-skill\nnpm install\nnpm run build\n\n# 2. Create the skills directory and copy\nmkdir -p ~/.claude/skills\ncp -r . ~/.claude/skills/image-upload\n```\n\n### Verifying Installation\n\nAfter installation, verify the skill is properly set up:\n\n```bash\n# Check that SKILL.md exists in the skills folder\ncat ~/.claude/skills/image-upload/SKILL.md\n\n# The output should show the skill metadata with name: image-upload\n```\n\nWhen you start a new Claude Code session, the skill should be automatically available.\n\n### Configuration (Optional)\n\nConfigure providers by creating a `.env` file in the skill directory or in `~/.claude/`:\n\n```bash\n# Option 1: In the skill directory\ncp ~/.claude/skills/image-upload/.env.example ~/.claude/skills/image-upload/.env\n\n# Option 2: In the Claude config directory (applies to all projects)\ncp ~/.claude/skills/image-upload/.env.example ~/.claude/.env\n```\n\nEdit the `.env` file to add your API keys:\n\n```bash\n# Default provider (catbox works without any config!)\nIMAGE_UPLOAD_PROVIDER=catbox\n\n# ImgBB - https://api.imgbb.com/\nIMGBB_API_KEY=your_key_here\n\n# Imgur - https://api.imgur.com/oauth2/addclient\nIMGUR_CLIENT_ID=your_client_id\n```\n\n### Updating the Skill\n\nIf you used the symlink method:\n\n```bash\ncd /path/to/your/image-upload-skill\ngit pull\nnpm install\nnpm run build\n```\n\nIf you cloned directly into the skills folder:\n\n```bash\ncd ~/.claude/skills/image-upload\ngit pull\nnpm install\nnpm run build\n```\n\n### Uninstalling\n\n```bash\n# Remove the skill (works for both symlink and direct installation)\nrm -rf ~/.claude/skills/image-upload\n```\n\n## Usage\n\n### With Claude\n\nJust ask Claude to upload an image:\n\n```\nUpload this screenshot: /path/to/image.png\n```\n\n```\nUpload /tmp/photo.jpg to imgur and give me the markdown\n```\n\n### CLI\n\n```bash\n# Basic upload (uses Catbox by default)\nnpx tsx src/index.ts /path/to/image.png\n\n# Upload to specific provider\nnpx tsx src/index.ts /path/to/image.png --provider imgur\n\n# Upload with custom name\nnpx tsx src/index.ts /path/to/image.png --name my-screenshot\n\n# List available providers\nnpx tsx src/index.ts --list\n\n# Help\nnpx tsx src/index.ts --help\n```\n\n### Programmatic\n\n```typescript\nimport { uploadImage, formatResult } from './src/index.js';\n\n// Simple upload\nconst result = await uploadImage('/path/to/image.png');\nconsole.log(result.url);\n\n// With options\nconst result = await uploadImage('/path/to/image.png', {\n  provider: 'imgbb',\n  name: 'my-image'\n});\n\n// Get formatted output\nconsole.log(result.formatted.markdown);  // ![my-image](https://...)\nconsole.log(result.formatted.html);      // <img src=\"https://...\" alt=\"my-image\">\n```\n\n## Configuration\n\n### Environment Variables\n\nCreate a `.env` file (see `.env.example`):\n\n```bash\n# Default provider (catbox works without any config!)\nIMAGE_UPLOAD_PROVIDER=catbox\n\n# Optional: Catbox user hash for file management\nCATBOX_USERHASH=\n\n# ImgBB - https://api.imgbb.com/\nIMGBB_API_KEY=\n\n# Imgur - https://api.imgur.com/oauth2/addclient\nIMGUR_CLIENT_ID=\n\n# Freeimage.host - https://freeimage.host/page/api\nFREEIMAGE_API_KEY=\n\n# ImgHippo - https://www.imghippo.com/\nIMGHIPPO_API_KEY=\n\n# Weibo (legacy) - export cookies from browser\nWEIBO_COOKIES=\n```\n\n### Getting API Keys\n\n| Provider | Where to Get |\n|----------|--------------|\n| Catbox | No key needed! |\n| ImgBB | https://api.imgbb.com/ |\n| Imgur | https://api.imgur.com/oauth2/addclient |\n| Freeimage | https://freeimage.host/page/api |\n| ImgHippo | https://www.imghippo.com/ |\n| Weibo | Export cookies from browser |\n\n## Output Format\n\nSuccessful uploads return:\n\n```typescript\n{\n  id: \"abc123\",           // Provider-specific ID\n  url: \"https://...\",     // Direct image URL\n  viewerUrl: \"https://...\", // Viewer page (if available)\n  deleteUrl: \"https://...\", // Deletion URL (if available)\n  formatted: {\n    url: \"https://...\",\n    markdown: \"![name](https://...)\",\n    html: '<img src=\"https://...\" alt=\"name\">',\n    bbcode: \"[IMG]https://...[/IMG]\"\n  }\n}\n```\n\n## Supported File Types\n\n- JPEG (.jpg, .jpeg)\n- PNG (.png)\n- GIF (.gif)\n- WebP (.webp)\n- BMP (.bmp)\n- ICO (.ico) - Catbox only\n\n## Error Handling\n\nThe skill provides clear error messages:\n\n- **File not found**: Check the path\n- **File too large**: Try a different provider with higher limits\n- **Unsupported type**: Convert to a supported format\n- **Auth failure**: Check your API key / credentials\n- **Network error**: Check your connection\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run in development mode\nnpm run dev -- /path/to/image.png\n\n# Build\nnpm run build\n\n# Run tests\nnpm test\n```\n\n## Repository\n\n- **GitHub**: https://github.com/iamzifei/image-upload-skill\n\n## License\n\nMIT\n\n## Credits\n\nInspired by [Weibo-Picture-Store](https://github.com/nicexxx/Weibo-Picture-Store) Chrome extension.\n"}