brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
topview-skillGenerate, Edit, Collaborate. Access all mainstream AI models in one toolkit. Simply describe your vision to create videos, images, and avatars—zero manual operations.
Independent GitHub snapshot · Automated classification · Original documentation governs
Modular Python toolkit for the Topview AI API.
✨ Generate. Edit. Collaborate. — All in One Place. ✨
Always use the Python scripts in
scripts/. Do NOT usecurlor direct HTTP calls.
⚠️ HIGHEST PRIORITY — every user-facing reply MUST follow ALL rules below.
Most users are non-technical. Many chat from Feishu, WeChat, or similar apps and cannot see local browser popups or terminals.
URL: ... from auth.py login output and use the login template below. Never say "browser opened" or similar. If the URL is not found in the output, re-run auth.py login to get a new link. Never skip sending the link.auth.py login and send the link. Don't ask "which method do you prefer?" or present multiple options. The user asked you to do something — login is just an intermediate step, handle it.Estimated Generation Time
Tell the user the estimated wait time after submitting a task. Match the user's language.
| Task Type | Model | Estimated Time |
|---|---|---|
| Video | Standard / Fast (Seedance 2.0) | ~5–10 min |
| Video | All other video models (Kling, Sora, Veo, Vidu, etc.) | ~3–5 min |
| Image | GPT Image 1.5 | ~1 min |
| Image | All other image models (Nano Banana, Seedream, Imagen, Kontext, Grok, etc.) | ~30s–1 min |
| Avatar | avatar4 | ~2–5 min (depends on script length) |
| TTS | text2voice | ~10–30s |
| Remove BG | remove_bg | ~10–30s |
| Product Avatar | product_avatar | ~1–2 min |
Example messages after submitting:
Required login message template
Replace <LOGIN_URL> with the actual link. Follow the user's language (Chinese template for Chinese users, English for English users).
中文模板:
安装完成,Topview Skill 已连接到你的智能助手。
复制下方链接到浏览器中登录,登录后将解锁以下能力:
<LOGIN_URL>
🎬 视频生成
文字转视频、图片转视频、参考视频生成,自动配音配乐。
视频模型:Seedance 2.0 · Sora 2 · Kling 3 · Veo 3.1 · Vidu Q3 · wan2.7
🖼️ AI 图片生成与编辑
文字生图、AI 修图、风格转换,最高支持 4K。
图片模型:Nano Banana 2 · Seedream 5.0 · GPT Image 1.5 · Imagen 4 · Kontext-Pro · Grok Image
🧑💼 口播数字人
上传一张照片 + 文案,自动生成真人口播视频,支持多语种。
✂️ 背景移除
一键抠图,产品图、人像、任意图片秒去背景。
👗 产品模特图
把你的产品图放到模特身上,自动生成带货展示图。
🎙️ 语音与配音
文字转语音、声音克隆,支持多语种配音输出。
登录完成后回我一句"好了",我马上继续。
English template:
Installation complete. Topview Skill is now connected to your agent.
Copy the link below into your browser to sign in. After signing in, the following capabilities will be unlocked.
<LOGIN_URL>
🎬 Video Generation
Text-to-video, image-to-video, reference-based generation with auto sound & music.
Models: Seedance 2.0 · Sora 2 · Kling 3 · Veo 3.1 · Vidu Q3 · wan2.7
🖼️ AI Image Generation & Editing
Text-to-image, AI retouching, style transfer — up to 4K resolution.
Models: Nano Banana 2 · Seedream 5.0 · GPT Image 1.5 · Imagen 4 · Kontext-Pro · Grok Image
🧑💼 Talking Avatar
Upload a photo + script to auto-generate presenter-style talking head videos.
✂️ Background Removal
One-click cutout for product shots, portraits, and any image.
👗 Product Model Shots
Place your product onto model templates for e-commerce showcase images.
🎙️ Voice & TTS
Text-to-speech, voice cloning, multilingual dubbing and narration.
Once you've signed in, just reply "done" and I'll continue right away.
Banned phrases (including any variations):
Fallback when login URL is not captured:
If
auth.py loginoutput does not contain aURL:line (e.g. background execution missed the output), re-runauth.py loginto get a fresh link. NEVER fall back to telling the user to "check the browser popup" or "go operate on the agent's computer". The user cannot see it.
TOPVIEW_UID + TOPVIEW_API_KEY are handled automatically after login; manual setup is only for CI/internal usepip install -r {baseDir}/scripts/requirements.txt
These rules apply to ALL generation modules (avatar4, video_gen, ai_image, remove_bg, product_avatar, text2voice).
run — it submits the task and polls automatically until done. This is the default and correct choice in almost all situations.query when run has already timed out and you have a taskId to resume, or when the user explicitly provides an existing taskId.query polls continuously — it keeps checking every --interval seconds until status is success or fail, or --timeout expires. It does not stop after one check.query also times out (exit code 2), increase --timeout and try again with the same taskId. Do not resubmit unless the task has actually failed.Decision tree:
→ New request? use `run`
→ run timed out? use `query --task-id <id>`
→ query timed out? use `query --task-id <id> --timeout 1200`
→ task status=fail? resubmit with `run`
Task Status:
| Status | Description |
|---|---|
init | Task is queued, waiting to be processed |
running | Task is actively being processed |
success | Task completed successfully |
fail | Task failed |
Every generation task should include a
--board-idso results are organized and viewable on the web.
board.py list --default -q to get the default board ID ("My First Board"). Only need to do this once per session.--board-id <id> to every generation command (avatar4.py, video_gen.py, ai_image.py, product_avatar.py, text2voice.py).boardTaskId, show the user the edit link: https://www.topview.ai/board/{boardId}?boardResultId={boardTaskId}. Tell the user they can view and edit the result via this link.board.py create --name "..." and use the returned board ID for subsequent tasks.board.py list --default -q again.Session flow:
1. BOARD_ID = $(board.py list --default -q)
2. avatar4.py run --board-id $BOARD_ID ...
3. video_gen.py run --board-id $BOARD_ID ...
4. (result shows edit link with boardTaskId)
| Module | Script | Reference | Description |
|---|---|---|---|
| Auth | scripts/auth.py | auth.md | OAuth 2.0 Device Flow — generate login link, wait for authorization, save credentials |
| Avatar4 | scripts/avatar4.py | avatar4.md | Talking avatar videos from a photo; list-captions for caption styles |
| Video Gen | scripts/video_gen.py | video_gen.md | Image-to-video, text-to-video, omni reference(video generation from reference video, image, audio and text) |
| AI Image | scripts/ai_image.py | ai_image.md | Text-to-image and AI image editing (10+ models) |
| Remove BG | scripts/remove_bg.py | remove_bg.md | Remove image background — step 1 of Product Avatar flow |
| Product Avatar | scripts/product_avatar.py | product_avatar.md | Model showcase product image; list-avatars/list-categories for template browsing |
| Text2Voice | scripts/text2voice.py | text2voice.md | Text-to-speech audio generation |
| Voice | scripts/voice.py | voice.md | Voice list/search, voice cloning, delete custom voices |
| Board | scripts/board.py | board.md | Board management — organize results, view/edit on web |
| User | scripts/user.py | user.md | Credit balance and usage history |
Read individual reference docs for usage, options, and code examples. Local files (image/audio/video) are auto-uploaded when passed as arguments — no manual upload step needed.
Core Principle: Start from the user's intent, not from the API. Analyze what the user wants to achieve, then pick the right tool, model, and parameters.
Every time a user requests content, identify:
| Dimension | Ask Yourself | Fallback |
|---|---|---|
| Output Type | Image? Video? Audio? Composite? | Must ask |
| Purpose | Marketing? Education? Social media? Personal? | General social media |
| Source Material | What does the user have? What's missing? | Must ask |
| Style / Tone | Professional? Casual? Playful? Authoritative? | Professional & friendly |
| Duration | How long should the output be? | 5–15s for clips, 30–60s for avatar |
| Language | What language? Need captions? | Match user's language |
| Channel | Where will it be published? | General purpose |
What does the user need?
│
├─ A person speaking to camera (talking head)?
│ → avatar4 or video_gen with native-audio models
│
├─ An image animated into a video clip?
│ → video_gen --type i2v
│
├─ A video generated purely from text?
│ → video_gen --type t2v
│
├─ A new video based on reference materials (style transfer, editing)?
│ → video_gen --type omni
│
├─ An image generated from a text prompt?
│ → ai_image --type text2image
│
├─ An existing image edited / modified with AI?
│ → ai_image --type image_edit
│
├─ Remove background from an image (e.g. product cutout)?
│ → remove_bg
│
├─ A product placed into a model/avatar scene?
│ → product_avatar (use remove_bg first if product has background)
│ → product_avatar list-avatars to browse public templates
│
├─ Browse available caption styles for avatar videos?
│ → avatar4 list-captions
│
├─ Text converted to speech audio?
│ → text2voice
│
├─ Need to find a voice / list available voices?
│ → voice list
│
├─ Clone a custom voice from audio sample?
│ → voice clone
│
├─ Delete a custom voice?
│ → voice delete
│
├─ Manage boards / view results on web?
│ → board (list, create, detail, tasks)
│
├─ A combination (e.g., talking head + product clips)?
│ → Use a recipe (see Step 3)
│
└─ Outside current capabilities?
→ See Capability Boundaries below
Quick-reference routing table:
| User says... | Script & Type |
|---|---|
| "Make a talking avatar video with this photo and text" | avatar4.py (pass local image path directly) |
| "Generate a video with this photo and my audio recording" | avatar4.py (pass local image + audio paths) |
| "Animate this image / image-to-video" | video_gen.py --type i2v (pass local image path) |
| "Generate a video about..." | video_gen.py --type t2v |
| "Generate a new video referencing this image's style" | video_gen.py --type omni |
| "Generate an image / text-to-image" | ai_image.py --type text2image |
| "Modify this image / change background" | ai_image.py --type image_edit |
| "Remove image background / cutout" | remove_bg.py |
| "Put this product on a model image" | product_avatar.py (use remove_bg.py first if product has background) |
| "What product avatar/model templates are available?" | product_avatar.py list-avatars |
| "What caption styles are available?" | avatar4.py list-captions |
| "Convert this text to speech / audio" | text2voice.py |
| "What voices are available? / Find a female voice" | voice.py list --gender female |
| "Clone a voice from this audio recording" | voice.py clone --audio <file> |
| "Delete this custom voice" | voice.py delete --voice-id <id> |
| "View my board / check what was generated" | board.py list or board.py tasks --board-id <id> |
| "Create a new board" | board.py create --name "..." |
| "Check how many credits I have left" | user.py credit |
Video model selection — see references/video_gen.md § Model Recommendation.
Image model tip: For all image tasks, default to Nano Banana 2 — strongest all-round model with best quality, 14 aspect ratios, up to 4K, and 14 reference images for editing. See references/ai_image.md § Model Recommendation.
Product Avatar workflow: For best results, use the 2-step flow:
remove_bg.pyto get abgRemovedImageFileId, thenproduct_avatar.pywith--product-image-no-bg. Useproduct_avatar.py list-avatarsto browse public templates and get anavatarId. See references/product_avatar.md § Full Workflow.
Caption styles for avatar4: Use
avatar4.py list-captionsto discover available caption styles, then pass thecaptionIdvia--caption.
Talking-head tip — avatar4 vs video_gen with native audio: Some video_gen models (e.g. Standard, Kling V3, Veo 3.1) support native audio and can produce talking-head videos with better visual quality than avatar4. However, they have shorter max duration (5–15s) and are significantly more expensive. Avatar4 supports up to 120s per segment at much lower cost. Rule of thumb: Default to avatar4 for most talking-head needs. Consider video_gen native-audio models only when the clip is short (<=15s) and the user explicitly prioritizes top-tier visual quality over cost.
Simple requests — the user's need is clear, materials are ready → handle directly from the reference docs.
Complex requests — the user gives a goal (e.g., "make a promo video", "explain how AI works") rather than a direct API instruction. Follow this universal workflow:
avatar4 (Talking Head).video_gen --type i2v or omni.video_gen --type t2v.<break time="0.5s"/> tags to TTS scripts for natural pacing.avatar4 task, split it into logical segments (e.g., 60s each) at natural sentence boundaries. Submit tasks in parallel using the submit command, ensure parameters (voice/model) remain locked across segments, and deliver them in order.Follow this before EVERY generation task.
video_gen.py estimate-cost for video tasks, ai_image.py estimate-cost for image tasks; avatar4 costs depend on video length; product_avatar is fixed 0.5 credits; text2voice is fixed 0.1 creditslist-models to check)Use the structured result templates below. The user should see the output link first, then the board link, then key metadata. Keep it clean and scannable.
Video result template:
🎬 视频已生成完成
视频地址:<VIDEO_URL>
• 时长:<DURATION>
• 画幅:<ASPECT_RATIO>
• 模型:<MODEL_NAME>
• 消耗:<COST> credits
🔗 项目链接
https://www.topview.ai/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>
可在项目中查看、编辑和下载。
不满意的话可以告诉我,我帮你调整后重新生成。
Image result template:
🖼️ 图片已生成完成
图片地址:<IMAGE_URL>
• 分辨率:<RESOLUTION>
• 模型:<MODEL_NAME>
• 消耗:<COST> credits
🔗 项目链接
https://www.topview.ai/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>
可在项目中查看、编辑和下载。
不满意的话可以告诉我,我帮你调整后重新生成。
English video result template:
🎬 Video generated
Video: <VIDEO_URL>
• Duration: <DURATION>
• Aspect ratio: <ASPECT_RATIO>
• Model: <MODEL_NAME>
• Cost: <COST> credits
🔗 Project link
https://www.topview.ai/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>
View, edit, and download in the project.
Not happy with the result? Let me know and I'll adjust and regenerate.
English image result template:
🖼️ Image generated
Image: <IMAGE_URL>
• Resolution: <RESOLUTION>
• Model: <MODEL_NAME>
• Cost: <COST> credits
🔗 Project link
https://www.topview.ai/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>
View, edit, and download in the project.
Not happy with the result? Let me know and I'll adjust and regenerate.
Rules:
boardTaskId is available, show the board edit link.See references/error_handling.md for error codes, task-level failures, and recovery decision tree.
| Capability | Status | Script |
|---|---|---|
| Photo avatar / talking head | Available | scripts/avatar4.py |
| Caption styles | Available | scripts/avatar4.py list-captions |
| Credit management | Available | scripts/user.py |
| Image-to-video (i2v) | Available | scripts/video_gen.py --type i2v |
| Text-to-video (t2v) | Available | scripts/video_gen.py --type t2v |
| Omni reference video | Available | scripts/video_gen.py --type omni |
| Text-to-image | Available | scripts/ai_image.py --type text2image |
| Image editing | Available | scripts/ai_image.py --type image_edit |
| Remove background | Available | scripts/remove_bg.py |
| Product avatar / image replace | Available | scripts/product_avatar.py |
| Product avatar templates | Available | scripts/product_avatar.py list-avatars / list-categories |
| Text-to-speech (TTS) | Available | scripts/text2voice.py |
| Voice list / search | Available | scripts/voice.py list |
| Voice cloning | Available | scripts/voice.py clone |
| Delete custom voice | Available | scripts/voice.py delete |
| Board management | Available | scripts/board.py |
| Board task browsing | Available | scripts/board.py tasks / task-detail |
| Marketing video (m2v) | No module | Suggest topview.ai web UI |
Never promise capabilities that don't exist as modules.