
Alibabacloud Yike Storyboard
- 183 installs
- 208 repo stars
- Updated August 4, 2026
- aliyun/alibabacloud-aiops-skills
Generate Yike storyboard frames and scene structure early to preview narrative flow, visual direction, and creative concepts before full production.
About
Alibaba Cloud Yike storyboard skill that helps creators prototype scene-by-scene visual narratives, test creative concepts quickly, and align teams on story flow before investing in full generative media production.
- Turn briefs into structured storyboard scenes
- Preview narrative pacing before production
- Align stakeholders on visual direction early
- Reduce rework on creative assets
- Accelerate Alibaba Yike media workflows
Alibabacloud Yike Storyboard by the numbers
- 183 all-time installs (skills.sh)
- Ranked #640 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-yike-storyboardAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 183 |
|---|---|
| repo stars | ★ 208 |
| Last updated | August 4, 2026 |
| Repository | aliyun/alibabacloud-aiops-skills ↗ |
What it does
Generate Yike storyboard frames and scene structure early to preview narrative flow, visual direction, and creative concepts before full production.
Files
Yike Storyboard Creation Skill
Help users complete the AI video creation workflow from novel/script to storyboard via conversational interface.
---
Prerequisites
1. Aliyun CLI Check
Pre-check: Aliyun CLI >= 3.3.3 required
>
```bash
aliyun version
```
>
Verify version >= 3.3.3. If not installed or version is too low,
run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to update,or see references/cli-installation-guide.md for installation instructions.
>
Then [MUST] run the following commands to configure CLI:
```bash
# Enable auto plugin installation
aliyun configure set --auto-plugin-install true
>
# Update plugins to latest
aliyun plugin update
>
# Set region to cn-shanghai (required for ICE service)
aliyun configure set --region cn-shanghai
```
[MUST] CLI User-Agent — Every aliyun CLI command invocation must include: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboard
2. ICE Plugin Installation
Pre-check: ICE CLI Plugin required
>
```bash
aliyun plugin install --names ice
```
>
Verify plugin is installed:
```bash
aliyun ice --help
```
---
Service Activation
1. Activate IMS (Intelligent Media Services)
Activation Link: https://ice.console.aliyun.com/guide/default
>
Log in with your Alibaba Cloud account and activate ICE Intelligent Media Services.
2. Log in to yikeai platform
Platform Link: https://www.yikeai.com/#/home
>
Visit the product website and authorize login with your Alibaba Cloud account.
Currently Wanjing Yike is in invitation-only phase. Click Apply for Access to submit your application.
---
Credential Verification
Pre-check: Alibaba Cloud Credentials Required
>
Security Rules:
- DO NOT read, print, or output AK/SK values
- ONLY USE aliyun configure list to check credential status>
```bash
aliyun configure list
```
>
If no valid profile exists, STOP and:
1. Get credentials from Alibaba Cloud Console
2. Run aliyun configure to set up credentials---
RAM Permissions
This skill requires ICE permissions: ice:CreateYikeAssetUpload, ice:SubmitYikeStoryboardJob, ice:GetYikeStoryboardJob.
For complete permission policies, see references/ram-policies.md.
[MUST] Permission Error Handling: When any command fails due to permission errors, read references/ram-policies.md for required permissions.---
Parameter Confirmation
Confirm key parameters with user before file upload through natural dialogue.
| Parameter | Required | Description | Default |
|---|---|---|---|
| file_path | ✅ | Text file path (txt/docx, ≤5MB, ≤30K chars) | User provides |
| title | ✅ | Storyboard title | Extract from text |
| source-type | ✅ | Novel or Script | Based on content analysis |
| style | ✅ | Visual style ID | Based on genre |
| voice | ✅ | Narration voice ID | Based on protagonist |
| shot-split-mode | ✅ | Shot split mode | Based on narrative style |
| ratio | Optional | 16:9, 9:16, 4:3, 3:4 | 9:16 |
| resolution | Optional | 720P, 1K, 2K, 4K | 720P |
See Task 0: Parameter Confirmation for recommendation guide.
---
Text Type Classification
| Type | Value | Description |
|---|---|---|
| Novel | Novel | Primarily narrative, descriptive, psychological content for reading |
| Script | Script | Primarily scenes, dialogue, action descriptions for performance/filming |
Classification Guide:
Evaluate the following features to determine if text is novel or script (don't judge solely by dialogue presence - novels can have extensive dialogue too):
| Feature | Script | Novel |
|---|---|---|
| Scene Markers | ✅ Has scene numbers, time, location, INT/EXT | ❌ No explicit scene markers |
| Structure | ✅ "Character Name + Dialogue" dominant | ❌ Narrative text dominant |
| Action Cues | ✅ Has stage directions, camera directions | ❌ No performable features |
| Literary Expression | ❌ Minimal | ✅ Rich environmental descriptions, psychology, emotions |
Classification Rules:
1. Script: Dominated by scenes, dialogue, action descriptions 2. Novel: Dominated by narration, description, psychological activity 3. Mixed Content: Determine dominant feature, output "more like script" or "more like novel"
Important: After classification, confirm text type with user or let user specify directly.
---
Core Workflow
Task 0: Parameter Confirmation
Before upload, analyze the text and confirm key parameters with the user.
Step 1: Analyze Text Content
head -c 1000 <file_path>Determine: genre, narrative style (first/third person), protagonist characteristics.
Step 2: Recommend & Confirm Parameters
Based on analysis, make recommendations and confirm with user through natural dialogue.
Recommendation Guide:
| Parameter | Based On | Examples |
|---|---|---|
| style | Genre | Modern Urban → CinematicRealism; Period Drama → RealisticGuzhuangPro; Fantasy → RealisticXianxia; Anime → Ghibli |
| voice | Protagonist | Young Female → sys_ClassicYoungWoman; Young Male → sys_GentleYoungMan; Mature Male → sys_CalmDeepMale |
| shot-split-mode | Narrative | Third person → thirdPersonNarration; First person → firstPersonNarration; Dialogue-heavy Script → dialogue |
| ratio | Platform | TikTok/Douyin → 9:16; YouTube → 16:9 |
| resolution | Quality | Default 720P; Higher quality 1K/2K/4K |
Defaults: 9:16, 720P (vertical HD for mobile)
⚠️ Constraint:dialoguemode is ONLY available forScripttype, NOT forNovel.
Example confirmation dialogue:
"Based on your modern urban romance novel, I recommend:
- Style: CinematicRealism (film-quality, great for emotional scenes)- Voice: sys_ClassicYoungWoman (matches your young female protagonist)- Shot Mode: thirdPersonNarration (for third-person narrative)- Format:9:16,720P(vertical HD for mobile platforms)
- Title: "雨夜归途"
>
Does this look good, or would you like to change anything?"
If user has no preference, use recommended defaults. For full options, see Style Mapping Table and Voice Mapping Table.
DO NOT proceed to Task 1 until user confirms.
---
Task 1: Upload Text File to OSS
Prerequisite: Task 0 (Parameter Confirmation) MUST be completed.
Use helper script to automatically get credentials and upload:
bash scripts/upload_to_oss.sh <file_path>Returns: FileURL (for subsequent job submission)
Task 2: Submit Storyboard Job
aliyun ice submit-yike-storyboard-job \
--file-url "<FileURL>" \
--source-type <SourceType> \
--style-id <StyleId> \
--narration-voice-id <VoiceId> \
--aspect-ratio "9:16" \
--resolution 720P \
--shot-split-mode <ShotSplitMode> \
--shot-prompt-mode multi \
--video-model "wan2.6-r2v-flash" \
--exec-mode StoryboardOnly \
--title "<Title>" \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardFor complete parameter reference, see references/related-commands.md.
Task 3: Query Job Status
aliyun ice get-yike-storyboard-job \
--job-id <JobId> \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardFor complete parameter and response reference, see references/related-commands.md.
Status Flow and User Prompts:
| Status | SubStatus | Current Phase | User Prompt | Action |
|---|---|---|---|---|
| Configuring | Parsing | Entity Asset Parsing | "Parsing your script, AI is extracting characters, scenes and props..." | Wait |
| Configuring | ParseSucc | Entity Asset Image Generation | "Script parsed! Now generating images for characters, scenes and props. You can preview the progress here:" | Provide Entity Management Link |
| Editing | Creating | Shot Script Generation | "Entity assets ready! Now creating shot script, almost done..." | Wait |
| Editing | CreateSucc | Complete ✅ | "Shot script complete! You can now view and edit your storyboard:" | Provide Editing Link |
| Editing | CreateFailed | Failed ❌ | "Shot script generation failed, please check error message or resubmit." | Troubleshoot |
Interactive Links:
| Status | Link | Purpose |
|---|---|---|
| ParseSucc | https://www.yikeai.com/#/storyboard/entitiesManagement?storyboardId={storyboardId} | Preview entity assets (characters, scenes, props) generation progress |
| CreateSucc | https://www.yikeai.com/#/storyboard/editing?storyboardId={storyboardId} | Edit storyboard, generate videos, export final video |
Job Status Description:
| JobStatus | Description | User Prompt |
|---|---|---|
| Running | Job in progress | "Job is processing, usually takes a few minutes, please wait..." |
| Succeeded | Job succeeded | "Job completed!" |
| Failed | Job failed | "Job failed, please check error message." |
| Suspended | Job suspended | "Job suspended, some shots failed, can be manually fixed in storyboard." |
Query Recommendation: Jobs usually take a few minutes. Recommend querying status every 30 seconds.
Task 4: Get Storyboard Link
Get storyboardId from JobResult.StoryboardInfoList and construct link:
https://www.yikeai.com/#/storyboard/editing?storyboardId={storyboardId}---
Style Mapping Table
| StyleId | Name |
|---|---|
| RealisticPhotographyPro | Realistic Photography Pro |
| RealisticGuzhuangPro | Realistic Chinese Period Pro |
| RealisticPhotography | Realistic Photography |
| RealisticGuzhuang | Realistic Chinese Period |
| RealisticXianxia | Realistic Xianxia |
| RealisticEra | Realistic Period |
| RealisticWasteland | Realistic Wasteland |
| GuofengAnime | 2D Chinese Style Anime |
| GuofengAnime3D | 3D Chinese Style Anime |
| Cartoon3D | 3D Cartoon |
| Photorealistic3D | Photorealistic 3D Render |
| SciFiRealism | Sci-Fi Realism |
| Chibi3D | 3D Chibi |
| ShojoManga | Shojo Manga |
| NewPeriodAnime | New Era Anime |
| FairyTale2D | 2D Fairy Tale |
| Wasteland2D | 2D Wasteland |
| InkWuxia | Ink Wuxia |
| ShadiaoMeme | Panda Meme Style |
| Chibi2D | 2D Chibi |
| Ghibli | Ghibli |
| SciFiComic | Cyberpunk |
| AmericanSuperhero | American Superhero |
| Hokusei | Hokusei |
| RealisticComic | Realistic Comic |
| CinematicRealism | Cinematic Realism |
| MinimalistRealism | Minimalist Realism |
| ShonenManga | Shonen Manga |
---
Narration Voice Mapping Table
| Voice ID | Description |
|---|---|
| sys_ClassicMiddleAgedWoman | Classic Female Narrator (25-45, wise) |
| sys_ClassicYoungWoman | Classic Young Female (18-25, intellectual) |
| sys_IntellectualYoungWoman | Intellectual Young Female (18-25, intellectual) |
| sys_GentleYoungMan | Gentle Young Male (18-25, gentle) |
| sys_WiseYoungMan | Wise Young Male (18-25, wise) |
| sys_ClassicYoungMan | Classic Young Male (18-25, charming) |
| sys_thoughtfulBoy | Thoughtful Boy (10-15, well-behaved) |
| sys_SereneIntellect | Serene Intellectual Male (18-25, cool and rational) |
| sys_RichBassMale | Rich Bass Male (18-25, deep voice) |
| sys_CalmDeepMale | Calm Deep Male (25-40, steady and deep) |
| sys_MajesticBaritone | Majestic Baritone (40-60, authoritative) |
| sys_GravellySoulful | Gravelly Soulful Male (40-60, weathered) |
| sys_SweetBrightGirl | Sweet Bright Girl (10-15, lively) |
| sys_GracefulPoisedWoman | Graceful Poised Woman (18-25, elegant) |
| longbaizhi | Long Baizhi (20-30, witty female narrator) |
| sys_YoungGracefulWoman | Young Graceful Woman (18-25, gentle) |
| sys_MaturePoisedWoman | Mature Poised Woman (25-40, graceful) |
| sys_MatureWiseWoman | Mature Wise Woman (25-40, elegant and wise) |
| sys_ElderlyWistfulWoman | Elderly Wistful Woman (40-60, nostalgic) |
---
Shot Split Mode
| Mode | Description | Use Case | Supported Type |
|---|---|---|---|
| dialogue | Dialogue Mode | Dialogue-heavy scripts, short dramas | Script only |
| firstPersonNarration | First Person Narration | Stories from protagonist's perspective, diary style | Novel/Script |
| firstPersonNarrationPureVO | First Person Pure VO | Inner monologue stories, prose | Novel/Script |
| thirdPersonNarration | Third Person Narration | Omniscient perspective stories, fairy tales, historical | Novel/Script |
Restriction: Whensource-typeisNovel,dialoguemode is NOT supported.
Recommendation Guide:
Choose appropriate mode based on text type and content analysis:
Script: 1. High dialogue ratio (short dramas, chat format, comedy) → Recommend dialogue 2. First person narration → Recommend firstPersonNarration 3. Pure inner monologue/narration (prose, reflections) → Recommend firstPersonNarrationPureVO 4. Third person narration → Recommend thirdPersonNarration
Novel: 1. "I" perspective + has dialogue (urban romance, mystery) → Recommend firstPersonNarration 2. Pure inner monologue/narration (prose, reflections) → Recommend firstPersonNarrationPureVO 3. Third person narration (fairy tales, mythology, history) → Recommend thirdPersonNarration
Important: Before execution, describe mode features to user and let them confirm or choose.
---
Capability Scope
This skill automates:
- Upload novel/script files to OSS
- Entity asset parsing (characters, scenes, props extraction)
- Entity asset image generation
- Shot script generation
- Job status tracking
After shot script completion, continue in UI:
Once the job reaches CreateSucc status, this skill's automation is complete. The following steps require the Yike Storyboard web interface:
1. Edit shot script - Adjust shot content, descriptions, and prompts 2. Generate shot images/videos - AI generates images/videos for each shot 3. Edit and assemble - Fine-tune timing, add transitions 4. Export final video - Render and download the complete video
Next Step: Open the storyboard editing link and continue your video creation journey!
---
Reference Links
| Reference | Description |
|---|---|
| references/cli-installation-guide.md | CLI Installation Guide |
| references/ram-policies.md | RAM Permission Policies |
| references/related-commands.md | Related CLI Commands |
| references/verification-method.md | Verification Methods |
---
Error Handling
| Error | Cause | Solution |
|---|---|---|
| MainAccountUserNotFound | Yike service not activated | Apply for access at Service Activation section |
| InvalidAccessKeyId | Invalid AK/SK | Check credential configuration |
| Forbidden | Insufficient permissions | See RAM Permissions section |
| region can't be empty | OSS upload missing region | Add --region cn-shanghai |
Note: If you receive MainAccountUserNotFound error, it means your account has not been whitelisted for the Yike service. Please visit https://www.yikeai.com and apply for access through the invitation application form.Acceptance Criteria - Yike Storyboard Skill
Scenario: Yike Storyboard Creation Purpose: Skill testing acceptance criteria
---
Correct CLI Command Patterns
1. Product — verify product name exists
✅ CORRECT
aliyun ice ...
aliyun oss ...❌ INCORRECT
aliyun ICE ... # Product name should be lowercase2. Command — verify action exists under the product
✅ CORRECT
aliyun ice create-yike-asset-upload
aliyun ice submit-yike-storyboard-job
aliyun ice get-yike-storyboard-job
aliyun oss cp❌ INCORRECT
aliyun ice CreateYikeAssetUpload # Use kebab-case, not PascalCase
aliyun ice create_yike_asset_upload # Use kebab-case, not snake_case
aliyun ice upload-novel # This command doesn't exist3. Parameters — verify each parameter name exists
✅ CORRECT
aliyun ice create-yike-asset-upload --file-ext txt --file-type StoryboardInput
aliyun ice submit-yike-storyboard-job --file-url "..." --style-id Ghibli --narration-voice-id sys_GentleYoungMan
aliyun ice get-yike-storyboard-job --job-id xxx
aliyun oss cp --mode StsToken --access-key-id xxx --access-key-secret xxx --sts-token xxx❌ INCORRECT
aliyun ice create-yike-asset-upload --fileExt txt # Use kebab-case
aliyun ice submit-yike-storyboard-job --FileURL "..." # Use kebab-case
aliyun ice get-yike-storyboard-job --JobId xxx # Use kebab-case4. User-Agent — every command must include
✅ CORRECT
aliyun ice create-yike-asset-upload --file-ext txt --user-agent AlibabaCloud-Agent-Skills❌ INCORRECT
aliyun ice create-yike-asset-upload --file-ext txt
# Missing --user-agent AlibabaCloud-Agent-Skills5. Region — use correct region
✅ CORRECT
aliyun ice create-yike-asset-upload --file-ext txt --region cn-shanghai❌ INCORRECT
aliyun ice create-yike-asset-upload --file-ext txt --region cn-hangzhou
# ICE service is only available in cn-shanghai region---
Parameter Value Validation
Source Type — must be valid
✅ CORRECT
Novel, Script❌ INCORRECT
novel, script # Case sensitive
Story, Text, Document # Invalid valuesStyle ID — must be valid
✅ CORRECT
RealisticPhotographyPro, RealisticGuzhuangPro, RealisticPhotography,
RealisticGuzhuang, RealisticXianxia, RealisticEra, RealisticWasteland,
GuofengAnime, GuofengAnime3D, Cartoon3D, Photorealistic3D, SciFiRealism,
Chibi3D, ShojoManga, NewPeriodAnime, FairyTale2D, Wasteland2D, InkWuxia,
ShadiaoMeme, Chibi2D, Ghibli, SciFiComic, AmericanSuperhero, Hokusei,
RealisticComic, CinematicRealism, MinimalistRealism, ShonenMangaVoice ID — must be valid
✅ CORRECT
sys_ClassicMiddleAgedWoman, sys_ClassicYoungWoman, sys_IntellectualYoungWoman,
sys_GentleYoungMan, sys_WiseYoungMan, sys_ClassicYoungMan, sys_thoughtfulBoy,
sys_SereneIntellect, sys_RichBassMale, sys_CalmDeepMale, sys_MajesticBaritone,
sys_GravellySoulful, sys_SweetBrightGirl, sys_GracefulPoisedWoman, longbaizhi,
sys_YoungGracefulWoman, sys_MaturePoisedWoman, sys_MatureWiseWoman, sys_ElderlyWistfulWomanAspect Ratio — must be valid
✅ CORRECT
16:9, 9:16, 4:3, 3:4Resolution — must be valid
✅ CORRECT
720P, 1K, 2K, 4KShot Split Mode — must be valid
✅ CORRECT
dialogue, firstPersonNarration, firstPersonNarrationPureVO, thirdPersonNarrationShot Split Mode Constraints
✅ CORRECT
# Script can use dialogue mode
--source-type Script --shot-split-mode dialogue
# Novel can use narration modes
--source-type Novel --shot-split-mode firstPersonNarration
--source-type Novel --shot-split-mode thirdPersonNarration❌ INCORRECT
# Novel CANNOT use dialogue mode
--source-type Novel --shot-split-mode dialogue # INVALID!---
Upload Script Validation
upload_to_oss.sh — correct usage
✅ CORRECT
bash scripts/upload_to_oss.sh novel.txt
bash scripts/upload_to_oss.sh /path/to/script.txt❌ INCORRECT
bash scripts/upload_to_oss.sh # Missing file argument
bash scripts/upload_to_oss.sh nonexistent.txt # File must exist---
Job Status Validation
Status Flow — expected sequence
✅ CORRECT STATUS FLOW
Configuring/Parsing → Configuring/ParseSucc → Editing/Creating → Editing/CreateSuccJob Completion — success criteria
✅ CORRECT
{
"JobStatus": "Succeeded",
"JobResult": {
"StoryboardInfoList": "[{\"storyboardId\":\"st_xxx\",\"status\":\"Produced\",\"subStatus\":\"ProduceSucc\"}]"
}
}Aliyun CLI Installation & Configuration Guide
Complete guide for installing and configuring Aliyun CLI.
Aliyun CLI 3.3.3+: Supports installing and using all published Alibaba Cloud product plugins. Make sure to upgrade to 3.3.3 or later for full plugin ecosystem coverage.
Installation
macOS
Using Homebrew (Recommended)
brew install aliyun-cli
# Upgrade to latest
brew upgrade aliyun-cli
# Verify version (>= 3.3.3)
aliyun versionUsing Binary
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-macosx-latest-amd64.tgz
# Extract
tar -xzf aliyun-cli-macosx-latest-amd64.tgz
# Move to PATH
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionLinux
Debian/Ubuntu
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionCentOS/RHEL
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionARM64 Architecture
# Download ARM64 version
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-arm64.tgz
sudo mv aliyun /usr/local/bin/Windows
Using Binary 1. Download from: https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip 2. Extract the ZIP file 3. Add the directory to your PATH environment variable 4. Open new Command Prompt or PowerShell 5. Verify: aliyun version
Using PowerShell
# Download
Invoke-WebRequest -Uri "https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip" -OutFile "aliyun-cli.zip"
# Extract
Expand-Archive -Path aliyun-cli.zip -DestinationPath C:\aliyun-cli
# Add to PATH (requires admin privileges)
$env:Path += ";C:\aliyun-cli"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)
# Verify
aliyun versionConfiguration
Quick Start
aliyun configure set \
--mode AK \
--access-key-id <your-access-key-id> \
--access-key-secret <your-access-key-secret> \
--region cn-hangzhouAll aliyun configure commands support non-interactive flags, which is the recommended approach — it works in scripts, CI/CD pipelines, and agent-driven automation without hanging on stdin prompts.
Where to Get Access Keys
1. Log in to Aliyun Console: https://ram.console.aliyun.com/ 2. Navigate to: AccessKey Management 3. Create a new AccessKey pair 4. Save the secret immediately — it's only shown once
Configuration Modes
Aliyun CLI supports 6 authentication modes. All examples below use non-interactive flags.
1. AK Mode (Access Key)
Most common mode for personal accounts and scripts.
aliyun configure set \
--mode AK \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--region cn-hangzhouConfiguration is stored in ~/.aliyun/config.json:
{
"current": "default",
"profiles": [
{
"name": "default",
"mode": "AK",
"access_key_id": "LTAI5tXXXXXXXX",
"access_key_secret": "8dXXXXXXXXXXXXXXXXXXXXXXXX",
"region_id": "cn-hangzhou",
"output_format": "json",
"language": "en"
}
]
}2. StsToken Mode (Temporary Credentials)
For short-lived access (tokens expire in 1-12 hours).
aliyun configure set \
--mode StsToken \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--sts-token v1.0:XXXXXXXXXXXXXXXX \
--region cn-hangzhouUse cases: CI/CD pipelines, temporary access for external contractors, cross-account access.
3. RamRoleArn Mode (Assume RAM Role)
Assume a RAM role for elevated or cross-account access.
aliyun configure set \
--mode RamRoleArn \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--ram-role-arn acs:ram::123456789012:role/AdminRole \
--role-session-name my-session \
--region cn-hangzhouUse cases: cross-account resource access, temporary elevated privileges, role-based access control.
4. EcsRamRole Mode (ECS Instance RAM Role)
Use the RAM role attached to an ECS instance — no credentials needed.
aliyun configure set \
--mode EcsRamRole \
--ram-role-name MyEcsRole \
--region cn-hangzhouRequirements: must be running on an ECS instance with a RAM role attached.
Use cases: scripts and automation running on ECS instances.
5. RsaKeyPair Mode (RSA Key Pair)
Use RSA key pair for authentication (generate key pair in Aliyun Console first).
aliyun configure set \
--mode RsaKeyPair \
--private-key /path/to/private-key.pem \
--key-pair-name my-key-pair \
--region cn-hangzhou6. RamRoleArnWithEcs Mode (ECS + RAM Role)
Combine ECS instance role with RAM role assumption for cross-account access from ECS.
aliyun configure set \
--mode RamRoleArnWithEcs \
--ram-role-name MyEcsRole \
--ram-role-arn acs:ram::123456789012:role/TargetRole \
--role-session-name my-session \
--region cn-hangzhouEnvironment Variables
Highest priority - overrides config file
Access Key Mode
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
export ALIBABA_CLOUD_REGION_ID=cn-hangzhouSTS Token Mode
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
export ALIBABA_CLOUD_SECURITY_TOKEN=your_sts_token
export ALIBABA_CLOUD_REGION_ID=cn-hangzhouECS RAM Role Mode
export ALIBABA_CLOUD_ECS_METADATA=role_nameUse Case:
- CI/CD pipelines
- Docker containers
- Temporary credential override
Managing Multiple Profiles
Create Named Profiles
aliyun configure set --profile projectA \
--mode AK \
--access-key-id LTAI5tAAAAAAAA \
--access-key-secret 8dAAAAAAAAAAAAAAAAAAAAAAAA \
--region cn-hangzhou
aliyun configure set --profile projectB \
--mode AK \
--access-key-id LTAI5tBBBBBBBB \
--access-key-secret 8dBBBBBBBBBBBBBBBBBBBBBBBB \
--region cn-shanghaiUse Specific Profile
aliyun ecs describe-instances --profile projectA
export ALIBABA_CLOUD_PROFILE=projectA
aliyun ecs describe-instances # Uses projectAList and Switch Profiles
aliyun configure list # List all profiles
aliyun configure set --current projectA # Switch default profileCredential Priority
Credentials are loaded in this order (first found wins):
1. Command-line flag: --profile <name> 2. Environment variable: ALIBABA_CLOUD_PROFILE 3. Environment credentials: ALIBABA_CLOUD_ACCESS_KEY_ID, etc. 4. Configuration file: ~/.aliyun/config.json (current profile) 5. ECS Instance RAM Role: If running on ECS with attached role
Verification
Test Authentication
# Basic test - list regions
aliyun ecs describe-regions
# Expected output: JSON array of regionsIf successful, you'll see:
{
"Regions": {
"Region": [
{
"RegionId": "cn-hangzhou",
"RegionEndpoint": "ecs.cn-hangzhou.aliyuncs.com",
"LocalName": "华东 1(杭州)"
},
...
]
},
"RequestId": "..."
}If failed, you'll see error messages:
InvalidAccessKeyId.NotFound- Wrong Access Key IDSignatureDoesNotMatch- Wrong Access Key SecretInvalidSecurityToken.Expired- STS token expired (for StsToken mode)Forbidden.RAM- Insufficient permissions
Debug Configuration
# Show current configuration
aliyun configure get
# Test with debug logging
aliyun ecs describe-regions --log-level=debug
# Check credential provider
aliyun configure get modeSecurity Best Practices
1. Use RAM Users (Not Root Account)
❌ Don't: Use Aliyun root account credentials ✅ Do: Create RAM users with specific permissions
# Create RAM user in console
# Attach only necessary policies
# Use RAM user's access keys2. Principle of Least Privilege
Grant only the minimum permissions needed:
# Example: Read-only ECS access
# Attach policy: AliyunECSReadOnlyAccess3. Rotate Access Keys Regularly
# Create new access key in RAM Console, then update configuration
aliyun configure set --access-key-id NEW_KEY --access-key-secret NEW_SECRET
# Delete old access key from console4. Use STS Tokens for Temporary Access
aliyun configure set --mode StsToken \
--access-key-id XXXX --access-key-secret XXXX \
--sts-token XXXX --region cn-hangzhou5. Use ECS RAM Roles When Possible
aliyun configure set --mode EcsRamRole --ram-role-name MyRole --region cn-hangzhou6. Never Commit Credentials
# Add to .gitignore
echo "~/.aliyun/config.json" >> .gitignore
# Use environment variables in CI/CD instead7. Secure Config File
# Restrict permissions
chmod 600 ~/.aliyun/config.jsonTroubleshooting
Issue: Command Not Found
# Check installation
which aliyun
# Check PATH
echo $PATH
# Reinstall or add to PATHIssue: Authentication Failed
# Verify configuration
aliyun configure get
# Test with debug
aliyun ecs describe-regions --log-level=debug
# Check credentials in console
# Verify access key is activeIssue: Permission Denied
# Error: Forbidden.RAM
# Check RAM user permissions
# Attach necessary policies in RAM console
# Example: AliyunECSFullAccess for ECS operationsIssue: STS Token Expired
# Error: InvalidSecurityToken.Expired
# Reconfigure with new token
aliyun configure set --mode StsToken \
--access-key-id XXXX --access-key-secret XXXX \
--sts-token NEW_TOKEN --region cn-hangzhouIssue: Wrong Region
# Some resources may not exist in the specified region
# Check available regions
aliyun ecs describe-regions
# Update default region
aliyun configure set region cn-shanghaiAdvanced Configuration
Custom Endpoint
# Use custom or private endpoint
export ALIBABA_CLOUD_ECS_ENDPOINT=ecs-vpc.cn-hangzhou.aliyuncs.comProxy Settings
# HTTP proxy
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
# No proxy for specific domains
export NO_PROXY=localhost,127.0.0.1,.aliyuncs.comTimeout Settings
# Connection timeout (default: 10s)
export ALIBABA_CLOUD_CONNECT_TIMEOUT=30
# Read timeout (default: 10s)
export ALIBABA_CLOUD_READ_TIMEOUT=30Next Steps
After installation and configuration:
1. Install plugins for services you need (v3.3.3+ supports all published product plugins):
aliyun plugin install --names ecs vpc rds
# List all available plugins
aliyun plugin list-remote2. Explore commands:
aliyun ecs --help
aliyun fc --help3. Read documentation:
- Command Syntax Guide
- Global Flags Reference
- Common Scenarios
References
- Official Documentation: https://help.aliyun.com/zh/cli/
- RAM Console: https://ram.console.aliyun.com/
- Access Key Management: https://ram.console.aliyun.com/manage/ak
- Plugin Repository: https://github.com/aliyun/aliyun-cli
RAM Policies - Yike Storyboard Skill
This document lists the RAM permissions required for the Yike Storyboard skill.
Required Permissions
ICE (Intelligent Cloud Editing) Permissions
| Permission | Action | Description |
|---|---|---|
| Get Upload Credentials | ice:CreateYikeAssetUpload | Get Yike asset upload STS credentials |
| Submit Storyboard Job | ice:SubmitYikeStoryboardJob | Submit Yike storyboard generation job |
| Query Job Status | ice:GetYikeStoryboardJob | Query Yike storyboard job status |
OSS Permissions
OSS upload uses STS temporary credentials returned by CreateYikeAssetUpload. These credentials already include necessary OSS write permissions - no additional configuration required.
Minimum Permission Policy
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ice:CreateYikeAssetUpload",
"ice:SubmitYikeStoryboardJob",
"ice:GetYikeStoryboardJob"
],
"Resource": "*"
}
]
}Permission Configuration Methods
Method 1: Use System Policy
Attach the AliyunICEFullAccess system policy to your RAM user/role.
Method 2: Use Custom Policy
1. Log in to RAM Console 2. Create a custom policy and paste the minimum permission policy above 3. Attach the policy to the corresponding RAM user/role
Permission Troubleshooting
If you encounter permission-related errors:
1. Verify the current account/role has the permissions listed above 2. Use aliyun sts get-caller-identity to confirm current identity 3. Check for RAM policy conflicts (Deny policies take precedence) 4. Ensure the ICE service is activated in your account
Related Commands - Yike Storyboard Skill
This document lists all CLI commands used in the Yike Storyboard skill.
Core Commands
| Product | CLI Command | Description |
|---|---|---|
| ICE | aliyun ice create-yike-asset-upload | Get Yike asset upload credentials |
| ICE | aliyun ice submit-yike-storyboard-job | Submit Yike storyboard job |
| ICE | aliyun ice get-yike-storyboard-job | Query Yike storyboard job status |
| OSS | aliyun ossutil cp | Upload file to OSS |
Command Details
1. Get Upload Credentials
aliyun ice create-yike-asset-upload \
--file-ext txt \
--file-type StoryboardInput \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardParameters:
--file-ext: (Required) File extension, e.g.,txt,docx--file-type: File type, useStoryboardInputfor storyboard input--region: Region, defaultcn-shanghai
Response Fields:
UploadAddress: Base64 encoded OSS upload address infoUploadAuth: Base64 encoded STS temporary credentialsFileURL: File URL after upload
2. Upload File to OSS
# Upload using STS temporary credentials
aliyun ossutil cp /path/to/novel.txt oss://bucket-name/object-key \
--mode StsToken \
--access-key-id <AccessKeyId> \
--access-key-secret <AccessKeySecret> \
--sts-token <SecurityToken> \
--endpoint <Endpoint>Parameters:
--mode StsToken: Use STS temporary credential authentication--access-key-id: STS temporary AccessKeyId--access-key-secret: STS temporary AccessKeySecret--sts-token: STS SecurityToken--endpoint: OSS Endpoint
3. Submit Storyboard Job
aliyun ice submit-yike-storyboard-job \
--file-url "<FileURL>" \
--source-type Script \
--style-id CinematicRealism \
--narration-voice-id sys_GentleYoungMan \
--aspect-ratio "9:16" \
--resolution 720P \
--shot-split-mode dialogue \
--shot-prompt-mode multi \
--video-model "wan2.6-r2v-flash" \
--exec-mode StoryboardOnly \
--title "My Story" \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardParameters:
| Parameter | Required | Description | Example |
|---|---|---|---|
--file-url | ✅ | Uploaded file URL | From upload step |
--source-type | ✅ | Source type | Novel or Script |
--style-id | ✅ | Storyboard style ID | Ghibli, CinematicRealism |
--narration-voice-id | ✅ | Narration voice ID | sys_GentleYoungMan |
--aspect-ratio | Video aspect ratio | 9:16, 16:9 | |
--resolution | Resolution | 720P, 1K, 2K, 4K | |
--shot-split-mode | ✅ | Shot split mode | dialogue, thirdPersonNarration |
--shot-prompt-mode | Shot generation mode | multi | |
--video-model | Video model | wan2.6-r2v-flash | |
--exec-mode | Execution mode | StoryboardOnly | |
--title | Storyboard title | Any string |
Response Fields:
JobId: Job ID for status tracking
4. Query Job Status
aliyun ice get-yike-storyboard-job \
--job-id <JobId> \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardParameters:
--job-id: (Required) Job ID
Response Fields:
JobStatus: Job status (Running/Succeeded/Failed/Suspended)JobResult: Job result JSON containingStoryboardInfoList
Auxiliary Commands
| Product | CLI Command | Description |
|---|---|---|
| STS | aliyun sts get-caller-identity | Verify current identity |
| ICE | aliyun ice list-yike-productions | List Yike productions |
| ICE | aliyun ice batch-get-yike-ai-app-job | Batch get jobs |
Important Notes
1. All aliyun CLI commands MUST include --user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboard 2. ICE service is currently only available in cn-shanghai region 3. OSS upload uses STS temporary credentials with limited validity period 4. The --title parameter is optional but recommended for identification
Verification Method - Yike Storyboard Skill
This document describes how to verify successful execution of the Yike Storyboard skill.
Verification Flow
1. Credential Verification
Command:
aliyun configure listSuccess Criteria:
- Output shows valid profile configuration
- Contains AccessKeyId or STS credential information
2. Upload Credential Verification
Command:
aliyun ice create-yike-asset-upload \
--file-ext txt \
--file-type StoryboardInput \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardSuccess Criteria:
- HTTP status code 200
- Response contains
UploadAddress,UploadAuth,FileURLfields - No
Codeorcodeerror fields
Expected Response Format:
{
"UploadAddress": "base64...",
"UploadAuth": "base64...",
"FileURL": "https://...",
"RequestId": "xxx"
}3. File Upload Verification
Steps: 1. Decode UploadAuth to get STS credentials 2. Decode UploadAddress to get OSS info 3. Upload file using aliyun oss cp
Success Criteria:
- Upload command returns success
- No error messages in output
- Output shows "Succeed: Total num: 1"
4. Job Submission Verification
Command:
aliyun ice submit-yike-storyboard-job \
--file-url "<FileURL>" \
--source-type Script \
--style-id CinematicRealism \
--narration-voice-id sys_GentleYoungMan \
--shot-split-mode dialogue \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardSuccess Criteria:
- HTTP status code 200
- Response contains
JobIdfield - No
Codeorcodeerror fields
Expected Response Format:
{
"JobId": "xxx",
"RequestId": "xxx"
}5. Job Status Verification
Command:
aliyun ice get-yike-storyboard-job \
--job-id <JobId> \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboardSuccess Criteria:
- HTTP status code 200
JobStatusisRunning,Succeeded,Failed, orSuspended
Status Flow Verification:
See SKILL.md Task 3 for complete status flow and user prompts.
6. Final Verification
Storyboard Link Verification: 1. Parse StoryboardInfoList from JobResult 2. Extract storyboardId 3. Construct link: https://www.yikeai.com/#/storyboard/editing?storyboardId={storyboardId} 4. Open link in browser to confirm storyboard content displays correctly
Common Error Troubleshooting
| Error Type | Possible Cause | Solution |
|---|---|---|
MainAccountUserNotFound | Yike service not activated | Apply for whitelist access at https://www.yikeai.com |
InvalidAccessKeyId | Invalid AK/SK | Check credentials via aliyun configure |
Forbidden | Insufficient permissions | Check RAM policies |
InvalidFileType | Unsupported file format | Use txt or docx |
FileSizeExceed | File too large | Compress or split file (limit 5MB) |
InvalidStyleId | Style ID not found | Refer to style mapping table |
InvalidVoiceId | Voice ID not found | Refer to voice mapping table |
ParseFailed | Script parsing failed | Check text format and content |
region can't be empty | Missing region parameter | Add --region cn-shanghai |
#!/bin/bash
# upload_to_oss.sh - Upload text file to OSS (auto-fetch credentials)
# Usage: ./upload_to_oss.sh <local_file>
# Returns: FileURL (for subsequent job submission)
set -e
# Constants
MAX_FILE_SIZE=5242880 # 5MB in bytes
CLI_TIMEOUT=60 # CLI command timeout in seconds
UPLOAD_TIMEOUT=120 # OSS upload timeout in seconds
ALLOWED_EXTENSIONS="txt docx"
# Run command with timeout (cross-platform: timeout > gtimeout > no timeout)
# Usage: run_with_timeout <timeout_seconds> <command...>
run_with_timeout() {
local timeout_sec="$1"
shift
if command -v timeout &> /dev/null; then
timeout "${timeout_sec}s" "$@"
elif command -v gtimeout &> /dev/null; then
gtimeout "${timeout_sec}s" "$@"
else
"$@"
fi
}
# JSON value extraction function (no external dependencies required)
# Tries: jq > python3 > grep/sed fallback
json_get() {
local json="$1"
local key="$2"
# Try jq first (fastest)
if command -v jq &> /dev/null; then
echo "$json" | jq -r ".$key // empty"
return
fi
# Try python3
if command -v python3 &> /dev/null; then
echo "$json" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('$key',''))"
return
fi
# Fallback: grep/sed (works on all systems)
echo "$json" | grep -o "\"$key\"[[:space:]]*:[[:space:]]*\"[^\"]*\"" | sed "s/\"$key\"[[:space:]]*:[[:space:]]*\"\([^\"]*\)\"/\1/" | head -1
}
if [ $# -lt 1 ]; then
echo "Usage: $0 <local_file>"
exit 1
fi
LOCAL_FILE="$1"
# Security: Validate file path (prevent path traversal)
if [[ "$LOCAL_FILE" == *".."* ]]; then
echo "Error: Invalid file path (path traversal not allowed)"
exit 1
fi
# Resolve to absolute path and verify it's under allowed directories
REAL_PATH=$(realpath "$LOCAL_FILE" 2>/dev/null || echo "")
if [ -z "$REAL_PATH" ]; then
echo "Error: Cannot resolve file path: $LOCAL_FILE"
exit 1
fi
# Check if file exists
if [ ! -f "$REAL_PATH" ]; then
echo "Error: File not found: $LOCAL_FILE"
exit 1
fi
# Get file extension and validate
FILE_EXT="${LOCAL_FILE##*.}"
FILE_EXT_LOWER=$(echo "$FILE_EXT" | tr '[:upper:]' '[:lower:]')
if [[ ! " $ALLOWED_EXTENSIONS " =~ " $FILE_EXT_LOWER " ]]; then
echo "Error: Invalid file type '$FILE_EXT'. Allowed types: $ALLOWED_EXTENSIONS"
exit 1
fi
# Validate file size (max 5MB)
FILE_SIZE=$(stat -f%z "$REAL_PATH" 2>/dev/null || stat -c%s "$REAL_PATH" 2>/dev/null || echo "0")
if [ "$FILE_SIZE" -gt "$MAX_FILE_SIZE" ]; then
echo "Error: File size (${FILE_SIZE} bytes) exceeds maximum allowed (${MAX_FILE_SIZE} bytes / 5MB)"
exit 1
fi
echo "[1/2] Getting upload credentials..."
# Get upload credentials (with timeout)
UPLOAD_RESP=$(run_with_timeout $CLI_TIMEOUT aliyun ice create-yike-asset-upload \
--file-ext "$FILE_EXT" \
--file-type StoryboardInput \
--region cn-shanghai \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-yike-storyboard 2>&1) || {
if [ $? -eq 124 ]; then
echo "Error: CLI command timed out after ${CLI_TIMEOUT}s"
exit 1
fi
}
FILE_URL=$(json_get "$UPLOAD_RESP" "FileURL")
UPLOAD_AUTH=$(json_get "$UPLOAD_RESP" "UploadAuth")
UPLOAD_ADDRESS=$(json_get "$UPLOAD_RESP" "UploadAddress")
if [ -z "$FILE_URL" ]; then
echo "Error: Failed to get upload credentials"
echo "$UPLOAD_RESP"
exit 1
fi
# Decode Base64
AUTH_JSON=$(echo "$UPLOAD_AUTH" | base64 -d)
ADDR_JSON=$(echo "$UPLOAD_ADDRESS" | base64 -d)
# Extract STS credentials
ACCESS_KEY_ID=$(json_get "$AUTH_JSON" "AccessKeyId")
ACCESS_KEY_SECRET=$(json_get "$AUTH_JSON" "AccessKeySecret")
SECURITY_TOKEN=$(json_get "$AUTH_JSON" "SecurityToken")
REGION=$(json_get "$AUTH_JSON" "Region")
# Extract OSS info
ENDPOINT=$(json_get "$ADDR_JSON" "Endpoint")
BUCKET=$(json_get "$ADDR_JSON" "Bucket")
FILE_NAME=$(json_get "$ADDR_JSON" "FileName")
echo "[2/2] Uploading file to OSS..."
echo " Bucket: $BUCKET"
echo " Object: $FILE_NAME"
# Execute upload (with timeout)
run_with_timeout $UPLOAD_TIMEOUT aliyun ossutil cp "$REAL_PATH" "oss://${BUCKET}/${FILE_NAME}" \
--mode StsToken \
--access-key-id "$ACCESS_KEY_ID" \
--access-key-secret "$ACCESS_KEY_SECRET" \
--sts-token "$SECURITY_TOKEN" \
--endpoint "$ENDPOINT" 2>&1 || {
if [ $? -eq 124 ]; then
echo "Error: OSS upload timed out after ${UPLOAD_TIMEOUT}s"
exit 1
fi
exit 1
}
echo ""
echo "Upload successful!"
echo "FileURL: $FILE_URL"