
Alicloud Media Vod
- 164 installs
- 396 repo stars
- Updated July 18, 2026
- cinience/alicloud-skills
Integrate Alibaba Cloud Video on Demand for upload, storage, transcode, CDN playback, and asset management in on-demand video products and CMS backends.
About
Skill from cinience/alicloud-skills for Alibaba Cloud Video on Demand (VOD): upload, transcode, CDN playback, authentication, and asset lifecycle management for on-demand video applications and content platforms.
- Upload and media asset registration
- Transcode and template configuration
- CDN playback and auth URLs
- Media metadata and lifecycle APIs
- On-demand video pipeline setup
Alicloud Media Vod by the numbers
- 164 all-time installs (skills.sh)
- Ranked #484 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-media-vodAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 164 |
|---|---|
| repo stars | ★ 396 |
| Last updated | July 18, 2026 |
| Repository | cinience/alicloud-skills ↗ |
What it does
Integrate Alibaba Cloud Video on Demand for upload, storage, transcode, CDN playback, and asset management in on-demand video products and CMS backends.
Files
Category: service
ApsaraVideo VOD
Validation
mkdir -p output/alicloud-media-vod
python -m py_compile skills/media/vod/alicloud-media-vod/scripts/list_openapi_meta_apis.py
echo "py_compile_ok" > output/alicloud-media-vod/validate.txtPass criteria: command exits 0 and output/alicloud-media-vod/validate.txt is generated.
Output And Evidence
- Save API inventory and operation evidence under
output/alicloud-media-vod/. - Keep region, media IDs, template IDs, and request parameters in evidence files.
Use Alibaba Cloud OpenAPI (RPC) with official SDKs or OpenAPI Explorer to manage VOD resources. Prefer metadata-first API discovery before mutate operations.
Prerequisites
- Prepare least-privilege RAM AccessKey/STS credentials.
- Confirm target region and media scope before changes.
- Use read-only
Describe*/List*APIs first.
Workflow
1) Confirm target media IDs, storage scope, and desired operation. 2) Discover API names and required parameters via metadata and API Explorer. 3) Execute read-only validation calls. 4) Execute upload/process/playback/configuration operations. 5) Save outputs and evidence under output/alicloud-media-vod/.
AccessKey Priority
1) Environment variables: ALICLOUD_ACCESS_KEY_ID / ALICLOUD_ACCESS_KEY_SECRET / ALICLOUD_REGION_ID. 2) Shared config file: ~/.alibabacloud/credentials.
If region is ambiguous, ask before write operations.
API Discovery
- Product code:
vod - Default API version:
2017-03-21 - Metadata source:
https://api.aliyun.com/meta/v1/products/vod/versions/2017-03-21/api-docs.json
Minimal Executable Quickstart
python skills/media/vod/alicloud-media-vod/scripts/list_openapi_meta_apis.pyOptional overrides:
python skills/media/vod/alicloud-media-vod/scripts/list_openapi_meta_apis.py \
--product-code vod \
--version 2017-03-21 \
--output-dir output/alicloud-media-vodCommon Operation Mapping
- Upload and assets:
CreateUploadVideo,CreateUploadImage,GetPlayInfo,SearchMedia - Media management:
GetVideoInfo,UpdateVideoInfo,DeleteVideo - Transcode/templates:
AddTranscodeTemplateGroup,UpdateTranscodeTemplateGroup,SubmitTranscodeJobs - Snapshot/AI jobs:
SubmitSnapshotJob,SubmitAIJob,GetJobDetail - Security/play auth:
GetVideoPlayAuth,SetMessageCallback,SetDefaultWatermark
Output Policy
Write all generated files and execution evidence under: output/alicloud-media-vod/
References
- Source list:
references/sources.md - Task templates:
references/templates.md
interface:
display_name: "Alibaba Cloud Media VOD"
short_description: "Manage ApsaraVideo VOD APIs and media workflows"
default_prompt: "Use $alicloud-media-vod to complete this Alibaba Cloud VOD media task."
Sources
- OpenAPI product page:
https://api.aliyun.com/product/vod - API list (metadata):
https://api.aliyun.com/meta/v1/products/vod/versions/2017-03-21/api-docs.json - API definition (single API):
https://api.aliyun.com/meta/v1/products/vod/versions/2017-03-21/apis/{ApiName}/api.json - Product documentation (ApsaraVideo VOD):
https://www.alibabacloud.com/help/en/vod
VOD Task Templates
Use these templates after confirming region/media scope and auth method.
1) Create upload credential for video
- API:
CreateUploadVideo - Required params template:
Title:<video-title>FileName:<video.mp4>TemplateGroupId:<optional-template-group-id>StorageLocation:<optional-storage-location>
2) Query media details
- API:
GetVideoInfo - Required params template:
VideoId:<video-id>
3) Get playback authorization
- API:
GetVideoPlayAuth - Required params template:
VideoId:<video-id>AuthInfoTimeout:<3600>
4) Submit transcode jobs
- API:
SubmitTranscodeJobs - Required params template:
VideoId:<video-id>TemplateGroupId:<template-group-id>Priority:<1-10>
5) Delete media assets
- API:
DeleteVideo - Required params template:
VideoIds:<video-id-1,video-id-2>
Evidence Checklist
- Save request payloads and API responses under
output/alicloud-media-vod/. - Keep a mapping of input file names to returned media IDs.
#!/usr/bin/env python3
"""Fetch OpenAPI metadata API list for Alibaba Cloud VOD and save to output/."""
from __future__ import annotations
import argparse
import json
import os
import pathlib
import urllib.request
DEFAULT_PRODUCT_CODE = "vod"
DEFAULT_VERSION = "2017-03-21"
OUTPUT_DIR = pathlib.Path("output/alicloud-media-vod")
def fetch_json(url: str, timeout: int) -> dict:
req = urllib.request.Request(url, headers={"User-Agent": "codex-skill"})
with urllib.request.urlopen(req, timeout=timeout) as resp:
return json.loads(resp.read().decode("utf-8"))
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--product-code", default=DEFAULT_PRODUCT_CODE)
parser.add_argument("--version", default=DEFAULT_VERSION)
parser.add_argument("--output-dir", default=str(OUTPUT_DIR))
args = parser.parse_args()
timeout = int(os.getenv("OPENAPI_META_TIMEOUT", "20"))
output_dir = pathlib.Path(args.output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
url = (
f"https://api.aliyun.com/meta/v1/products/{args.product_code}"
f"/versions/{args.version}/api-docs.json"
)
payload = fetch_json(url, timeout)
raw_apis = payload.get("apis", {})
if isinstance(raw_apis, dict):
api_names = sorted(raw_apis.keys())
elif isinstance(raw_apis, list):
names = []
for item in raw_apis:
if isinstance(item, dict):
name = item.get("name") or item.get("apiName")
if name:
names.append(name)
elif isinstance(item, str):
names.append(item)
api_names = sorted(set(names))
else:
api_names = []
json_file = output_dir / f"{args.product_code}_{args.version}_api_docs.json"
md_file = output_dir / f"{args.product_code}_{args.version}_api_list.md"
json_file.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
md_lines = [
f"# {args.product_code} {args.version} API List",
"",
f"- Source: {url}",
f"- API count: {len(api_names)}",
"",
]
md_lines.extend([f"- `{name}`" for name in api_names])
md_file.write_text("\n".join(md_lines) + "\n", encoding="utf-8")
print(f"Saved: {json_file}")
print(f"Saved: {md_file}")
if __name__ == "__main__":
main()