github-image-hosting
Upload images to img402.dev for embedding in GitHub PRs, issues, and comments. Images 1MB or under are free AND permanent — no payment, no auth — which covers virtually every scree…
img402
@img402
What This Skill Does
Uploads images to img402.dev for embedding in GitHub PRs, issues, and comments. Images 1MB or under are free and permanent; larger images up to 10MB are free for 30 days or permanent for $0.01 USDC via x402. No authentication required for free tier.
Replaces manually uploading screenshots to third-party image hosts and managing expiring links by providing permanent hosting for common screenshot sizes with zero setup.
When to Use It
- Attach a screenshot to a GitHub PR description or comment
- Upload a mockup or diagram for review in a GitHub issue
- Share a visual bug report with a permanent image link
- Embed a README hero image or diagram that stays live indefinitely
- Add a screenshot to a GitHub PR review without auth or payment
Install
$ openclaw skills install @img402/github-image-hostingImage Upload for GitHub
Upload an image to img402.dev and embed the returned URL in GitHub markdown.
Screenshots are free and permanent. A UI screenshot is typically 100–400 KB, well under the 1 MB threshold where free hosting never expires — so a link you drop in a PR won't rot into a broken image six months later. You almost never need a paid tier here.
Pick a tier
| Upload | Price | Retention | Use when |
|---|---|---|---|
| ≤ 1 MB | $0 | Permanent | PR screenshots, issue comments, mockups, README diagrams |
| 1–10 MB | $0 | 30 days | Large captures you only need during review |
| Up to 10 MB | $0.01 USDC | Permanent | Large README hero images, public blog visuals |
* Paid permanence is service-life retention with a 90-day on-site shutdown notice — see Terms § 2A.
Quick reference
# Upload (multipart)
curl -s -X POST https://img402.dev/api/free -F image=@/tmp/screenshot.png
# Response — expiresAt is null for images 1MB and under
# {"url":"https://i.img402.dev/aBcDeFgHiJ.png","id":"aBcDeFgHiJ","contentType":"image/png","sizeBytes":182400,"expiresAt":null}
Workflow
- Get image: Use an existing file, or capture a screenshot:
screencapture -x /tmp/screenshot.png # macOS — full screen screencapture -xw /tmp/screenshot.png # macOS — frontmost window - Upload:
curl -s -X POST https://img402.dev/api/free -F image=@/tmp/screenshot.png - Check
expiresAt:nullmeans permanent. A timestamp means the file was over 1 MB and will be deleted then — if the image needs to outlive that, shrink it under 1 MB and re-upload:sips -Z 1600 /tmp/screenshot.png # macOS — scale longest edge to 1600px - Embed the returned
urlin GitHub markdown:
GitHub integration
Use gh CLI to embed images in PRs and issues:
# Add to PR description
gh pr edit --body "$(gh pr view --json body -q .body)
"
# Add as PR comment
gh pr comment --body ""
# Add to issue
gh issue comment 123 --body ""
Constraints
- Max size: 10 MB (every tier)
- Formats: PNG, JPEG, GIF, WebP
- Rate limit: 100,000 free uploads/day globally, 1,000/day per IP
- No auth required
Tips
- Prefer PNG for UI screenshots (sharp text). Use JPEG for photos.
- Keeping screenshots under 1 MB is worth doing on purpose: it's the line between a permanent URL and one that expires in 30 days.
sips -Z 1600usually gets there with no visible quality loss. - When adding to a PR body or comment, use
gh pr commentorgh pr editwith the image markdown.
Paid tier
For images over 1 MB that need to be permanent, pay via x402 for a token, then upload with it:
# Step 1: Get an upload token
POST https://img402.dev/api/upload/token # $0.01 USDC → permanent, up to 10MB
# → {"token": "a1b2c3...", "expiresAt": "..."}
# Step 2: Upload with the token
curl -s -X POST https://img402.dev/api/upload \
-H "X-Upload-Token: a1b2c3..." \
-F image=@/tmp/screenshot.png
# → {"url":"...", "expiresAt":null} # null = permanent
POST /api/upload/token/permanent still exists at $1.00 USDC — a legacy alias for what $0.01 now does. Don't use it for new work.
x402 payment is handled by an x402-capable client (the Payments MCP tool, @x402/client, or similar). See https://img402.dev/blog/paying-x402-apis.
Public access
Uploaded images are reachable by anyone with the URL — there is no auth on serving, and most uploads are now permanent. Never upload screenshots containing internal systems, credentials, tokens, or customer data. To remove an image, email privacy@img402.dev.
Top skills in this category
Screenshot
@ivangdavilaCapture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...
Translate
@ivangdavilaTranslates and localizes text, software strings, documents, subtitles, and marketing copy between any language pair. Use when translating anything, when fixing a translation that reads machine-made, or when localizing a product: ICU plurals and gender, placeholders that must survive, string catalogs (JSON, XLIFF, .po, .strings, .xcstrings, ARB, RESX, YAML), locale codes and fallback chains, RTL and bidi breakage, CJK typography, mojibake, text expansion that overflows the UI, subtitle timing and reading speed, hreflang and multilingual SEO, glossaries, translation memory and fuzzy matches, and post-editing machine output. Use when choosing register (tu/vous, tú/usted, du/Sie, keigo), between es-ES and es-419 or zh-Hans and zh-Hant, or when a certified, legal, or medical translation carries liability. Not for writing original copy natively in one language (spanish, french, german, japanese, chinese) or generating captions from audio (video-captions).
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
Elite Longterm Memory
@nextfrontierbuildsUltimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.