Upload local images to GitHub repo and get CDN links.
- Auto compress images (scale down when density >= 100)
- Convert to specified format (default
webp, quality80) - Upload to GitHub via Contents API
- Output jsDelivr CDN links
- Support upload from clipboard (cross-platform: macOS/Windows/Linux)
npm i -g @lipengzhou/upload-image-cliConfig file: ~/.upload-image-cli.json
upload-image initConfig example:
{
"hosts": {
"github": {
"username": "your-github-name",
"repo": "your-repo",
"branch": "master",
"token": "ghp_xxx"
}
}
}Token permissions:
- Fine-grained:
Contents: Read and write - Classic:
repo(orpublic_repofor public repos)
Note:
- Repo should be public for jsDelivr access
- Upload path:
image/YYYYMMDDHHmmssSSS.<format>
# View help
upload-image --help
# Upload from clipboard
upload-image
# Upload images
upload-image --files ./a.png ./b.jpg
# Specify output format (default: webp)
upload-image --files ./a.png -f jpeg
# Upload from clipboard with markdown output
upload-image -o markdownOptions:
--files <files...>- Image file paths (if not specified, read from clipboard)-f, --format <format>- Image format (default:webp, supportswebp/jpeg/png/avif)-o, --output <format>- Output format:markdown|html|url|raw(default:raw)
Output examples:
# raw (default)
upload success:
https://cdn.jsdelivr.net/gh/your-name/your-repo@master/image/...
# markdown

# html
<img src="https://cdn.jsdelivr.net/gh/your-name/your-repo@master/image/..." alt="image">
# url
https://cdn.jsdelivr.net/gh/your-name/your-repo@master/image/...- Config file error → Run
upload-image init - 401/403 → Check token permissions
- 404 → Check username/repo/branch config
- URL not accessible → Wait for jsDelivr sync (usually < 1min)