AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

VibeSKU Clips

mcp-ullrai-vibesku-clips · by UllrAI

AI 带货短视频神器:一张商品图,自动产出抖音/快手/小红书/TikTok Shop 卖货短视频

— No reviews yet
0 installs
21 views
0.0% view→install

Install

$ agentstack add mcp-ullrai-vibesku-clips

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ✓ Network access No
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ● Environment & secrets Used
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-ullrai-vibesku-clips)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 9d ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of VibeSKU Clips? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

VibeSKU Clips

[中文版](README.zh-CN.md) | English

VibeSKU Clips turns product material into a localised UGC video. An operator submits a product link or images with a brief; the platform reads the product, writes a market-specific script, optionally draws a storyboard, generates the clip, checks it against a quality gate, and hands back the asset with a delivery manifest.

The platform produces material and the manifest. Account login, publishing, storefront links, product tagging, and performance observation stay with the operations team.

✨ What it does

  • Product understanding. Reads a product link, uploaded images, and a brief

into recorded product facts. Anything the material does not support is flagged for a top-up rather than invented.

  • Localised scripts. Output language and target market are separate

settings, so Spanish for Mexico and Spanish for Spain are different scripts, each with its own voiceover, subtitles, and publish caption.

  • Three delivery formats. Presenter, everyday scene, and how-to-use, each a

production recipe with its own beat structure and rotating opening angles.

  • Talent references. Upload a licensed photo or describe a fictional adult

performer. Approved images guide each generated shot.

  • One clip at a time. Product, talent, script, optional storyboard, and video

form one guided path, with a human confirmation before each expensive step.

  • Measured quality checks. FFprobe verifies media duration and streams;

hosted ASR checks spoken words and supplies subtitle times. Operators review visual accuracy and performer consistency.

  • Review and regeneration. Replace one shot or regenerate a full version

while preserving the other shots and the existing final clip.

  • Exports with a manifest. Every asset includes its reference number,

product, language, market, talent, licence note, and disclosure line.

  • Asset and consumption records. Products, talent, scripts, and approved

clips keep their source, licence, and version lineage; analysis, scripting, rendering, retries, and regenerations are metered separately.

Delivery specification: selectable 15–120 seconds, 9:16 or 16:9 framing, and a provider-compatible resolution, with cover, subtitles, publish caption, and a synthetic-content disclosure.

🧱 How production runs

| Stage | Job | What it does | | :--------- | :-------------------- | :------------------------------------------------------------------------------------------------ | | Intake | ugc.product.ingest | Imports the product page through Firecrawl, reads facts, and waits for review or missing material | | Script | ugc.work.script | Writes one script from the confirmed product, talent, language, and market | | Storyboard | ugc.work.storyboard | Draws one key frame per beat and stops for confirmation | | Video | ugc.work.video | Creates durable shot tasks and an immutable composition snapshot | | Shot | ugc.work.segment | Generates and archives one shot; cloud ASR/TTS checks its spoken track | | Compose | ugc.work.compose | FFmpeg probes, normalizes, captions, and concatenates the final clip |

Jobs run on pg-boss through the repository's task-run outbox, so each step survives a restart and can be retried on its own. Images go through Prism; video uses the provider selected by VIDEO_GENERATION_PROVIDER, product-page imports use Firecrawl, and scripting uses any OpenAI-compatible endpoint. Prism video is fixed to H3; lk666 also offers Seedance 2.0 and 2.5, with each model exposing only its supported output resolutions. The general worker runs provider jobs; a dedicated render worker runs FFmpeg and FFprobe. Generated files stream into private R2 storage.

Business logic lives in src/lib/ugc, the job handlers in src/lib/jobs/ugc, and the operator surfaces under src/app/dashboard.

🛠️ Tech Stack

| Category | Technology | | :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------- | | Framework | Next.js 16 | | Language | TypeScript | | UI | React, shadcn/ui, Tailwind v4, Lucide React (icons) | | Auth | Better-Auth | | Database | PostgreSQL | | ORM | Drizzle ORM | | Payments | Stripe | | Media | Prism images, selectable Prism or lk666 video, Alibaba Cloud ASR/TTS, FFmpeg composition | | AI | Vercel AI SDK v7, any OpenAI-compatible LLM endpoint | | Email | Resend, React Email | | Forms | React Hook Form, Zod | | Deployment | Zeabur or Docker | | Package Manager | pnpm |

🚀 Quick Start

1. Environment Setup

Ensure you have the following software installed in your development environment:

2. Project Clone & Installation

# Clone the repository
git clone https://github.com/UllrAI/VibeSKU-Clips.git

# Enter project directory
cd vibesku-clips

# Install dependencies with pnpm
pnpm install

3. Environment Configuration

The project is configured through environment variables. First, copy the example file:

cp .env.example .env

Then edit .env and fill in the core values plus the credentials for the features enabled in src/lib/config/site.js.

Starter feature selection

SITE_CONFIG is the client-safe source of truth for brand, contact, links, assets, and the static emailAuth, billing, uploads, and ai feature switches. All features default to enabled. Disable an unused feature there before removing its environment variables. Disabled features are removed from navigation and guarded at their pages, APIs, plugins, and server actions.

If emailAuth is disabled, configure at least one complete OAuth provider so the web sign-in flow remains usable. Credentials remain server-only and must never be added to SITE_CONFIG.

Environment Variables

| Variable Name | Description | Example | | :----------------------------- | :-------------------------------------------------------------- | :-------------------------------------------------- | | DATABASE_URL | Required. PostgreSQL connection string. | postgresql://user:password@localhost:5432/db_name | | JOB_DATABASE_URL | Optional pg-boss database; defaults to DATABASE_URL. | postgresql://user:password@localhost:5432/db_name | | JOB_DB_POOL_SIZE | Optional pg-boss pool size per process; defaults to 3. | 3 | | WORKER_GRACEFUL_TIMEOUT_MS | Optional Worker SIGTERM drain deadline; defaults to 30 seconds. | 30000 | | RATE_LIMIT_IP_HEADER | Optional trusted client-IP header; defaults to Zeabur. | x-forwarded-for | | NEXT_PUBLIC_APP_URL | Required. Public URL of your deployed app. | http://localhost:3000 or https://yourdomain.com | | BING_SITE_VERIFICATION | Optional Bing Webmaster msvalidate.01 verification token. | Value issued for your deployed hostname | | NEXT_PUBLIC_UMAMI_SCRIPT_URL | Optional Umami tracker URL; set all three Umami variables. | https://analytics.example.com/script.js | | NEXT_PUBLIC_UMAMI_WEBSITE_ID | Optional deployment-specific Umami website UUID. | 00000000-0000-4000-8000-000000000000 | | NEXT_PUBLIC_UMAMI_DOMAINS | Optional comma-separated host allowlist for this deployment. | yourdomain.com | | BETTER_AUTH_SECRET | Required. Random session secret, at least 32 characters. | Generate with openssl rand -base64 32 | | RESEND_API_KEY | Required when emailAuth is enabled. Resend API key. | re_xxxxxxxxxxxxxxxx | | RESEND_EMAIL_FROM | Required when emailAuth is enabled. Verified sender. | noreply@your-verified-domain.com | | LLM_API_KEY | Required when ai is enabled. Key for your LLM endpoint. | sk-... | | LLM_BASE_URL | Optional OpenAI-compatible endpoint; defaults to OpenRouter. | https://openrouter.ai/api/v1 | | AI_DEFAULT_MODEL | Optional model id; defaults to openai/gpt-5.6-luna. | openai/gpt-5.6-luna | | FIRECRAWL_API_BASE_URL | Optional Firecrawl-compatible API root. | https://api.firecrawl.dev/v2 | | FIRECRAWL_API_KEY | Required for product URL imports. Worker-only API key. | fc-... | | VIDEO_GENERATION_PROVIDER | Video backend: prism or lk666; defaults to Prism. | lk666 | | PRISM_API_BASE_URL | Prism root; staging outside production, production in prod. | https://staging-prism.ullrai.com/api/v1 | | PRISM_API_KEY | Required for rendering. Prism API key for the chosen host. | pk_... | | PRISM_API_SECRET | Required for rendering. Prism secret for the chosen host. | sk_... | | LK666_API_BASE_URL | Optional lk666-compatible API root. | https://api.lk888.ai | | LK666_API_KEY | Required when the selected video backend is lk666. | sk-... | | DASHSCOPE_API_KEY | Required for hosted ASR on every video and optional TTS. | sk-... | | DASHSCOPE_ASR_BASE_URL | Optional ASR API root; defaults to Beijing DashScope. | https://dashscope.aliyuncs.com/api/v1 | | DASHSCOPE_TTS_BASE_URL | Optional Qwen3-TTS API root; defaults to the ASR API root. | https://dashscope.aliyuncs.com/api/v1 | | DASHSCOPE_TTS_VOICE | Optional multilingual Qwen3-TTS voice; defaults to Cherry. | Supported Qwen3-TTS voice ID | | STRIPE_SECRET_KEY | Required for billing. Prefer a least-privilege restricted key. | rk_test_... or rk_live_... | | STRIPE_ENVIRONMENT | Stripe mode; defaults to test_mode. | test_mode or live_mode | | STRIPE_WEBHOOK_SECRET | Required when billing is enabled. Endpoint signing secret. | whsec_your_webhook_secret | | R2_ENDPOINT | Required when uploads is enabled. R2 API endpoint. | https://.r2.cloudflarestorage.com | | R2_ACCESS_KEY_ID | Required when uploads is enabled. R2 access key ID. | your_r2_access_key_id | | R2_SECRET_ACCESS_KEY | Required when uploads is enabled. R2 secret key. | your_r2_secret_access_key | | R2_BUCKET_NAME | Required when uploads is enabled. R2 bucket name. | your_r2_bucket_name | | GITHUB_CLIENT_ID | Optional. GitHub OAuth Client ID. | your_github_client_id | | GITHUB_CLIENT_SECRET | Optional. GitHub OAuth Client Secret. | your_github_client_secret | | GOOGLE_CLIENT_ID | Optional. Google OAuth Client ID. | your_google_client_id | | GOOGLE_CLIENT_SECRET | Optional. Google OAuth Client Secret. | your_google_client_secret | | LINKEDIN_CLIENT_ID | Optional. LinkedIn OAuth Client ID. | your_linkedin_client_id | | LINKEDIN_CLIENT_SECRET | Optional. LinkedIn OAuth Client Secret. | your_linkedin_client_secret |

> Tip: You can generate a secure key using the following command: > openssl rand -base64 32 > > Optional local CLI auth: for scripts, local agents, or quick terminal access, you can export VIBESKU_CLIPS_CLI_API_KEY=ssk_... instead of storing credentials in the CLI config.

Analytics

Umami tracking is optional and disabled unless all three public Umami variables are set. Each deployment must create its own website in Umami and use its own website ID; never copy the maintainer deployment's ID into a fork. The tracker honors Do Not Track, excludes URL search parameters, and only records the hosts listed in NEXT_PUBLIC_UMAMI_DOMAINS.

The stable event vocabulary is cta_click, signup_click, signup_submit, signup_link_sent, login_submit, login_link_sent, signup_success, pricing_view, payment_start, and payment_success. Tracking is best-effort and never controls authentication or billing behavior. Umami's accounting remains separate from provider webhooks and database records.

This configuration is cookieless, but operators remain responsible for their privacy notice and any consent flow required by the data

…

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.