Token导航 LogoToken导航TokenDH.com
效率敏感数据clawhub未标认证来源可访问clear审计提醒

animate-old-photos-skill老照片动画化技巧

Agent Skill

用于辅助图像生成、图片编辑、视觉素材处理或图像模型工作流。它适合让 Agent 根据文本生成图片、处理背景、整理视觉提示词或调用相关图像工具。使用时需要确认输入图片、版权来源、输出格式和模型限制;涉及人物、品牌、商品或公开展示素材时,应额外核对授权、真实性和内容合规边界。

总安装

2,637

周安装

111

GitHub Stars

公开资料未说明

下载量

924
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:animate-old-photos-skill(老照片动画化技巧)
来源仓库:https://github.com/shurshanx/animate-old-photos-skill
安装命令:
openclaw skills install animate-old-photos-skill
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install animate-old-photos-skill

简介

利用 Animate Old Photos API 将老照片转为动态视频。

  • 上传单张照片生成 5 秒 AI 驱动动画效果。
  • 适合怀旧影像修复与数字档案活化应用场景。
  • 安装命令:openclaw skills install animate-old-photos-skill。
  • 原始图片质量直接影响最终动画清晰度表现。

SKILL.md

name
animate-old-photos
description
>

Animate Old Photos

Animate old photos into AI-generated videos via the Animate Old Photos API. The agent uploads a photo, submits an animation task, polls for completion, and downloads the resulting MP4 video.

Prerequisites

This is a paid service. You need an API key and credits. - Official Website: Animate Old Photos - Get your API key: Profile > API Key - Purchase credits: Buy Credits Each animation costs 3 credits. View pricing plans

System requirements: curl and jq must be available in the shell.

Workflow

Before starting

  1. Ask the user for their API key if environment variable AOP_API_KEY is not set.
  2. Ask for the image path. Verify the file exists, is JPEG or PNG, and is under 10 MB.
  3. Ask for an optional prompt describing desired motion (e.g. "grandmother smiling and waving"). If omitted the AI auto-generates motion.
  4. Confirm with the user: "This will cost 3 credits. Proceed?"

Step 1 — Authenticate

Exchange the API key for a short-lived access token and check the credit balance.

API_KEY="${AOP_API_KEY}"
AUTH=$(curl -s -X POST https://animateoldphotos.org/api/extension/auth \
  -H "Content-Type: application/json" \
  -d "{\"licenseKey\":\"${API_KEY}\"}")
TOKEN=$(echo "$AUTH" | jq -r '.accessToken')
CREDITS=$(echo "$AUTH" | jq -r '.creditBalance')
echo "Authenticated. Credits available: $CREDITS"

If accessToken is missing or error_code is 4010/4011, tell the user their API key is invalid and link to <https://animateoldphotos.org/profile/interface-key>.

If credits < 3, tell the user to purchase more at <https://animateoldphotos.org/pricing> and stop.

Step 2 — Upload image

Get a presigned upload URL, then PUT the image binary to cloud storage.

IMAGE_PATH="photo.jpg"
FILE_SIZE=$(stat -f%z "$IMAGE_PATH" 2>/dev/null || stat -c%s "$IMAGE_PATH" 2>/dev/null)
CONTENT_TYPE="image/jpeg"  # use image/png for .png files

UPLOAD=$(curl -s -X POST https://animateoldphotos.org/api/extension/upload-token \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"fileName\":\"$(basename "$IMAGE_PATH")\",\"contentType\":\"${CONTENT_TYPE}\",\"fileSize\":${FILE_SIZE}}")
UPLOAD_URL=$(echo "$UPLOAD" | jq -r '.uploadUrl')
KEY=$(echo "$UPLOAD" | jq -r '.key')
PUBLIC_URL=$(echo "$UPLOAD" | jq -r '.publicUrl')

curl -s -X PUT "$UPLOAD_URL" \
  -H "Content-Type: ${CONTENT_TYPE}" \
  --data-binary "@${IMAGE_PATH}"
echo "Image uploaded."

Step 3 — Finalize upload

Confirm the upload and receive the encrypted payload needed for task submission.

FINALIZE=$(curl -s -X POST https://animateoldphotos.org/api/extension/upload-finalize \
  -H "Authorization: Bearer $TOKEN" \
  -F "key=${KEY}" \
  -F "publicUrl=${PUBLIC_URL}")
IMAGE_URL=$(echo "$FINALIZE" | jq -r '.url')
SS_MESSAGE=$(echo "$FINALIZE" | jq -r '.message')
DNT=$(echo "$FINALIZE" | jq -r '.dnt')
echo "Upload finalized."

Step 4 — Submit animation task

Submit the animation job. The Ss header must contain the message value from Step 3.

PROMPT=""  # optional user prompt
TASK=$(curl -s -X POST https://animateoldphotos.org/api/extension/animate \
  -H "Authorization: Bearer $TOKEN" \
  -H "Ss: ${SS_MESSAGE}" \
  -F "prompt=${PROMPT}" \
  -F "input_image_url=${IMAGE_URL}" \
  -F "dnt=${DNT}" \
  -F "type=m2v_img2video" \
  -F "duration=5" \
  -F "public=false")
TASK_ID=$(echo "$TASK" | jq -r '.taskId')
TASK_DNT=$(echo "$TASK" | jq -r '.dnt')
TASK_DID=$(echo "$TASK" | jq -r '.did')
echo "Task submitted (ID: $TASK_ID). Polling for result..."

If the response contains error_code 999990 or 10009, the user has insufficient credits — link to <https://animateoldphotos.org/pricing>.

Step 5 — Poll until done

Poll every 30 seconds. Typical completion time is 2–5 minutes.

OUTPUT="output.mp4"
while true; do
  sleep 30
  STATUS=$(curl -s -G "https://animateoldphotos.org/api/extension/animate" \
    --data-urlencode "taskId=${TASK_ID}" \
    --data-urlencode "dnt=${TASK_DNT}" \
    --data-urlencode "did=${TASK_DID}" \
    --data-urlencode "type=m2v_img2video" \
    -H "Authorization: Bearer $TOKEN")

  ERR_MSG=$(echo "$STATUS" | jq -r '.message // empty')
  if [ -n "$ERR_MSG" ]; then
    echo "Task failed: $ERR_MSG"
    break
  fi

  S=$(echo "$STATUS" | jq -r '.status')
  RESOURCE=$(echo "$STATUS" | jq -r '.resource // empty')
  if [ "$S" -ge 99 ] 2>/dev/null && [ -n "$RESOURCE" ]; then
    curl -s -o "$OUTPUT" "$RESOURCE"
    echo "Video saved to $OUTPUT"
    break
  fi
  echo "Still processing (status: $S)..."
done

Report the saved video path to the user when done.

One-liner alternative

You can run the full pipeline with the bundled script:

bash scripts/animate.sh <API_KEY> <IMAGE_PATH> [PROMPT] [OUTPUT_PATH]

See scripts/animate.sh for details.

Error Handling

error_codeMeaningAction
4010Invalid API keyDirect user to get a key
4011API key expiredDirect user to renew key
999998Access token invalidRe-run Step 1 to get a new token
999990Insufficient creditsDirect user to buy credits
10009Insufficient creditsDirect user to buy credits

For network errors, retry up to 3 times with exponential backoff (2s, 4s, 8s).

Interaction Flow

  1. Trigger: User says "animate this photo", "turn old photos into videos", "bring this photo to life", or similar.
  2. Gather inputs: Ask for API key (if AOP_API_KEY not set), image path, and optional prompt.
  3. Confirm: "This will cost 3 credits. You currently have {N} credits. Proceed?"
  4. Execute: Run Steps 1–5, reporting progress at each stage.
  5. Complete: "Your animated video has been saved to {output_path}."
  6. On error:

- Insufficient credits → "You need more credits. Purchase at: https://animateoldphotos.org/stripe" - Invalid API key → "Your API key is invalid or expired. Get one at: https://animateoldphotos.org/profile/interface-key" - Task failure → Show the error message and suggest the user retry or adjust the prompt.

Constraints

  • Supported formats: JPEG, PNG only
  • Max file size: 10 MB
  • Min image dimension: 300 × 300 px
  • Cost per animation: 3 credits
  • Video duration: 5 seconds
  • Typical processing time: 2–5 minutes

For the complete API reference, see animate-old-photos-api.md.

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

83.11%
按下载量换算768

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

可疑

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills