bytedance/agentkit-samples is a collection of examples and tutorials for Volcengine AgentKit, an AI-agent development platform for building, deploying, and operating agent applications. Developers use the samples to learn agent creation, multi-agent collaboration, memory, retrieval, MCP integrations, media generation, customer service, and other workflows. The catalogue skills provide agent workflows based on these examples.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add bytedance/agentkit-samples --skill byted-bp-seedance-viral-creative-rewrite-skillgit clone --depth 1 https://github.com/bytedance/agentkit-samplesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bytedance/agentkit-samples/byted-bp-seedance-viral-creative-rewrite-skill)<a href="https://agentmods.dev/skills/bytedance/agentkit-samples/byted-bp-seedance-viral-creative-rewrite-skill"><img src="https://agentmods.dev/badge/skills/bytedance/agentkit-samples/byted-bp-seedance-viral-creative-rewrite-skill/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bytedance/agentkit-samples/byted-bp-seedance-viral-creative-rewrite-skill"><img src="https://agentmods.dev/badge/skills/bytedance/agentkit-samples/byted-bp-seedance-viral-creative-rewrite-skill.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 10 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Rogue Agent · line 6 Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.Fix: Prevent the skill from modifying its own code, SKILL.md, or configuration files. Treat skill files as read-only at runtime.
- high Privilege Escalation · line 292 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 642 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 651 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 660 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 670 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 680 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 294 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- medium Excessive Agency · line 81 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
- medium Excessive Agency · line 174 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00071 | $0.12794 |
| Opus 5 | $0.00036 | $0.06397 |
| Sonnet 5 | $0.00014 | $0.02559 |
| Haiku 4.5 | $0.00007 | $0.01279 |
Grade A, and why
byted-bp-seedance-viral-creative-rewrite-skill scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 706 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Viral Creative Rewrite Skill
What This Skill Does
This skill helps a user create a stronger ad video from:
- a template video, provided by the user as a local path or accessible URL
- a user-provided product image, defaulting to
./assets/examples/source_product.jpg
The template video provides creative structure: hook, pacing, visual rhythm, CTA style. The product image provides the product identity, packaging, visual anchors, and confirmed selling points. The final video should keep the product image identity and borrow only the template's creative pattern.
Reference Loading
- Read
references/state_machine.mdwhen changing or auditing frontstage state transitions, opening prompts, detailed-analysis behavior, confirmation gates, missing-key behavior, bilingual parity, or transcript regressions. - Read
references/workflow.mdwhen changing or auditing the user flow, confirmation gates, setup/prepare/execute behavior, review outputs, or local product image handling. - Read
references/prompt_alignment.mdwhen changing analysis schemas, rewrite-planning prompts, prompt-package structure, or compatibility with earlier creative rewrite prompt patterns. - Read
references/chain_contract.mdwhen changing or auditing cross-layer behavior: state, prepared artifacts, renderers, prompt compiler, execution gate, bilingual parity, and badcase regression coverage.
Hard Gates
- Treat "正式生成", "直接生成", or similar user wording as intent to enter the real-generation path, not permission to submit Seedance immediately.
- Always run or present the analysis/brief confirmation gate before real generation. The user must see the template logic, product-image anchors, rewrite strategy, forbidden carryover, prompt preview, audio setting, and cost/time warning before Seedance is called.
- Treat the conversation as a state machine.
references/state_machine.mdis the source of truth for frontstage state transitions, allowed output, forbidden output, and transcript regression invariants. Do not expose later-state actions in earlier-state messages:START_OPENING: explain the skill, two media roles, default assets, category/face guidance, and ask for grouped inputs. Forbidden in this state: "确认生成", "confirm generation",--confirmed-brief, or any instruction that asks the user to approve final generation.BRIEF_READY: after analysis/brief exists, show the compact brief, detailed-analysis option, edit option, and only then expose the generation-confirmation action.DETAIL_VIEW: when the user asks for detailed analysis, print the full detailed-analysis sections and return to edit/confirm options.GENERATION_CONFIRMED: after the user confirms the prepared brief, runscripts/confirm_generation.py; do not hand-write the result.MISSING_KEY_FULL_GUIDANCE: if the confirmed runner path lacksARK_API_KEY, show the reusable brief state, no-cost/no-call state, Seedance advantages, playable examples, and account/key setup.
- Support both Chinese and English user flows. Keep user-facing messages, compact brief text, detailed-analysis text, setup/missing-key guidance, and prompt preview in the user's language. Use
ui_language: "zh"orui_language: "en"when the language is explicit; useautoonly when it is safe to infer from the user's request. This UI language is separate from the template spoken-language rule. - For conversation language selection, the latest user turn wins. If the latest invocation/request is in English, including a local-path invocation such as
/path/to/byted-bp-seedance-viral-creative-rewrite-skill use this skill, start and continue the frontstage flow in English even if earlier thread history is Chinese. If the latest invocation/request is in Chinese, use Chinese. Do not let old thread context override the language of the current invocation. - Before planning the rewrite, classify the template into a template profile. This profile decides which signals are allowed to become hard generation constraints:
visual_product_texture: drinks, food, product static shots, material/texture demos, ingredient/product-state ads. Borrow shot order, camera pacing, product state changes, texture/satisfaction points, scene mood, and music mood. Do not add voiceover, lip sync, person ethnicity/appearance constraints, or subtitle logic unless the user explicitly asks.human_demo: visible human demonstration, try-on, hand-use, or presenter action without a strong voiceover. Borrow human framing, action sequence, expression/eye-contact when structurally important, product-human relationship, and real scene context. Do not invent voiceover.human_voiceover: presenter/creator video with spoken explanation. Borrow broad person appearance/market visual context, original template spoken language, voiceover rhythm, mouth/gesture synchronization, real scene, and action order. Generate a new non-identical person and original wording.platform_cta: platform/account/search/CTA pages. Borrow only the closing function; do not inherit platform UI, account, watermark, search page, captions, or blank ending.mixed: use only when several mechanisms are equally central, then expose the active transfer slots in the brief before asking for confirmation.
- Keep no-cost rehearsal and real prepare frontstage readouts aligned. They may differ in provider/cost wording, but they must use the same user-facing structure: status, brief summary, detailed-analysis option, edit option, confirmation option, and result-display expectation.
- Do not call Seedance until the user explicitly confirms the prepared brief.
- Video understanding and rewrite planning must be done by the host agent in the conversation. Do not call ModelArk/Seed/ARK Responses for template or product-image understanding.
- For local template-video understanding, inspect visual evidence at 1fps by default, meaning one timestamped frame per second. Use these per-second observations as evidence, then summarize them into every-5-second windows. If the video has very fast cuts, text flashes, or hand motions that may be missed, increase density for the relevant interval instead of lowering detail.
- When the template shows a person whose mouth is visibly moving, increasing frame density is not enough — frames cannot tell whether there is voiceover. You must also inspect the audio track (listen for spoken voiceover vs music/ambient only) before classifying the profile. Run
scripts/extract_video_frames.py --with-audio, which exportsaudio_track.m4aand recordshas_audio_streamin the manifest, then actually listen. Do not inferhuman_demovshuman_voiceoverfrom visual frames alone; screen-recording sources especially must have their original audio checked. - If the user has chosen real generation and
ARK_API_KEYis missing, still continue through agent-led video understanding, detailed analysis, and brief confirmation. Then show Seedance 2.5 advantages, playable production examples, and only after that show the account/key setup block: BytePlus registration, ModelArk/Seedance setup document for API key plus prepaid resource package activation, Doubao Seed 2.0 Pro permission page, and local.envplacement. - When the user asks "查看详细分析" / "show detailed analysis", never answer with a short recap such as "详细分析已展开", "shown above", "same prepared brief", or "the key decision is unchanged". You must print the full detailed-analysis body in the user's language: template video facts, every-5-second breakdown, product-image analysis, proposed generation script, generation constraints, and the next edit/confirm gate.
- When the user asks "查看详细分析" / "show detailed analysis", always execute
scripts/render_detailed_analysis.py --prepared-input-json <prepared>with the bootstrapped skill-local Python. The final chat reply must be the complete stdout from this command. Do not hand-write "关键结论不变", "核心要复刻的是...", or any short profile recap. - This applies to the real generation flow too, not just rehearsal. For every brief / detailed-analysis / confirmation step (
render_brief.py,render_detailed_analysis.py,confirm_generation.py), the visible chat reply must reproduce the command's complete stdout. Leaving the output collapsed inside a tool-call box and replying only with a pointer like "以上是完整详细分析" / "shown above" does NOT count as forwarding — the analysis body must be in the visible reply. The brief and detailed-analysis stdout already end with the next-step gate (confirm / view detailed analysis / tell me what to change); do not strip those options, do not replace them with a binary "confirm only" AskUserQuestion widget, and re-offer them whenever the brief is edited and re-confirmed. - When opening the skill, use
scripts/render_opening.py --ui-language zh|enafter runtime bootstrap and send the complete stdout. Do not hand-write a shorter opening. - When showing a prepared brief, use
scripts/render_brief.py --prepared-input-json <prepared>and send the complete stdout. Do not hand-write a shorter brief. - When applying a user edit to an existing brief, use
scripts/apply_brief_patch.py --prepared-input-json <prepared> --patch-json <patch> --prepared-json <patched>and send the complete stdout. Do not hand-write "已修改" without the refreshed brief. - When showing a final generation result, use
scripts/render_generation_result.py --result-json <result>and send the complete stdout. The generated video must be shown first. - Always output setup, registration, and account URLs (BytePlus signup, ModelArk, API-key, model-management, docs links, etc.) complete and verbatim, exactly as the scripts print them. Never shorten a URL, drop its query string, or strip UTM / tracking parameters such as
utm_source,utm_medium, orutm_campaign"for tidiness" — these carry channel attribution and registration benefits and must reach the user intact. If you show a shortened display text, the underlying link target must still be the full URL. - Media markdown style: the scripts that print video/image links (
run_rewrite_video.py,render_opening.py,render_generation_result.py) accept--media-style codex|link|both, defaultcodex. Keep the defaultcodexin Codex Desktop, whererenders an inline preview. In a client that showsas plain text but linkifies markdown links (e.g. Claude Code), pass--media-style linkto emit clickable[label](file:///… )links instead (orbothif unsure). The link is only clickable once it is in your visible reply — forwarding the script stdout into the chat (not leaving it collapsed in a tool box) still applies. Localfile://links open only on the machine that ran the skill; for cross-machine sharing a public URL is required. - To make media clickable, re-run the script with
--media-style link(orboth) and forward that output. Do NOT hand-convertinto[alt](path)yourself: a bare absolute path likeC:/Users/...or/Users/...is not a valid URL, so the result renders as a link that does nothing when clicked. Only the--media-style linkflag produces the correctfile://form (with proper percent-encoding); use it instead of editing the URL by hand. - At skill startup, before showing the opening prompt or starting analysis, run
scripts/ensure_runtime.py --ui-language zh|en --print-pythonfrom the skill root. This creates/reuses the skill-local.venv, installsrequirements.txtthere when needed, verifiesimageio,imageio-ffmpeg,pillow,pydantic,httpx, and an ffmpeg executable, and prints the Python path to use. Do not assume Codex, Claude Code, system Python, or the bundled runtime already has these dependencies. - Use the Python path printed by
ensure_runtime.pyforscripts/run_rewrite_video.py,scripts/extract_video_frames.py, and other skill scripts. Do not use the Codex bundled Python or system Python for this skill after startup bootstrap. - If
ensure_runtime.pyfails because network or sandbox access is blocked, request permission and rerun the same startup bootstrap with network access. Do not wait until the user has chosen real generation to discover missing dependencies. - Do not ask for object storage, material library, TOS, or bucket setup in the default flow. Explain local product-image handling only if the user asks.
- Use
scripts/run_rewrite_video.pyas the only runner. This skill is conversation-first: collect choices in chat, write a request JSON, then execute the non-interactive runner. - Never drive a terminal wizard or stdin-based questionnaire from the agent. The package intentionally has no interactive runner.
- Use the host agent to create the prepared brief before generation. After the user reviews and confirms it, continue from
--prepared-input-json; do not run any provider media-analysis step. - For local template videos, use the bootstrapped skill-local Python to run
scripts/extract_video_frames.pyand extract 1fps timestamped frames for evidence before writing the prepared brief. Do not use browser screenshots or GUI playback as the default extraction path. - During the real-analysis preparation state, keep user-facing progress terse. Do not print template conclusions, detailed analysis, raw request/prepared JSON,
source_analysis,rewrite_plan,rewrite_brief,prompt_preview, full prompts, Python heredocs, or large shell command payloads beforescripts/render_brief.pyhas renderedBRIEF_READY. - If a prepared artifact must be hand-authored or patched, write it outside the skill source and validate/render it with a reusable script. Do not embed the full prepared JSON inside a shell command that can appear in the transcript.
- If the user changes only generation direction after preview, such as audience, claims, tone, constraints, output settings, or "add this lightly", apply a small
--patch-jsonto the prepared JSON and refresh the prompt. Do not re-analyze the template video or product image unless those media changed. Do not use a patch to switch a prepared artifact from Chinese to English or English to Chinese; the saved analysis stays in its original language. If the user wants a different UI/analysis language, create a fresh request with the desiredui_languageand run prepare again. - Always write request, prepared, output, cache, and test artifacts outside the skill folder. Do not create an
output/directory inside the skill source.
What ships with it
36 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .env.example 812 B
- .gitignore 95 B
- agents/openai.yaml 333 B
- assets/examples/README.md 685 B
- assets/examples/rehearsal_prepared.example.json 63 KB
- assets/examples/rehearsal_result.example.json 950 B
- assets/examples/request.example.json 823 B
- assets/examples/source_product.jpg 84 KB
- LICENSE 315 B
- README.md 13 KB
- references/chain_contract.md 11 KB
- references/prompt_alignment.md 795 B
- references/state_machine.md 13 KB
- references/workflow.md 20 KB
- requirements.txt 87 B
- scripts/apply_brief_patch.py 1.8 KB runs code
- scripts/build_release_package.py 3.9 KB runs code
- scripts/confirm_generation.py 3.3 KB runs code
- scripts/dependency_check.py 3.8 KB runs code
- scripts/ensure_runtime.py 4.7 KB runs code
- scripts/env_loader.py 1.1 KB runs code
- scripts/extract_video_frames.py 6.8 KB runs code
- scripts/media_cache.py 1.3 KB runs code
- scripts/media_links.py 1.9 KB runs code
- scripts/provider_errors.py 7.1 KB runs code
- scripts/render_brief.py 1.5 KB runs code
- scripts/render_detailed_analysis.py 1.1 KB runs code
- scripts/render_generation_result.py 2.6 KB runs code
- scripts/render_missing_key_guidance.py 2.5 KB runs code
- scripts/render_opening.py 5.6 KB runs code
- scripts/run_rewrite_video.py 58 KB runs code
- scripts/schemas.py 7.3 KB runs code
- scripts/seedance_runtime.py 12 KB runs code
- scripts/services.py 105 KB runs code
- scripts/setup_links.py 3.4 KB runs code
- VERSION 14 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago Changed 6075de45de2d
- 12d ago First seen · 706 lines · 71 tokens per session scan A fa29da9c8872
byted-bp-seedance-viral-creative-rewrite-skill is a skill published in the GitHub repository bytedance/agentkit-samples (453 stars, last pushed 2d ago), licensed Apache-2.0. It adds 71 tokens to every session and 12,794 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
ensembl-database
Query Ensembl genome database REST API for 250+ species. Gene lookups, sequence retrieval, variant analysis, comparative genomics, orthologs, VEP predictions, for genomic research.
mochi-remind
Handle due reminders — notify the user with natural language and mark them done.
aatmf-t10-confidentiality-breach
AATMF T10 — Integrity & Confidentiality Breach. System prompt extraction, training-data extraction, model-weight leakage, private-key recovery.
sidewinder-rattlesnake
Adversary-emulation profile for SideWinder (G0121 / Rattlesnake / T-APT-04 / Razor Tiger), India's suspected state-sponsored cyber-espionage actor.
ha-data-stores
Map of Hope Agent's local data stores and safe read-only query workflow. Use when the user asks where Hope Agent stores data, wants to inspect sessions/messages/memory/logs/background jobs/knowledge indexes/settings, asks the model to query local app data, or debugging requires checking persisted state. Trigger…
sn-image-imitate
An image tool that creates new content while following the visual style and layout of a single reference image.