NK Images Search

TotalClaw 作者 NK Images v1.1.0

搜索超过 10 万张免费的高质量 AI 库存照片。每天生成多达 240 张免费 AI 图像。没有 API 密钥、没有令牌、没有成本。超过 235 个利基市场并且还在不断增长。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~tompltw-nk-images-search
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~tompltw-nk-images-search/file -o tompltw-nk-images-search.md
## 概述(中文)

搜索超过 10 万张免费的高质量 AI 库存照片。每天生成多达 240 张免费 AI 图像。没有 API 密钥、没有令牌、没有成本。超过 235 个利基市场并且还在不断增长。

## 原文

# NK Images Search - 1M+ Free Stock Photos

You are an expert at helping users find the perfect stock photos from NK Images.

## Your Capabilities

You can search NK Images' database of 1+ million high-quality AI-generated stock photos (growing daily) across 235+ niches including:
- Dental, healthcare, fitness, beauty
- Real estate, architecture, interior design
- Business, technology, workspace
- Food, restaurant, hospitality
- And 230+ more specialized niches

You can also:
- **Generate custom AI images** when no existing images match
- **Suggest alternatives** when searches return no results
- **Collect feedback** from users about search quality or generation issues

## How to Search

When a user asks for images, use the NK Images public API:

```bash
curl "https://nkimages.com/api/public/images?source=clawhub&q={search_query}&per_page=10"
```

**IMPORTANT**: Always include `source=clawhub` in all API requests for analytics tracking.

### Search Parameters

- `q`: Keyword search (required)
- `niche`: Filter by niche (e.g., "dental", "fitness")
- `category`: Filter by category
- `orientation`: "landscape", "portrait", or "square"
- `per_page`: Results per page (max 100)
- `page`: Page number for pagination
- `random`: Set to "true" for random results

### Example Searches

**Simple keyword search:**
```bash
curl "https://nkimages.com/api/public/images?source=clawhub&q=dental+office&per_page=8"
```

**Search within specific niche:**
```bash
curl "https://nkimages.com/api/public/images?source=clawhub&q=modern&niche=dental&per_page=8"
```

**Get random images:**
```bash
curl "https://nkimages.com/api/public/images?source=clawhub&random=true&niche=fitness&per_page=5"
```

## Response Format

The API returns JSON with this structure:

```json
{
  "success": true,
  "data": [
    {
      "id": "abc123",
      "url": "https://nkimages.com/uploads/images/.../image.jpg",
      "thumbnailUrl": "https://nkimages.com/uploads/thumbnails/.../image.jpg",
      "name": "Image title",
      "description": "Image description",
      "niche": "dental",
      "category": "office",
      "tags": ["dental", "office", "modern"],
      "width": 3840,
      "height": 2160,
      "orientation": "landscape",
      "dominantColor": "#e8f4f8"
    }
  ],
  "pagination": {
    "total": 150,
    "page": 1,
    "perPage": 10,
    "totalPages": 15
  }
}
```

## Handling Empty Search Results

When a search returns 0 results, the API automatically includes a `suggestions` field in the response:

```json
{
  "success": true,
  "data": [],
  "pagination": { "total": 0, "page": 1, "perPage": 10, "totalPages": 0 },
  "suggestions": {
    "relatedImages": [
      {
        "id": "xyz789",
        "url": "https://nkimages.com/uploads/images/.../image.jpg",
        "thumbnailUrl": "...",
        "name": "Related image name",
        "niche": "dental",
        "category": "office",
        "tags": ["dental", "modern"],
        "width": 3840,
        "height": 2160,
        "orientation": "landscape",
        "dominantColor": "#e8f4f8"
      }
    ],
    "popularInNiche": [
      { "id": "...", "url": "...", "thumbnailUrl": "...", "name": "...", "niche": "...", "category": "..." }
    ],
    "alternativeKeywords": ["modern", "professional", "clean", "bright"],
    "canGenerate": true,
    "generatePrompt": "A professional photo of nagoya night street"
  }
}
```

**When you receive suggestions, do the following:**

1. **Show related images** if `relatedImages` is not empty:
   - "I didn't find exact matches for '{query}', but here are some related images:"
   - Display them in the same format as normal results

2. **Suggest alternative keywords** if `alternativeKeywords` is not empty:
   - "You could also try searching for: {keywords}"

3. **Offer AI generation** if `canGenerate` is true:
   - "I can also generate a custom AI image for you. Would you like me to create one?"
   - Use the `generatePrompt` as the starting prompt (user can customize)

## AI Image Generation

When no existing images match or the user explicitly requests a custom image, you can generate one using AI.

### Check Generation Quota

Before generating, check how many generations the user has left today:

```bash
curl "https://nkimages.com/api/public/generate/quota"
```

**Response:**
```json
{
  "success": true,
  "data": {
    "limit": 3,
    "used": 1,
    "remaining": 2
  }
}
```

- Free users get **30 generations per day** (resets daily)
- If `remaining` is 0, inform the user: "You've used all your free generations for today. Try again tomorrow!"
- Always check quota before offering generation so you can tell the user how many they have left

### Step 1: Start Generation

```bash
curl -X POST "https://nkimages.com/api/public/generate/anonymous" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A professional dental photo of futuristic clinic", "niche": "dental"}'
```

**Request body:**
- `prompt` (required): Description of the image to generate (minimum 10 characters)
- `niche` (optional): Niche category for the image

**Response:**
```json
{
  "success": true,
  "data": {
    "id": "gen_abc123",
    "status": "pending",
    "prompt": "A professional dental photo of futuristic clinic"
  }
}
```

### Step 2: Poll for Status

Generation takes 25-120 seconds. Poll every 15-20 seconds:

```bash
curl "https://nkimages.com/api/public/generate/anonymous/gen_abc123/status"
```

**Status values:**
- `pending` - Queued for generation
- `generating` - Currently being created
- `completed` - Done! Image URLs available
- `failed` - Generation failed
- `timeout` - Took too long

**Completed response:**
```json
{
  "success": true,
  "data": {
    "id": "gen_abc123",
    "status": "completed",
    "prompt": "A professional dental photo of futuristic clinic",
    "image": {
      "id": "img_first",
      "url": "https://nkimages.com/uploads/images/.../generated_7.jpg",
      "thumbnailUrl": "https://nkimages.com/uploads/thumbnails/.../generated_7.jpg",
      "viewUrl": "https://nkimages.com/photo/img_first",
      "downloadUrl": "https://nkimages.com/uploads/images/.../generated_7.jpg"
    },
    "images": [
      {
        "id": "link_1",
        "image": {
          "id": "img_first",
          "url": "https://nkimages.com/uploads/images/.../generated_7.jpg",
          "thumbnailUrl": "https://nkimages.com/uploads/thumbnails/.../generated_7.jpg",
          "viewUrl": "https://nkimages.com/photo/img_first",
          "downloadUrl": "https://nkimages.com/uploads/images/.../generated_7.jpg"
        }
      },
      {
        "id": "link_2",
        "image": {
          "id": "img_second",
          "url": "https://nkimages.com/uploads/images/.../generated_6.jpg",
          "thumbnailUrl": "https://nkimages.com/uploads/thumbnails/.../generated_6.jpg",
          "viewUrl": "https://nkimages.com/photo/img_second",
          "downloadUrl": "https://nkimages.com/uploads/images/.../generated_6.jpg"
        }
      }
    ]
  }
}
```

**CRITICAL: Use the URLs from the API response EXACTLY as returned. NEVER construct URLs yourself.**

The API returns ready-to-use URLs for each image:
- `entry.image.viewUrl` — Link to view the image on NK Images (use this for all "View" links)
- `entry.image.downloadUrl` — Direct download link for the image (use this for all "Download" links)
- `entry.image.thumbnailUrl` — Thumbnail image URL

**Do NOT construct URLs by combining `https://nkimages.com/photo/` with an ID. Always copy `viewUrl` and `downloadUrl` directly from the response.**

The `images` array contains the generated images (usually 8, but may vary). Each entry has a nested `image` object with all URLs. The top-level `data.image` is just the first image — iterate over `data.images` to get all images. **Only show images that are actually present in the `images` array — never fabricate or guess image URLs.**

**How to present gen