
Alicloud Media Live
- 166 installs
- 396 repo stars
- Updated July 18, 2026
- cinience/alicloud-skills
Integrate Alibaba Cloud ApsaraVideo Live for ingest, transcoding, playback, and stream lifecycle management in live streaming products or media backends.
About
Skill from cinience/alicloud-skills for Alibaba Cloud ApsaraVideo Live: configuring live channels, ingest, transcoding, playback URLs, and stream lifecycle so applications can deliver real-time video at scale.
- Live channel and stream setup
- Ingest and playback configuration
- Transcoding and stream lifecycle
- Alibaba Cloud auth and endpoints
- Production live streaming workflows
Alicloud Media Live by the numbers
- 166 all-time installs (skills.sh)
- Ranked #483 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-liveAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 166 |
|---|---|
| repo stars | ★ 396 |
| Last updated | July 18, 2026 |
| Repository | cinience/alicloud-skills ↗ |
What it does
Integrate Alibaba Cloud ApsaraVideo Live for ingest, transcoding, playback, and stream lifecycle management in live streaming products or media backends.
Files
Category: service
ApsaraVideo Live
Validation
mkdir -p output/alicloud-media-live
python -m py_compile skills/media/live/alicloud-media-live/scripts/list_openapi_meta_apis.py
echo "py_compile_ok" > output/alicloud-media-live/validate.txtPass criteria: command exits 0 and output/alicloud-media-live/validate.txt is generated.
Output And Evidence
- Save API inventory and operation evidence under
output/alicloud-media-live/. - Keep region, domain, app/stream, and request parameters in evidence files.
Use Alibaba Cloud OpenAPI (RPC) with official SDKs or OpenAPI Explorer to manage Live resources. Prefer metadata-first API discovery before mutate operations.
Prerequisites
- Prepare least-privilege RAM AccessKey/STS credentials.
- Confirm target region and live domain scope before changes.
- Query current state with read-only APIs (
Describe*/List*) beforeAdd*/Set*/Delete*.
Workflow
1) Confirm target live domain, app name/stream name, and desired operation. 2) Discover API names and required parameters via metadata and API Explorer. 3) Execute read-only validation calls. 4) Apply change operations with rollback plan. 5) Save results and context under output/alicloud-media-live/.
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:
live - Default API version:
2016-11-01 - Metadata source:
https://api.aliyun.com/meta/v1/products/live/versions/2016-11-01/api-docs.json
Minimal Executable Quickstart
python skills/media/live/alicloud-media-live/scripts/list_openapi_meta_apis.pyOptional overrides:
python skills/media/live/alicloud-media-live/scripts/list_openapi_meta_apis.py \
--product-code live \
--version 2016-11-01 \
--output-dir output/alicloud-media-liveCommon Operation Mapping
- Domain management:
AddLiveDomain,DeleteLiveDomain,DescribeLiveDomains - Stream ingest/play auth:
AddLiveDomainMapping,SetLiveDomainStagingConfig - Record/transcode/template:
AddLiveRecordTemplate,AddLiveTranscodeTemplate,DescribeLiveRecordConfig - Monitor and metrics:
DescribeLiveStreamOnlineList,DescribeLiveDomainBpsData,DescribeLiveDomainTrafficData - Stream control:
ForbidLiveStream,ResumeLiveStream,AddLiveAppRecordConfig
Output Policy
Write all generated files and execution evidence under: output/alicloud-media-live/
References
- Source list:
references/sources.md - Task templates:
references/templates.md
interface:
display_name: "Alibaba Cloud Media Live"
short_description: "Manage ApsaraVideo Live APIs and workflows"
default_prompt: "Use $alicloud-media-live to complete this Alibaba Cloud live media task."
Sources
- OpenAPI product page:
https://api.aliyun.com/product/live - API list (metadata):
https://api.aliyun.com/meta/v1/products/live/versions/2016-11-01/api-docs.json - API definition (single API):
https://api.aliyun.com/meta/v1/products/live/versions/2016-11-01/apis/{ApiName}/api.json - Product documentation (ApsaraVideo Live):
https://www.alibabacloud.com/help/en/live
Live Task Templates
Use these templates after confirming region/domain/app/stream.
1) Add a live domain
- API:
AddLiveDomain - Required params template:
DomainName:<example.yourdomain.com>DomainType:liveVideoRegion:<cn-hangzhou>
2) Configure recording for an app
- API:
AddLiveAppRecordConfig - Required params template:
DomainName:<live-domain>AppName:<app-name>OssEndpoint:<oss-cn-hangzhou.aliyuncs.com>OssBucket:<bucket-name>OssObjectPrefix:<recordings/{AppName}/{StreamName}>OnDemond:<0|1>
3) Query online streams
- API:
DescribeLiveStreamOnlineList - Required params template:
DomainName:<live-domain>AppName:<app-name>PageNum:<1>PageSize:<50>
4) Forbid/resume a stream
- APIs:
ForbidLiveStream/ResumeLiveStream - Required params template:
DomainName:<live-domain>AppName:<app-name>StreamName:<stream-name>ResumeTime(for forbid):<2026-03-05T00:00:00Z>
Evidence Checklist
- Save request payloads and API responses under
output/alicloud-media-live/. - Record exact region and timestamps for each mutation operation.
#!/usr/bin/env python3
"""Fetch OpenAPI metadata API list for Alibaba Cloud Live and save to output/."""
from __future__ import annotations
import argparse
import json
import os
import pathlib
import urllib.request
DEFAULT_PRODUCT_CODE = "live"
DEFAULT_VERSION = "2016-11-01"
OUTPUT_DIR = pathlib.Path("output/alicloud-media-live")
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()