@acedatacloud/skills 2026.807.1 → 2026.809.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acedatacloud/skills",
3
- "version": "2026.807.1",
3
+ "version": "2026.809.0",
4
4
  "description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
5
5
  "keywords": [
6
6
  "agent-skills",
@@ -24,7 +24,6 @@ Generate 4–15 second videos through `POST https://api.acedata.cloud/minimax/vi
24
24
  | `audio_urls` | 1–3 public HTTP(S) URLs | omitted |
25
25
  | `resolution` | `768P`, `2K` | `2K` |
26
26
  | `ratio` | `16:9`, `9:16` | `16:9` |
27
- | `aigc_watermark` | boolean | false |
28
27
  | `duration` | integer 4–15 | 4 |
29
28
  | `async` | boolean | false |
30
29
  | `callback_url` | public HTTP(S) webhook | omitted |
@@ -10,7 +10,7 @@ when_to_use: |
10
10
  install time to publish videos — confirm before uploading and
11
11
  re-prompt to re-install if the upload scope is missing.
12
12
  connections: [google/youtube]
13
- allowed_tools: [Bash]
13
+ allowed_tools: [Bash, publish_artifact]
14
14
  license: Apache-2.0
15
15
  metadata:
16
16
  author: acedatacloud
@@ -146,18 +146,28 @@ FILE="${FILE:-/path/to/video.mp4}"
146
146
  TITLE="My title"
147
147
  DESC="My description"
148
148
  # privacyStatus: public | unlisted | private
149
- read -r -d '' META <<JSON
150
- {"snippet":{"title":"$TITLE","description":"$DESC","categoryId":"22"},
151
- "status":{"privacyStatus":"unlisted","selfDeclaredMadeForKids":false}}
152
- JSON
153
-
154
- # 1. Init resumable session -> capture the upload URL from the Location header.
155
- UPLOAD_URL=$(curl -sS -D - -o /dev/null \
149
+ META=$(jq -n --arg title "$TITLE" --arg description "$DESC" '{
150
+ snippet: {title: $title, description: $description, categoryId: "22"},
151
+ status: {privacyStatus: "unlisted", selfDeclaredMadeForKids: false}
152
+ }')
153
+
154
+ # 1. Init the resumable session. Keep headers, body and status so a missing
155
+ # Location reports the real API error instead of turning into an empty PUT URL.
156
+ INIT_HEADERS=$(mktemp)
157
+ INIT_BODY=$(mktemp)
158
+ INIT_HTTP=$(curl -sS -D "$INIT_HEADERS" -o "$INIT_BODY" -w '%{http_code}' \
156
159
  -H "Authorization: Bearer $GOOGLE_YOUTUBE_TOKEN" \
157
160
  -H "Content-Type: application/json; charset=UTF-8" \
158
161
  -H "X-Upload-Content-Type: video/*" \
159
162
  -X POST "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status" \
160
- -d "$META" | tr -d '\r' | awk '/^[Ll]ocation:/{print $2}')
163
+ -d "$META")
164
+ UPLOAD_URL=$(tr -d '\r' < "$INIT_HEADERS" | awk 'tolower($1) == "location:" {print $2; exit}')
165
+ if [ -z "$UPLOAD_URL" ]; then
166
+ echo "upload init failed: HTTP $INIT_HTTP: $(jq -r '.error.message // .' "$INIT_BODY" 2>/dev/null || cat "$INIT_BODY")"
167
+ rm -f "$INIT_HEADERS" "$INIT_BODY"
168
+ exit 1
169
+ fi
170
+ rm -f "$INIT_HEADERS" "$INIT_BODY"
161
171
 
162
172
  # 2. Upload the bytes -> returns the created video resource (has .id).
163
173
  RESULT=$(curl -sS -H "Authorization: Bearer $GOOGLE_YOUTUBE_TOKEN" \
@@ -173,6 +183,13 @@ Delete a downloaded temp file only **after** you've confirmed an id came back
173
183
  dropped connection the download is still good and re-uploading beats re-fetching
174
184
  a few hundred MB.
175
185
 
186
+ After a confirmed upload returns a real `.id`, call `publish_artifact` exactly
187
+ once so the result appears in **My Outputs**. Use `kind="video"`,
188
+ `channel="youtube"`, `status="delivered"`, the real title, and the canonical
189
+ `https://www.youtube.com/watch?v=<id>` URL. Include the actual privacy in the
190
+ summary. If the upload fails or no `.id` is returned, do not record a delivered
191
+ artifact and never fabricate a URL.
192
+
176
193
  `categoryId` `22` = "People & Blogs" (a safe default). To set a custom
177
194
  thumbnail (needs the file to be processed first), call
178
195
  `POST /upload/youtube/v3/thumbnails/set?videoId=VIDEO_ID` with the image.