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-hosting

Image 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

UploadPriceRetentionUse when
≤ 1 MB$0PermanentPR screenshots, issue comments, mockups, README diagrams
1–10 MB$030 daysLarge captures you only need during review
Up to 10 MB$0.01 USDCPermanentLarge 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

  1. 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
    
  2. Upload:
    curl -s -X POST https://img402.dev/api/free -F image=@/tmp/screenshot.png
    
  3. Check expiresAt: null means 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
    
  4. Embed the returned url in GitHub markdown:
    ![Screenshot description](https://i.img402.dev/aBcDeFgHiJ.png)
    

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)

![Screenshot](https://i.img402.dev/aBcDeFgHiJ.png)"

# Add as PR comment
gh pr comment --body "![Screenshot](https://i.img402.dev/aBcDeFgHiJ.png)"

# Add to issue
gh issue comment 123 --body "![Screenshot](https://i.img402.dev/aBcDeFgHiJ.png)"

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 1600 usually gets there with no visible quality loss.
  • When adding to a PR body or comment, use gh pr comment or gh pr edit with 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

@ivangdavila

Capture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...

3818k

Translate

@ivangdavila

Translates 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).

1113k

Humanizer

@biostartechnology

Remove 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.

712130k

YouTube Watcher

@michaelgathara

Fetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.

34255k

Elite Longterm Memory

@nextfrontierbuilds

Ultimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.

23564k