image-uploader

Uploads images to image hosting services (supports sm.ms, Imgur, and GitHub + jsDelivr CDN). Use this skill when the user wants to upload a local image file to the web and get a public URL.

11 stars

Best use case

image-uploader is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Uploads images to image hosting services (supports sm.ms, Imgur, and GitHub + jsDelivr CDN). Use this skill when the user wants to upload a local image file to the web and get a public URL.

Teams using image-uploader should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/image-uploader/SKILL.md --create-dirs "https://raw.githubusercontent.com/crossoverJie/skills/main/skills/image-uploader/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/image-uploader/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How image-uploader Compares

Feature / Agentimage-uploaderStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Uploads images to image hosting services (supports sm.ms, Imgur, and GitHub + jsDelivr CDN). Use this skill when the user wants to upload a local image file to the web and get a public URL.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Image Uploader Skill

This skill allows uploading local image files to public image hosting services. It supports **sm.ms**, **Imgur**, and **GitHub** (with jsDelivr CDN acceleration).

## Prerequisites

1.  **Dependencies**: The skill requires Python 3 and the `requests` library.
    ```bash
    pip install -r skills/image-uploader/requirements.txt
    ```
2.  **Configuration**: An API token or client ID is required depending on the provider.

    **sm.ms** (default):
    *   **Config File**: `skills/image-uploader/config.json`
        ```json
        { "smms_token": "YOUR_TOKEN" }
        ```
    *   **Environment Variable**: `SMMS_TOKEN`
    *   **CLI Argument**: `--token`

    **Imgur**:
    *   **Config File**: `skills/image-uploader/config.json`
        ```json
        { "imgur_client_id": "YOUR_CLIENT_ID" }
        ```
    *   **Environment Variable**: `IMGUR_CLIENT_ID`
    *   **CLI Argument**: `--token`

    **GitHub**:
    *   **Config File**: `skills/image-uploader/config.json`
        ```json
        {
            "github_token": "YOUR_GITHUB_TOKEN",
            "github_owner": "YOUR_GITHUB_USERNAME",
            "github_repo": "YOUR_IMAGE_REPO_NAME",
            "github_path": "images",
            "github_branch": "main",
            "github_cdn": "jsdelivr"
        }
        ```
    *   **Environment Variables**: `IMAGE_UPLOADER_GITHUB_TOKEN`, `IMAGE_UPLOADER_GITHUB_OWNER`, `IMAGE_UPLOADER_GITHUB_REPO`, `IMAGE_UPLOADER_GITHUB_CDN`
    *   **CLI Argument**: `--token` (for token only)
    *   **CDN Options**:
        *   `"jsdelivr"` — `cdn.jsdelivr.net` (default, international)
        *   `"china"` — `jsd.cdn.zzko.cn` (China mirror)

    **Default Provider**: Set `default_provider` in `config.json` to `"smms"`, `"imgur"`, or `"github"`, or use the `IMAGE_UPLOADER_PROVIDER` environment variable.

## Usage

To upload an image, run the Python script:

```bash
python3 skills/image-uploader/image_uploader.py <path_to_image>
```

### Examples

**Upload to sm.ms (default, using config/env token):**
```bash
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.png
```

**Upload to Imgur:**
```bash
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.png --provider imgur
```

**Upload to GitHub (jsDelivr CDN):**
```bash
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.png --provider github
```

**Upload with explicit token:**
```bash
python3 skills/image-uploader/image_uploader.py image.png --token "YOUR_API_TOKEN"
```

**Upload to Imgur using env var:**
```bash
IMGUR_CLIENT_ID="your_id" python3 skills/image-uploader/image_uploader.py image.png --provider imgur
```

**Upload to GitHub using env vars:**
```bash
IMAGE_UPLOADER_GITHUB_TOKEN="your_token" IMAGE_UPLOADER_GITHUB_OWNER="user" IMAGE_UPLOADER_GITHUB_REPO="images" python3 skills/image-uploader/image_uploader.py image.png --provider github
```

## Output

The script outputs the result to stdout.

**Success (sm.ms):**
```text
✅ Upload Successful!
URL: https://s2.loli.net/2023/01/01/abcdefg.jpg
Delete Link: https://sm.ms/delete/xyz123
Filename: screenshot.png
```

**Success (Imgur):**
```text
✅ Upload Successful!
URL: https://i.imgur.com/abcdefg.png
Delete Hash: AbCdEfGhIjK
```

**Success (GitHub):**
```text
✅ Upload Successful!
CDN URL: https://cdn.jsdelivr.net/gh/user/repo@main/images/a1b2c3d4_screenshot.png
Raw URL: https://raw.githubusercontent.com/user/repo/main/images/a1b2c3d4_screenshot.png
```

**Already Exists (sm.ms):**
```text
⚠️  Image already exists.
URL: https://s2.loli.net/2023/01/01/abcdefg.jpg
```

**Failure:**
```text
❌ Upload Failed
Message: Unauthorized.
```

Related Skills

We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.