资产织造

title: Openclaw 配置生成图片助理,发布到网站的api description: date: "2026-03-18" tags: [openclaw] cover: /images/rwa-cover.jpg

1.Openclaw 图片生成



Host(主机地址)208.167.233.53 
Port(端口,默认 5432)
Database name(数据库名)comic_db
Username / Password  comic/comic123456


直接存到你的服务器某个目录?/root/comics/images
API Key:你想自己指定一个固定的 key,还是让我生成一个随机的?随机生成
CREATE USER comic WITH PASSWORD 'comic123456';

CREATE DATABASE comic_db
WITH 
OWNER = comic
ENCODING = 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
TEMPLATE = template0;

ai 任务列表

0 Tasks Remaining
安装依赖:Prisma, pg, multer, uuid, crypto等
配置 Prisma + PostgreSQL,定义数据模型
实现 API Key 鉴权中间件
实现图片上传 API (/api/v1/upload)
实现漫画 CRUD API (/api/v1/comics)
实现章节 API (/api/v1/comics/[id]/episodes)
实现前端首页
实现漫画列表页
实现漫画详情页
实现漫画阅读页
Git commit & PR
你的 API Key(请妥善保存)
sk-16cb70343f469b3f27c48a6a8ce3600a98efe11f4b0060dbd0d4d4a603705e56
创建的文件结构
app/
├── api/v1/
│   ├── upload/route.ts          ← 图片上传
│   └── comics/
│       ├── route.ts             ← 漫画列表/创建
│       └── [id]/
│           ├── route.ts         ← 漫画详情/更新/删除
│           └── episodes/route.ts ← 章节创建
├── (web)/
│   ├── layout.tsx               ← 带导航的布局
│   ├── page.tsx                 ← 首页
│   ├── comics/page.tsx          ← 漫画列表+搜索
│   ├── comics/[id]/page.tsx     ← 漫画详情
│   ├── comics/[id]/[ep]/page.tsx ← 阅读器
│   └── tags/[tag]/page.tsx      ← 标签页
├── components/
│   ├── Header.tsx / ComicCard.tsx / ComicReader.tsx
lib/
├── prisma.ts / auth.ts / storage.ts
prisma/schema.prisma

OpenClaw 调用示例

# 1. 上传图片
curl -X POST https://your-domain/api/v1/upload \
  -H "X-Api-Key: sk-16cb70..." \
  -F "file=@cover.jpg"

# 2. 创建漫画
curl -X POST https://your-domain/api/v1/comics \
  -H "X-Api-Key: sk-16cb70..." \
  -H "Content-Type: application/json" \
  -d '{"title":"我的漫画","status":"PUBLISHED","tags":["冒险"]}'

# 3. 添加章节
curl -X POST https://your-domain/api/v1/comics/{id}/episodes \
  -H "X-Api-Key: sk-16cb70..." \
  -H "Content-Type: application/json" \
  -d '{"episodeNumber":1,"pages":[{"pageNumber":1,"imageUrl":"/uploads/p1.jpg"}]}'

2.第二次执行AI


0 Tasks Remaining
规划漫画博客平台架构
安装依赖并创建环境变量
设计并创建数据库Schema
实现漫画上传API
实现漫画展示前端页面
构建项目并启动服务测试
🏗️ 项目架构
webapp/
├── app/
│   ├── page.tsx                          # 首页(漫画网格+搜索+筛选)
│   ├── layout.tsx                        # 全局导航布局
│   ├── comics/
│   │   ├── page.tsx                      # 所有漫画列表页
│   │   └── [slug]/
│   │       ├── page.tsx                  # 漫画详情页
│   │       └── chapter/[chapterNum]/
│   │           └── page.tsx              # 章节阅读器(滚动/翻页模式)
│   └── api/
│       ├── comics/upload/route.ts        # ⭐ OpenClaw 上传API
│       ├── comics/list/route.ts          # 漫画列表API
│       ├── comics/[id]/route.ts          # 漫画详情API
│       ├── comics/[id]/chapters/...      # 章节页面API
│       └── images/[...path]/route.ts     # 图片服务代理
├── lib/
│   ├── db.ts                             # PostgreSQL 连接池
│   ├── auth.ts                           # API Key 鉴权
│   └── storage.ts                        # 图片存储工具
└── scripts/init-db.mjs                   # 数据库初始化脚本

🔑 OpenClaw 调用上传 API


POST /api/comics/upload
Authorization: Bearer 89d42f249496a09eb9478ed94edbcbf9603e30e02aabe9c6c71af8c14178ca7f
Content-Type: multipart/form-data

Fields:
  comic_title    必填  漫画名称(如 "Dragon's Path")
  chapter_num    必填  章节号(如 1 或 1.5)
  chapter_title  选填  章节标题
  description    选填  描述
  author         选填  作者(默认 OpenClaw)
  genre          选填  类型(action/fantasy/romance...)
  tags           选填  逗号分隔标签
  comic_slug     选填  自定义slug(不填自动从标题生成)
  pages          必填  图片文件(支持jpg/png/webp/gif,自动转webp)

Response:
  {
    "success": true,
    "comic": { "id", "title", "slug", "url": "/comics/xxx" },
    "chapter": { "id", "chapter_num", "page_count" },
    "pages": [{ "page_num", "image_url" }]
  }

📊 数据库设计(PostgreSQL)

表	说明
api_keys	API密钥(SHA-256哈希存储)
comics	漫画系列(title/slug/cover/genre/status...)
chapters	章节(关联comic,自动统计page_count)
pages	每页图片(URL + 存储路径 + 尺寸信息)
图片存储路径规则
/root/comics/images/<comic_slug>/ch0001/0001.webp
                                         0002.webp
                                 ch0002/0001.webp
⚙️ 服务管理

pm2 status                    # 查看状态
pm2 restart comics-platform   # 重启
pm2 logs comics-platform      # 查看日志
npm run db:init               # 重新初始化数据库



Deep Thinking
Bash Command
Write File
Edit File
Read File