agentsclimarketplace

Kuaishou

Skill AceDataCloud/Skills/skills/kuaishou

Publish video to the user's own 快手 (Kuaishou) account and read their works via the Kuaishou open platform. Use when the user mentions 快手, Kuaishou, 发快手, 发布到快手, 我的快手作品, or wants to post a generated video to their Kuaishou account.From its SKILL.md

Install
npx -y skills add AceDataCloud/Skills --skill kuaishou

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.2 KB, 940 tokens by cl100k_base, as published. Nobody here has run it

All calls go through scripts/kuaishou.py (stdlib-only). The user's OAuth token arrives as $KUAISHOU_TOKEN and the app id as $KUAISHOU_APP_ID (injected from the connector's metadata.platform_env); the script reads both and fails fast with a clear message if either is missing — never print either.

Resolve the script first ($SKILL_DIR may point at a different skill loaded the same turn), and repeat this preamble in every Bash block:

KS="$SKILL_DIR/scripts/kuaishou.py"; [ -f "$KS" ] || KS=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/kuaishou.py' 2>/dev/null | head -1)
[ -f "$KS" ] || { echo "kuaishou script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }

Read

python3 "$KS" whoami                  # nickname, avatar, fans, follows, city
python3 "$KS" works --limit 20        # works + play/like/comment counts
python3 "$KS" works --limit 20 --cursor <photo_id>   # next page
python3 "$KS" work <photo-id>         # one work
python3 "$KS" counts                  # public / friend / private / total

Publish a video

This posts publicly to the user's real account — there is no draft mode. Before publishing, confirm with the user in chat:

  1. the caption (required by 快手), and
  2. that the video is their own original work — 快手 bans accounts that publish non-original video, and the ban lands on the user's account.

Without a trailing --confirm the command only dry-runs and publishes nothing. --confirm must be the last argument.

# 1) Dry run — show the user exactly what will be posted
python3 "$KS" publish --caption "标题" --video-url "https://cdn.acedata.cloud/....mp4" \
  --cover-url "https://cdn.acedata.cloud/....jpg"

# 2) After they confirm in chat
python3 "$KS" publish --caption "标题" --video-url "https://cdn.acedata.cloud/....mp4" \
  --cover-url "https://cdn.acedata.cloud/....jpg" --confirm

A cover image is required (--cover-url or --cover-file, < 10MB). Local files work too via --video-file / --cover-file. Optional: --stereo-type for 360/180 panoramic video, --product-id to attach a 小黄车 product.

Remote --*-url inputs must live on cdn.acedata.cloud (or Kuaishou's own image hosts). Anything else is rejected — upload it to our CDN first, or pass a local path. This blocks a hostile URL from turning the upload step into an SSRF.

After a successful publish, record the deliverable once (see _shared/artifacts.md):

publish_artifact(kind="video", channel="kuaishou", title="<caption>",
                 url="<the url returned by the script>", status="delivered")

Gotchas

  • Upload success ≠ playable video. The upload step only confirms bytes arrived; a malformed file fails later at transcode with 视频发布失败 (120003) or 视频未上传成功 (120002). Report those verbatim.
  • Rate limits: 1000 calls/day per user, 100k/day per app. 100100402 means the limit was hit or the account is banned.
  • ACCESS_DENIED = the authorization is missing that endpoint's scope → reconnect 快手 and grant it. Token expiry (100200108) also means reconnect.
  • Kuaishou answers HTTP 200 even on failure — the script already checks result != 1, so trust its error field rather than the exit status alone.
  • Connections need re-authorizing roughly every 180 days: the refresh token does not extend on refresh. If the user hits an auth error, have them reconnect.

What ships with it: 2 files

23.1 KB alongside SKILL.md, 2 of them executable

scripts/

tests/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.