diff --git a/.gitignore b/.gitignore index 2e3a692..f0cb24a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ data/ src/web/node_modules/ src/web/dist/ src/web/*.tsbuildinfo + +skills/videoroll/local.env diff --git a/skills/openclaw-videoroll/agents/openai.yaml b/skills/openclaw-videoroll/agents/openai.yaml deleted file mode 100644 index 370c4d6..0000000 --- a/skills/openclaw-videoroll/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "OpenClaw VideoRoll" - short_description: "Collect YouTube URLs and push them to VideoRoll" - default_prompt: "Use $openclaw-videoroll to collect YouTube watch URLs on an external machine and submit them to VideoRoll through the remote API." diff --git a/skills/openclaw-videoroll/SKILL.md b/skills/videoroll/SKILL.md similarity index 64% rename from skills/openclaw-videoroll/SKILL.md rename to skills/videoroll/SKILL.md index 2037c27..1b1e16c 100644 --- a/skills/openclaw-videoroll/SKILL.md +++ b/skills/videoroll/SKILL.md @@ -1,5 +1,5 @@ --- -name: openclaw-videoroll +name: videoroll description: Collect YouTube video URLs on an external machine and submit them to VideoRoll through the remote auto-ingest API. Use when OpenClaw needs to find canonical YouTube watch links, deduplicate them, and push each URL to VideoRoll with the configured token so the project starts auto mode immediately. --- @@ -11,6 +11,39 @@ Use this skill only for one job: get valid YouTube video links and send them to ## Required config +- Before using this skill, check whether `skills/videoroll/local.env` exists. +- If it exists, load it first and use the values from that file. +- If it does not exist yet, copy `skills/videoroll/local.env.example` to `skills/videoroll/local.env`, then fill the real values. +- Fill these values in `local.env`: + +```bash +VIDEOROLL_REMOTE_URL="<<填写你的 VideoRoll 远程接口地址>>" +VIDEOROLL_REMOTE_TOKEN="<<填写 Settings · API 里配置的 token>>" +VIDEOROLL_SOURCE_LICENSE="authorized" +VIDEOROLL_PROOF_URL="" +``` + +- What you need to fill: + - `VIDEOROLL_REMOTE_URL` + Fill your real remote API endpoint, for example: + `https://your-host/api/remote/auto/youtube` + - `VIDEOROLL_REMOTE_TOKEN` + Fill the token you configured in VideoRoll `Settings · API` + - `VIDEOROLL_SOURCE_LICENSE` + Usually keep `authorized` + - `VIDEOROLL_PROOF_URL` + Optional. Fill only if you want every pushed task to carry the same proof link + +- Local setup: + +```bash +cp ~/.codex/skills/videoroll/local.env.example ~/.codex/skills/videoroll/local.env +vi ~/.codex/skills/videoroll/local.env +set -a +source ~/.codex/skills/videoroll/local.env +set +a +``` + - `VIDEOROLL_REMOTE_URL` Full remote endpoint URL. Usually: `https://your-host/api/remote/auto/youtube` @@ -68,6 +101,7 @@ Success response shape: - If the API returns `deduped=true`, report it instead of retrying. - If token/auth fails, stop and surface the exact error. - Do not attempt to bypass paywalls, private videos, or platform restrictions. +- Never commit the real `local.env` file or real token back into git. ## Output format diff --git a/skills/videoroll/agents/openai.yaml b/skills/videoroll/agents/openai.yaml new file mode 100644 index 0000000..a0eb051 --- /dev/null +++ b/skills/videoroll/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "VideoRoll" + short_description: "Collect YouTube URLs and push them to VideoRoll" + default_prompt: "Use $videoroll to collect YouTube watch URLs on an external machine and submit them to VideoRoll through the remote API." diff --git a/skills/videoroll/local.env.example b/skills/videoroll/local.env.example new file mode 100644 index 0000000..4b8a333 --- /dev/null +++ b/skills/videoroll/local.env.example @@ -0,0 +1,5 @@ +# Copy this file to skills/videoroll/local.env and fill your real values. +VIDEOROLL_REMOTE_URL="<<填写你的 VideoRoll 远程接口地址>>" +VIDEOROLL_REMOTE_TOKEN="<<填写 Settings · API 里配置的 token>>" +VIDEOROLL_SOURCE_LICENSE="authorized" +VIDEOROLL_PROOF_URL="" diff --git a/src.7z b/src.7z new file mode 100644 index 0000000..1777a16 Binary files /dev/null and b/src.7z differ diff --git a/src.zip b/src.zip new file mode 100644 index 0000000..efb0a64 Binary files /dev/null and b/src.zip differ diff --git a/src/web/src/pages/RenderQueuePage.tsx b/src/web/src/pages/RenderQueuePage.tsx index 695634d..262c886 100644 --- a/src/web/src/pages/RenderQueuePage.tsx +++ b/src/web/src/pages/RenderQueuePage.tsx @@ -40,7 +40,8 @@ export default function RenderQueuePage() { const maxConc = Number(q?.settings?.max_concurrency ?? 1); const queued = Number(q?.queued_count ?? 0); const running = Number(q?.running_count ?? 0); - if (queued > 0 && running < maxConc && maxConc > 0) { + const hasWaitingStage = (q?.tasks ?? []).some((t) => t.stage === "waiting_subtitle" || t.stage === "waiting_render"); + if ((queued > 0 && running < maxConc && maxConc > 0) || hasWaitingStage) { const now = Date.now(); if (now - (lastKickAtRef.current || 0) > 10_000) { lastKickAtRef.current = now;