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
- Dependencies: The skill requires Python 3 and the
requestslibrary.pip install -r skills/image-uploader/requirements.txt - Configuration: An API token or client ID is required depending on the provider. sm.ms (default): Imgur: GitHub: Default Provider: Set
default_providerinconfig.jsonto"smms","imgur", or"github", or use theIMAGE_UPLOADER_PROVIDERenvironment variable.
- Config File: skills/image-uploader/config.json {"smms_token": "YOUR_TOKEN"} - Environment Variable: SMMS_TOKEN - CLI Argument: --token - Config File: skills/image-uploader/config.json {"imgur_client_id": "YOUR_CLIENT_ID"} - Environment Variable: IMGUR_CLIENT_ID - CLI Argument: --token - Config File: skills/image-uploader/config.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)
Usage
To upload an image, run the Python script:
python3 skills/image-uploader/image_uploader.py <path_to_image>Examples
Upload to sm.ms (default, using config/env token):
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.pngUpload to Imgur:
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.png --provider imgurUpload to GitHub (jsDelivr CDN):
python3 skills/image-uploader/image_uploader.py /Users/me/Pictures/screenshot.png --provider githubUpload with explicit token:
python3 skills/image-uploader/image_uploader.py image.png --token "YOUR_API_TOKEN"Upload to Imgur using env var:
IMGUR_CLIENT_ID="your_id" python3 skills/image-uploader/image_uploader.py image.png --provider imgurUpload to GitHub using env vars:
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 githubOutput
The script outputs the result to stdout.
Success (sm.ms):
✅ Upload Successful!
URL: https://s2.loli.net/2023/01/01/abcdefg.jpg
Delete Link: https://sm.ms/delete/xyz123
Filename: screenshot.pngSuccess (Imgur):
✅ Upload Successful!
URL: https://i.imgur.com/abcdefg.png
Delete Hash: AbCdEfGhIjKSuccess (GitHub):
✅ 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.pngAlready Exists (sm.ms):
⚠️ Image already exists.
URL: https://s2.loli.net/2023/01/01/abcdefg.jpgFailure:
❌ Upload Failed
Message: Unauthorized.