Image Generation & Upload
A professional capability for automatically generating illustrations for WeChat articles, uploading them to an image host, and inserting Markdown links.
When to Use This Skill
This skill is automatically loaded when the following scenarios are detected:
- The user says "add illustrations now", "help me with illustrations", or "add images"
- After article proofreading is complete and illustrations are needed
- When the article content is complete but images are missing
Core Features
- Analyse illustration requirements: Determine 5–8 illustrations needed based on article content
- Source images from:
- Public domain works (Wikimedia Commons, Google Arts & Culture)
- AI-generated images (Volcano Engine doubao-seedream API)
- Free stock libraries (Unsplash, Pexels)
- Auto-upload to image host: Call ImgBB to obtain permanent links
- Insert Markdown: Insert image links at the appropriate positions in the article
- Verify display: Ensure all image links are valid
Illustration Quantity Guidelines
- Recommended: 5–8 images
- Minimum: 3 images (cover + 2 body images)
- Maximum: No more than 10 (to avoid excessive interruption to reading flow)
Illustration Placement Strategy
Mandatory placement:
- ✅ Cover image (hero image): Below the title — always required
- ✅ Core sections: 1 image per key section
Optional placement:
- Theory support (e.g., referencing a classic work)
- Data visualisation (comparison charts, graphs)
- Case supplements (product screenshots, examples)
Image Source Priority
1️⃣ Public Domain Works (Highest Priority)
- Sources: Wikimedia Commons, Google Arts & Culture
- Suitable for: Classic artwork, historical portraits, ancient book covers
- Advantages: Free, no copyright issues, high quality
- Examples: Van Gogh's Starry Night, Kant portrait
- Method: Use WebFetch to obtain Wikimedia Commons image links
2️⃣ AI-Generated (Recommended)
- Source: Volcano Engine doubao-seedream-4-0-250828
- Suitable for: Cover images, concept art, abstract themes
- Advantages: Original, customisable, fast
- Method: Call API to generate image, returns a temporary URL
3️⃣ Free Stock Libraries
- Sources: Unsplash, Pexels, Pixabay
- Suitable for: Cover images, concept art, background images
- Advantages: Free, high quality, commercially usable (CC0)
- Method: WebFetch search + download
4️⃣ Screenshots / Official Assets (Citation required)
- Sources: YouTube, Bilibili, product websites, film posters
- Suitable for: Case images (product screenshots, video stills)
- Note: Cite the source; use under fair use principles
- Method: Remind user to take their own screenshot, or generate an AI concept image as a substitute
Image Host Upload Workflow
Core Script
Use the project's existing /tools/upload_image.py script
Upload Method
# Call upload script (via Bash)
python3 /Users/alchain/Documents/writing/tools/upload_image.py <image URL or local path>
# Handle web images (e.g., AI-generated temporary links)
python3 /Users/alchain/Documents/writing/tools/upload_image.py "https://example.com/ai-generated.jpg"
# Handle local images
python3 /Users/alchain/Documents/writing/tools/upload_image.py "/Users/alchain/Pictures/image.png"
# Script automatically returns ImgBB permanent link
Fallback Mechanism
- ✅ Prefer uploading to ImgBB image host (permanent links)
- ⚠️ If upload fails, automatically use the original URL as a fallback
- 📌 See
/tools/README.md for image upload script documentation
Markdown Insert Format

- Use permanent network links (not local paths)
- Write a meaningful image description (alt text)
- Keep descriptions concise and focused on the image content
Image Specifications
Size Specifications
- Cover image: 1200 x 600px (16:9)
- Body images: 800–1200px wide
- Person/product: 800 x 800px (1:1)
File Specifications
- Format: JPG (photos) / PNG (illustrations)
- Size: < 500KB
- Naming: lowercase, semantic, in English (e.g.,
mrbeast.jpg, starry-night.jpg)
Path Specifications
- ✅ Network link:
https://i.ibb.co/xxxxx/image.jpg (recommended, permanent)
- ❌ Local path: No longer used (breaks when pasted into the WeChat editor)
Copyright Notes
- ✅ Public domain works (author deceased 70+ years)
- ✅ CC0-licensed images (Unsplash, etc.)
- ✅ AI-generated images (confirm tool licence)
- ⚠️ Screenshots/official assets require source attribution
Illustration Checklist
Before executing an illustration task, confirm:
Execution Steps (5-Step Standard Workflow)
Step 1: Analyse article and determine illustration requirements
- Read the full article, mark key sections
- List illustration requirements (6–8 items)
- Determine the position and purpose of each image
Step 2: Source / generate images
Based on source priority order:
- Public domain works → WebFetch to retrieve
- AI-generated → Call API
- Free stock → WebFetch search
- Screenshot assets → Remind user to provide
Step 3: Upload to image host, obtain permanent links
# Call upload script for each image
python3 /Users/alchain/Documents/writing/tools/upload_image.py <image URL>
Step 4: Insert images into article

Step 5: Verify display
# Check all image references
grep -n "!\[" "article-path.md"
# All image links should start with https://
Reference Resources
/tools/README.md — Image upload script documentation
/tools/upload_image.py — Image upload script
/writing/AI-image-generation-API.md — AI image generation API documentation
/writing/images/illustration-best-practices.md — Illustration best practices
Frequently Asked Questions
Q1: Will AI-generated image temporary links expire?
A: Yes. That's why you must call upload_image.py to upload to ImgBB and get a permanent link.
Q2: What if the image host upload fails?
A: The script has a fallback mechanism and will automatically use the original URL. However, it's recommended to check your ImgBB API configuration.
Q3: Does every article need illustrations?
A: Illustrations are strongly recommended, especially for long articles (3,000+ words). Short articles (under 1,000 words) may only need a cover image.
Q4: Can local image paths be used?
A: Not recommended. Local paths break when pasted into the WeChat editor — always use network links.
Technical Dependencies
- Python script:
/tools/upload_image.py (already in place)
- API configuration: ImgBB API key (configured in
~/.zshrc)
- AI generation API: Volcano Engine doubao-seedream (optional)
- Tools: WebFetch (for retrieving public domain images)
Success Examples
- "Why the Best Content Is Useless": 6 illustrations (2 public domain + 4 AI-generated)
- "DeepSeek-OCR In-Depth Review": 5 illustrations, all uploaded to ImgBB, copy-pasted to WeChat without issue
Last Updated: 2025-11-07
Applicable Projects: WeChat article writing
Maintained by: Huashu
By Huashu | AI Native Coder · Independent Developer
WeChat Official Account "Huashu" | 300k+ followers | AI Tools & Productivity
Flagship products: Kitty Catchlight (AppStore Paid Rankings Top 1) · Play DeepSeek with One Book
1---2name: huashu-image-upload3description: One-click generation and upload of article illustrations to an image host, with automatic Markdown link insertion. Use when the user mentions "illustrations", "article images", "upload images", or "image for the article".4---56# Image Generation & Upload78A professional capability for automatically generating illustrations for WeChat articles, uploading them to an image host, and inserting Markdown links.910## When to Use This Skill1112This skill is automatically loaded when the following scenarios are detected:1314- The user says "add illustrations now", "help me with illustrations", or "add images"15- After article proofreading is complete and illustrations are needed16- When the article content is complete but images are missing1718## Core Features19201. **Analyse illustration requirements**: Determine 5–8 illustrations needed based on article content212. **Source images from**:22 - Public domain works (Wikimedia Commons, Google Arts & Culture)23 - AI-generated images (Volcano Engine doubao-seedream API)24 - Free stock libraries (Unsplash, Pexels)253. **Auto-upload to image host**: Call ImgBB to obtain permanent links264. **Insert Markdown**: Insert image links at the appropriate positions in the article275. **Verify display**: Ensure all image links are valid2829## Illustration Quantity Guidelines3031- **Recommended**: 5–8 images32- **Minimum**: 3 images (cover + 2 body images)33- **Maximum**: No more than 10 (to avoid excessive interruption to reading flow)3435## Illustration Placement Strategy3637**Mandatory placement**:3839- ✅ Cover image (hero image): Below the title — always required40- ✅ Core sections: 1 image per key section4142**Optional placement**:4344- Theory support (e.g., referencing a classic work)45- Data visualisation (comparison charts, graphs)46- Case supplements (product screenshots, examples)4748## Image Source Priority4950### 1️⃣ Public Domain Works (Highest Priority)5152- **Sources**: Wikimedia Commons, Google Arts & Culture53- **Suitable for**: Classic artwork, historical portraits, ancient book covers54- **Advantages**: Free, no copyright issues, high quality55- **Examples**: Van Gogh's Starry Night, Kant portrait56- **Method**: Use WebFetch to obtain Wikimedia Commons image links5758### 2️⃣ AI-Generated (Recommended)5960- **Source**: Volcano Engine doubao-seedream-4-0-25082861- **Suitable for**: Cover images, concept art, abstract themes62- **Advantages**: Original, customisable, fast63- **Method**: Call API to generate image, returns a temporary URL6465### 3️⃣ Free Stock Libraries6667- **Sources**: Unsplash, Pexels, Pixabay68- **Suitable for**: Cover images, concept art, background images69- **Advantages**: Free, high quality, commercially usable (CC0)70- **Method**: WebFetch search + download7172### 4️⃣ Screenshots / Official Assets (Citation required)7374- **Sources**: YouTube, Bilibili, product websites, film posters75- **Suitable for**: Case images (product screenshots, video stills)76- **Note**: Cite the source; use under fair use principles77- **Method**: Remind user to take their own screenshot, or generate an AI concept image as a substitute7879## Image Host Upload Workflow8081### Core Script8283Use the project's existing `/tools/upload_image.py` script8485### Upload Method8687```python88# Call upload script (via Bash)89python3 /Users/alchain/Documents/writing/tools/upload_image.py <image URL or local path>9091# Handle web images (e.g., AI-generated temporary links)92python3 /Users/alchain/Documents/writing/tools/upload_image.py "https://example.com/ai-generated.jpg"9394# Handle local images95python3 /Users/alchain/Documents/writing/tools/upload_image.py "/Users/alchain/Pictures/image.png"9697# Script automatically returns ImgBB permanent link98```99100### Fallback Mechanism101102- ✅ Prefer uploading to ImgBB image host (permanent links)103- ⚠️ If upload fails, automatically use the original URL as a fallback104- 📌 See `/tools/README.md` for image upload script documentation105106## Markdown Insert Format107108```markdown109110```111112- Use permanent network links (not local paths)113- Write a meaningful image description (alt text)114- Keep descriptions concise and focused on the image content115116## Image Specifications117118### Size Specifications119120- Cover image: 1200 x 600px (16:9)121- Body images: 800–1200px wide122- Person/product: 800 x 800px (1:1)123124### File Specifications125126- Format: JPG (photos) / PNG (illustrations)127- Size: < 500KB128- Naming: lowercase, semantic, in English (e.g., `mrbeast.jpg`, `starry-night.jpg`)129130### Path Specifications131132- ✅ Network link: `https://i.ibb.co/xxxxx/image.jpg` (recommended, permanent)133- ❌ Local path: No longer used (breaks when pasted into the WeChat editor)134135## Copyright Notes136137- ✅ Public domain works (author deceased 70+ years)138- ✅ CC0-licensed images (Unsplash, etc.)139- ✅ AI-generated images (confirm tool licence)140- ⚠️ Screenshots/official assets require source attribution141142## Illustration Checklist143144Before executing an illustration task, confirm:145146- [ ] Article has been proofread and content is finalised147- [ ] Number of illustrations determined (5–8)148- [ ] Illustration positions confirmed (cover + core sections)149- [ ] All images obtained (AI-generated / public domain / stock)150- [ ] All images uploaded to ImgBB image host151- [ ] Image links are permanent network links (starting with https://)152- [ ] Images inserted in Markdown (using network links)153- [ ] Image descriptions (alt text) have been filled in154- [ ] All image links verified as valid (accessible)155156## Execution Steps (5-Step Standard Workflow)157158### Step 1: Analyse article and determine illustration requirements159160- Read the full article, mark key sections161- List illustration requirements (6–8 items)162- Determine the position and purpose of each image163164### Step 2: Source / generate images165166Based on source priority order:1671681. Public domain works → WebFetch to retrieve1692. AI-generated → Call API1703. Free stock → WebFetch search1714. Screenshot assets → Remind user to provide172173### Step 3: Upload to image host, obtain permanent links174175```bash176# Call upload script for each image177python3 /Users/alchain/Documents/writing/tools/upload_image.py <image URL>178```179180### Step 4: Insert images into article181182```markdown183184```185186### Step 5: Verify display187188```bash189# Check all image references190grep -n "!\[" "article-path.md"191# All image links should start with https://192```193194## Reference Resources195196- `/tools/README.md` — Image upload script documentation197- `/tools/upload_image.py` — Image upload script198- `/writing/AI-image-generation-API.md` — AI image generation API documentation199- `/writing/images/illustration-best-practices.md` — Illustration best practices200201## Frequently Asked Questions202203### Q1: Will AI-generated image temporary links expire?204205**A**: Yes. That's why you must call `upload_image.py` to upload to ImgBB and get a permanent link.206207### Q2: What if the image host upload fails?208209**A**: The script has a fallback mechanism and will automatically use the original URL. However, it's recommended to check your ImgBB API configuration.210211### Q3: Does every article need illustrations?212213**A**: Illustrations are strongly recommended, especially for long articles (3,000+ words). Short articles (under 1,000 words) may only need a cover image.214215### Q4: Can local image paths be used?216217**A**: Not recommended. Local paths break when pasted into the WeChat editor — always use network links.218219## Technical Dependencies220221- **Python script**: `/tools/upload_image.py` (already in place)222- **API configuration**: ImgBB API key (configured in `~/.zshrc`)223- **AI generation API**: Volcano Engine doubao-seedream (optional)224- **Tools**: WebFetch (for retrieving public domain images)225226## Success Examples227228- **"Why the Best Content Is Useless"**: 6 illustrations (2 public domain + 4 AI-generated)229- **"DeepSeek-OCR In-Depth Review"**: 5 illustrations, all uploaded to ImgBB, copy-pasted to WeChat without issue230231---232233**Last Updated**: 2025-11-07234**Applicable Projects**: WeChat article writing235**Maintained by**: Huashu236237---238239> **By Huashu** | AI Native Coder · Independent Developer240> WeChat Official Account "Huashu" | 300k+ followers | AI Tools & Productivity241> Flagship products: Kitty Catchlight (AppStore Paid Rankings Top 1) · *Play DeepSeek with One Book*