This project was originally designed for the World Artificial Intelligence Conference (WAIC 2025) in Shanghai and has since been expanded to support multiple events (Kuaishou 2025 Creator Conference, Kuaishou Campus Recruitment).
The project is now open source, allowing anyone to build their own events based on this project. It provides comprehensive documentation for Kling WAIC event equipment, including event gameplay, management backend, pages and programs used, on-site equipment requirements, connection methods, printer configuration, and troubleshooting.
- Event Gameplay
- Management Backend
- Page Routes
- Program Components
- On-site Equipment
- Screen Connection
- Printer Configuration
- Troubleshooting
- Project Setup
Process Flow:
- Users scan QR code to access upload page (URL:
/qr/image) - Upload portrait photo
- Click "Generate Now", restyled 9-grid image generated in ~30 seconds
- Users can choose to:
- Long press to save image
- Print image (on-site printer automatically prints, queue by number to collect)
- Generated images are displayed on screen carousel (URL:
/screen/image)
Interface Screenshots:
| QR Entry | Upload Photo | Photo Preview |
|---|---|---|
![]() |
![]() |
![]() |
| Generating | Generated Result | Screen Display |
|---|---|---|
![]() |
![]() |
![]() |
Process Flow:
- Users scan QR code to access upload page (URL:
/qr/video) - Upload portrait photo
- Click "Generate Now", effect mystery box video generated in ~3 minutes
- Users can download video file in browser
- Generated videos are displayed on screen carousel (URL:
/screen/video)
Interface Screenshots:
| QR Entry | Upload Photo | Photo Preview |
|---|---|---|
![]() |
![]() |
![]() |
| Generating | Generated Result | Screen Display |
|---|---|---|
![]() |
![]() |
![]() |
Access URL: /admin
After login, you can switch activities (enter activity name and password), includes four functional modules:
- Function: Display all generated images, supports search by number
- Operations:
- π¨οΈ Print
- π Pin/Unpin (for screen group photos)
- ποΈ Delete (remove from screen display)
- Function: Display all generated videos, supports search by number
- Operations:
- ποΈ Delete (remove from screen display)
- Function: Display pending print tasks
- Note: If tasks accumulate, printer may be malfunctioning
- Function: Modify system configuration (save to take effect)
- Configuration Items:
- β Allow printing
- π Image/video service switches
- β° Token validity time
- π Printer task limit
- π Screen aspect ratio settings
Parameter Description:
API_SERVER_BASE_URL= # API service address
WAIC_MANAGEMENT_ACTIVITY= # Activity name
WAIC_MANAGEMENT_TOKEN= # Activity password
PRINTER_PRINTING_MODE=PDF_BATCH # Print mode: PDF_BATCH (batch, fast with borders) / EACH_ONE (single, slow without borders)
PRINTER_EXTRA_SCALE_FACTOR=1.00 # Print scale factor
DRAW_IMAGE_X=5.0 # Print offset X (positive moves right after 90Β° rotation)
DRAW_IMAGE_Y=5.0 # Print offset Y (positive moves up after 90Β° rotation)π‘ Tip: To eliminate border issues, try adjusting the last three parameters
| Function | Route | Description |
|---|---|---|
| π QR - Restyle Collage | /qr/image |
User QR code photo upload entry |
| π QR - Effect Mystery Box | /qr/video |
User QR code photo upload entry |
| πΊ Screen - Restyle Collage | /screen/image |
Image carousel display page |
| πΊ Screen - Effect Mystery Box | /screen/video |
Video carousel display page |
| βοΈ Management Backend | /admin |
System management interface |
- Printer Program
- π¦ Packaged MacBook application provided
- π» Or run from source code (requires Java17 + Maven3)
| Equipment Type | Quantity | Model/Spec | Purpose |
|---|---|---|---|
| π¨οΈ Printer | 2 units | DNP DS-620 | Photo printing |
| π Photo Paper | Several boxes | 2 rolls + 2 ribbons per box, 400 sheets per roll | Printing supplies |
| π± iPad | 2 units | - | Display QR code entries |
| πΊ Large Screen | 2 units | Recommended 100 inches | Display restyle collage/effect mystery box |
| π» MacBook | 3 units | - | 2 for screens, 1 for printer |
| πͺ§ Promotional Banners | 2 units | - | Event promotion |
| πΌοΈ Photo Wall | 1 unit | - | Display unclaimed photos |
Option 1: Wireless Network
- 5G CPE + Wireless Router
Option 2: Wired Network
- Downstream bandwidth: 200M+
- Switch + 5 network cables
- 5 Type-C adapters (supporting HDMI, Ethernet, charging, USB printer connection)
- Recommended Browser: Chrome
- Display Mode: Full-screen playback
If toolbar obstruction occurs:
- Go to "View" menu
- Uncheck "Always Show Toolbar in Full Screen"
- MacBook external screen requires extended display setup
- Adjust rotation angle: 90Β° or 270Β°
- Device: MacBook Apple Silicon
- Driver: DNP DP-DS620 printer driver
-
Download Driver
-
Connect Device
- Connect printer to MacBook via USB
- Open "System Preferences" β "Printers & Scanners"
- Add printer
-
Install Program
- Download and extract Printer Program
- Move to "Applications" folder
- Or run from source code (requires Java17 + Maven3), please research on your own
-
Configure Parameters
- Open KlingExpressPrinter program
- Fill in corresponding parameters to start printing
| Issue | Solution |
|---|---|
| π Error persists after paper change | Replace with different paper roll |
| π¨οΈ Printer not responding | Delete and re-add printer |
| πΊ Screen playback stuttering | Use M3 Pro chip MacBook, maintain 200M+ network, use Chrome |
| π» Windows compatibility | Driver available, but program only tested on Mac |
| βΈοΈ Print queue accumulation | Check if "Print Center" is paused, manually resume |
| π Blank photo paper | Reinstall driver/check paper compatibility |
| π¦ High concurrency queue buildup | Recommend β€ 4-5 people submit tasks simultaneously |
| π€ Image upload failure | Have users re-save image before uploading |
| π Image orientation error | Have users re-save image before uploading |
-
Register Kling Open Platform Account
-
Get API Keys
- Enable API Key and top up
- Obtain Access Key and Secret Key
cd ~
mkdir kling-express
cd kling-expressCreate .env file:
API_SERVER_BASE_URL=https://api.yourdomain.com # Your API service address
WAIC_OPENAPI_ACCESS_KEY=AK_MinioXXXXXX # S3 API Access Key
WAIC_OPENAPI_SECRET_KEY=SK_MinioXXXXXX # S3 API Secret KeyCreate redis.conf file:
requirepass your_redis_password # Redis password
tcp-keepalive 60Create application-env.properties file:
# Redis Configuration
REDIS_HOST_WAIC=172.17.0.1
REDIS_PORT_WAIC=6379
REDIS_PASSWORD_WAIC=your_redis_password
REDIS_CLUSTER_MODE_WAIC=false
REDISSON_PROTOCOL=redis
# S3 Configuration
S3_PATH_STYLE_ENABLED=true
S3_ENDPOINT=https://minio.yourdomain.com
S3_REGION=cn-north-1
S3_ACCESS_KEY=AK_MinioXXXXXXXXX
S3_SECRET_KEY=SK_MinioXXXXXXXXX
# Kling API Configuration
KLING_OPEN_BASE_URL=https://api-singapore.klingai.com # Global address
# Activity Configuration
config.activity.map[default].token=your_activity_password
config.activity.map[default].accessKey=AK_KlingAIXXXXXX
config.activity.map[default].secretKey=SK_KlingAIXXXXXX
# Multiple activity configuration example
# config.activity.map[test].token=your_activity_password
# config.activity.map[test].accessKey=AK_KlingAIYYYYYY
# config.activity.map[test].secretKey=SK_KlingAIYYYYYYPlace the project's docker-compose.yml file in the directory, then start:
- Note: Both kling-express-web and kling-express-api images only support arm64 architecture. For x86_64 architecture, please build images yourself.
- Or instead of Docker Compose, run web and api services directly from source code, please research on your own.
docker-compose up -dIf you already have Redis and S3 services (e.g., AWS EC2 environment), use simplified configuration:
docker-compose.yml:
services:
web:
image: akang943578/kling-express-web:latest
ports:
- "3000:80"
environment:
- API_SERVER_BASE_URL=${API_SERVER_BASE_URL}
restart: always
container_name: kling-express-web
depends_on:
- api
api:
image: akang943578/kling-express-api:latest
ports:
- "8738:8538"
volumes:
- ./application-env.properties:/app/application-env.properties
- ./api_logs:/app/logs
restart: always
container_name: kling-express-apiapplication-env.properties:
REDIS_CLUSTER_MODE_WAIC=true
REDIS_HOST_WAIC=your_redis_host
REDIS_PORT_WAIC=6379
REDISSON_PROTOCOL=rediss
KLING_OPEN_BASE_URL=https://api-beijing.klingai.com
S3_FILE_PREFIX= # S3 file prefix or CDN address
config.activity.map[default].token=your_activity_password
config.activity.map[default].accessKey=AK_KlingAIXXXXXX
config.activity.map[default].secretKey=SK_KlingAIXXXXXXIf you need to build project assets yourself, use the following commands:
Build Web Image:
cd web
sh build_image.shBuild API Image:
cd server
sh build_api_image.shBuild KlingExpressPrinter Mac Application:
cd server/printer
sh create_app_bundled.shπ HTTPS Recommended to ensure privacy and security of user uploaded images and videos:
- Use Cloudflare free CDN and SSL services
- Or use Nginx reverse proxy + Let's Encrypt free certificates
Customize styles and effects by mounting custom configuration files:
api:
image: akang943578/kling-express-api:latest
volumes:
- ./style-image-prompts.txt:/app/style-image-prompts.txt # Custom style image prompts
- ./video-special-effects.txt:/app/video-special-effects.txt # Custom video effectsπ Configuration Format: Please refer to Kling API Open Platform documentation
TODO:
- Multi-language interface support
- Dark mode interface adaptation
- Interface theme configuration guide

















