Files
Hermes-ui/packages/skills/grok-image-to-video/SKILL.md
T
ekko 9a9416c99c Fix bridge history, profile models, and Windows gateway handling (#845)
* feat: support profile-aware group chat bridge flows

* feat: route cron jobs through hermes cli

* Fix group chat routing and isolate bridge tests

* Add Grok image-to-video media skill

* Default Grok videos to media directory

* Fix bridge profile fallback and cron repeat clearing

* Refine bridge chat and gateway platform handling

* Filter bridge tool-call text deltas

* Preserve structured bridge chat history

* Prepare beta release build artifacts

* Fix Windows run profile resolution

* Fix Windows path compatibility checks

* Fix profile-scoped model page display

* Hide Windows subprocess windows for jobs and updates

* Hide Windows file backend subprocess windows

* Avoid Windows gateway restart lock conflicts

* Treat Windows gateway lock as running on startup

* Force release Windows gateway lock on restart

* Tighten Windows gateway lock cleanup

* Update chat e2e source expectation

* Bump package version to 0.5.30

---------

Co-authored-by: Codex <codex@openai.com>
2026-05-19 16:09:59 +08:00

3.2 KiB

name, description, version, author, license, platforms, metadata, prerequisites
name description version author license platforms metadata prerequisites
grok-image-to-video Animate a local image into a short mp4 video through Hermes Web UI using xAI Grok Imagine. 1.0.0 Ekko MIT
linux
macos
windows
hermes
tags
xAI
Grok
image-to-video
video-generation
media
commands
curl

Grok Image To Video

Use this skill when the user wants to animate a local image into a short video with xAI Grok Imagine.

Workflow

Call the local Hermes Web UI media endpoint. Pass a local image path; the server will check for xAI credentials, read the file, convert it to a base64 data URI, call xAI, poll until completion, and optionally save the generated mp4.

Endpoint:

POST <Hermes Web UI base URL>/api/hermes/media/grok-image-to-video

Resolve the Hermes Web UI base URL in this order:

  1. HERMES_WEB_UI_URL environment variable, if set.
  2. http://127.0.0.1:${PORT}, if PORT is set.
  3. http://127.0.0.1:8648 for local development.

When Hermes Web UI is running from the provided Docker Compose setup, the default external URL is http://127.0.0.1:6060.

Authentication:

The endpoint is protected by Hermes Web UI auth. Always send the Web UI bearer token.

Resolve the token in this order:

  1. AUTH_TOKEN environment variable, if set.
  2. ${HERMES_WEB_UI_HOME}/.token, if HERMES_WEB_UI_HOME is set.
  3. ${HERMES_WEBUI_STATE_DIR}/.token, if HERMES_WEBUI_STATE_DIR is set.
  4. ~/.hermes-web-ui/.token.

Required JSON fields:

  • image_path: local path to a png, jpeg, or webp image.
  • prompt: motion and style instructions for the generated video.

Optional JSON fields:

  • duration: seconds, 1 to 15. Defaults to 8.
  • output_path: local path where the server should save the mp4. If omitted, the server saves to ${HERMES_WEB_UI_HOME:-~/.hermes-web-ui}/media/<request_id>.mp4 and creates the media directory if needed.
  • timeout_ms: maximum wait time. Defaults to 600000.

Example:

TOKEN="${AUTH_TOKEN:-}"
if [ -z "$TOKEN" ] && [ -n "${HERMES_WEB_UI_HOME:-}" ] && [ -f "$HERMES_WEB_UI_HOME/.token" ]; then
  TOKEN="$(cat "$HERMES_WEB_UI_HOME/.token")"
fi
if [ -z "$TOKEN" ] && [ -n "${HERMES_WEBUI_STATE_DIR:-}" ] && [ -f "$HERMES_WEBUI_STATE_DIR/.token" ]; then
  TOKEN="$(cat "$HERMES_WEBUI_STATE_DIR/.token")"
fi
if [ -z "$TOKEN" ] && [ -f "$HOME/.hermes-web-ui/.token" ]; then
  TOKEN="$(cat "$HOME/.hermes-web-ui/.token")"
fi
if [ -z "$TOKEN" ]; then
  echo "Missing Hermes Web UI token. Check AUTH_TOKEN, HERMES_WEB_UI_HOME, HERMES_WEBUI_STATE_DIR, or ~/.hermes-web-ui/.token." >&2
  exit 1
fi

BASE_URL="${HERMES_WEB_UI_URL:-}"
if [ -z "$BASE_URL" ]; then
  BASE_URL="http://127.0.0.1:${PORT:-8648}"
fi
BASE_URL="${BASE_URL%/}"

curl -sS -X POST "$BASE_URL/api/hermes/media/grok-image-to-video" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "image_path": "/absolute/path/to/input.png",
    "prompt": "Animate the subject with a slow cinematic push-in and subtle natural motion.",
    "duration": 8,
    "output_path": "/absolute/path/to/output.mp4"
  }'

If the response has code: "missing_xai_token", tell the user to set XAI_API_KEY or complete xAI OAuth login in Hermes Web UI before retrying.

Return the generated output_path.