by HeyChengC
华尔街式财经/科技解读短片 skill:设计思路、风格语言,以及找片、截图、配音、渲染和混音工具。
# Add to your Claude Code skills
git clone https://github.com/HeyChengC/wallstreet-explainerGuides for using ai agents skills like wallstreet-explainer.
See how wallstreet-explainer compares with popular alternatives.
wallstreet-explainer is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by HeyChengC. 华尔街式财经/科技解读短片 skill:设计思路、风格语言,以及找片、截图、配音、渲染和混音工具。. It has 413 GitHub stars.
wallstreet-explainer's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/HeyChengC/wallstreet-explainer" and add it to your Claude Code skills directory (see the Installation section above). wallstreet-explainer ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
wallstreet-explainer is primarily written in JavaScript. It is open-source under HeyChengC on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh wallstreet-explainer against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
讲一笔大账:真的人、真的新闻、真的画面作证据,图形舞台把数字和关系演出来;每一镜都接住上一镜的东西往下走,观众始终知道“现在在看什么、为什么看这个”。 动的是镜头和世界,不是元素自己演:镜头在有前后层的舞台里推、拉、摇,去找正在说的那个东西;东西在原地换状态。每一下动作都对着那句话的意思。
是:一套设计思路(每一镜放什么、为什么、凭什么接下一镜)、一套动效原理(从三条同类参考片逐帧量出来:为什么它不像 PPT、不像 AI,手法清单和量化目标)、一套风格语言(舞台、巨字、抠像、圆盘、数字、图表、原文高亮的具体做法,外加一份开头钩子菜单),以及一套工具。
不是模板。没有固定的镜头顺序,每条片的画面都要从它自己的文案和素材里现想。examples/ai-burn-money/ 记录的是一条片子怎么想出来、在哪里摔过跤,不要照搬它的镜头。
能复用的只有两样,都是为了质量稳定:底座(scripts/film_base.js,每条片都一样的那层)和手法库(scripts/moves.js,磨过、逐帧查过的动作)。手法是词汇,不是镜头:先想这一镜要说什么,再找意思最对得上的手法;只是差不多就手写。不要为了用上手法去改画面,也不要为了出片去凑手法(选法见 references/motion.md 的手法库)。
慢推、数字滚动、实拍上压字,参考片都在用。廉价的不是这些手法,是做法。判断用三句话:删掉它观众少懂了什么?是镜头在动、东西在换状态,还是元素自己在演入场?这一层是真的、具体的吗?
动手前先读 references/thinking.md 和 references/motion.md,再按需要读其他几份。
审美由用户把关。不要一口气出成片;每站给出具体的东西,等他点头再往下走。
| 站 | 做什么 | 给用户看什么 |
|---|---|---|
| 0 选题 | 题目要同时满足“现在热”和“看完能带走点什么” | 两三个题目,每个附一句钩子 |
| 1 文案 | 口语、第一人称,句句往下接;插原声的地方先写铺垫句(references/audio.md) |
全文。点头之前不做正式配音 |
| 2 导演表 | 见下面“导演表”一节 | 要点:开头怎么抓人、每处怎么接、要不要加铺垫句 |
| 3 素材 | 官方高清片 → 新闻原文 → 当事人原声 → 当事人抠像用的整段实拍(没有切点、有对得上台词的动作)。先拼联系表看过,再定入点,逐帧查切点(references/sourcing.md) |
关键素材(可选) |
| 4 配音和时间线 | scripts/temp_voice.py:先用临时语音排出时间线,画面全部挂在字上 |
— |
| 5 开头 | 先挑 3 个机制不同的钩子,各做 5–8 秒粗剪给用户选(references/opening.md);选中的再做成从 0 秒到第一个换段处的小样(15–20 秒,带声音) |
3 个钩子粗剪 → 选中后的开头小样 |
| 6 全片 720p | 按导演表铺完;每写两三镜截静帧看,关键动作看连续帧(strip.py);交片前跑 motion_check.py 和 render.mjs --moves |
720p 全片、抽帧图,再点出两三处请他重点看 |
| 7 成片 | 改到满意;换正式配音;出 1080p,只渲一次 | 1080p |
每次交付都要做到:
ffprobe 验证文件能打开。旧_ 前缀。全片只有这一份计划。用户拿它核对画面,做的时候照它做,审片时拿它对照。每一镜写这几列:
| 镜 | 时间 | 文案 | 屏上是什么,在干什么 → 停下来时留下什么 | 观众多懂了什么 | 承担 | 读懂时刻 + 停留 | 承接 | 手法 |
|---|
续 / 切 / 带过 / 推近 / 展开 / 换章 加上那样东西。第一镜写 —。moves.js 里的手法名和它在这里说什么,对不上的写“手写”。先填前面几列,最后才填这一列。写完做一次“读表”检查:遮住文案和“多懂了什么”两列,只读“屏上”一列,看还讲不讲得通。再查有没有连续好几处硬切、有没有停不够的镜头。示例见 examples/ai-burn-money/director.md。
| 在做什么 | 读 |
|---|---|
| 想一镜该放什么、为什么、凭什么接下一镜 | references/thinking.md |
| 动起来:为什么不像 PPT/AI、手法清单、手法库怎么选、量化目标、相机和抠像的代码手感 | references/motion.md |
| 画面长什么样:舞台、巨字、抠像、圆盘、数字、图表、片名、字幕、实拍画框 | references/style.md |
| 两镜之间怎么接、运镜和动作的手感 | references/grammar.md |
| 开头 | references/opening.md |
| 找片、下片、挑入点、抠人、新闻原文、原声 | references/sourcing.md |
| 文案、配音、原声剪口、音效、混音 | references/audio.md |
| 交付前自检 | references/review.md |
| 实践中踩过的坑 | references/lessons.md |
| 脚本 | 干什么 |
|---|---|
footage.py |
search 搜片 / get 下载(可只下一段、只下音频)/ sheet 带时间码的联系表 / scenes 镜头切点 / extract 抽 30fps 帧序列 / wave 看原声剪口的响度 |
snap_news.mjs |
新闻和报告原文截图:拦广告、去浮层、等字体加载完再量关键词的框 |
matte.py |
实拍逐帧抠人(GPU 上 ISNet 约 0.25 秒/帧),提示藏着的切点,只存人物外框那一块 |
matte_clean.py |
抠像后处理:去细线零碎、整列抹掉贴着的椅背、写出每帧头肩中心(放人时跟住他) |
matte_despill.py |
抠像去色边:原片背景色(比如会场蓝幕)渗进软边,换底后一圈蓝光。软边换色、收边、压溢色,写到新目录,先 --check 看单帧 |
stage25d.js |
页面里用的小工具:分层相机 camPath/L、关键帧机位 camKeys、3D 桌面 desk3d、方向运动模糊、景深、抠像跟人 cutP、巨字 mega、眉题、实拍退成底、按十亿取整。只是工具函数,不是镜头 |
film_base.js |
底座:读时间线、cue(句,'词') 取时刻、实拍取帧、shot() 登记镜头、按时刻找镜头、字幕、预加载。镜头有空档、实拍没登记、找不到字时直接报错 |
moves.js |
手法库:横推换人、人身后换背景、巨字随话翻、卡片冒出来、画框推满屏、甩进来、倒成桌面、钉住换实拍、证据小卡、虚化当底、推过镜头、累加滚数。只管动作,画面由片子传;调用要写 why |
temp_voice.py |
script.json → 临时配音(edge-tts)和 timeline.json(每个字的时刻、原声插段、片名位置);有正式配音时自动换上,--asr 重新对齐 |
render.mjs |
逐帧渲染:--stills 看帧、--video --range 渲一段、--h 1080 出成片;--moves [--prev 上一条/out/moves.json] 查手法用量 |
strip.py |
连续帧拼图:一个动作 8 张,查静帧看不出来的穿帮;也用来拆参考片的动作 |
motion_check.py |
镜头运动自检:画面完全不动的时间、定住次数、镜头在动的时间、前后层、推拉比,和参考片的区间比 |
mix.py |
配音、原声、音效、配乐(配乐给人声让路)→ -14 LUFS;--check 量各段响度 |
依赖:ffmpeg、yt-dlp、Python(edge-tts、numpy、opencv-python、Pillow;可选 faster-whisper;抠人要 onnxruntime-gpu 和 rembg 下载的模型)、Node 和 Playwright。安装方法见 README。
temp_voice.py 出 edge-tts 临时配音,排出时间线,画面照它做。voice/<id>.final.wav,跑 temp_voice.py script.json --asr。gap 决定。不要事后用 atempo 加速,切掉静音以后再加速会很急促。starter/ 整个拷成片子目录(index.html、film.css、film.js、assets/grain.png 颗粒图);scripts/ 的 stage25d.js、film_base.js、moves.js 拷进 lib/;字体按 README 下好放进 fonts/。再放 timeline.json 和 assets/(实拍帧在 assets/clips/<名>/,抠像在 assets/cut/<名>/)。starter 里没有镜头,只有底座。film_base.js)暴露 window.ready 和 window.seek(t)。seek 找到 t 所在的镜头(shot(t0, t1, fn)),调用 fn(t) 返回这一帧的 HTML,并等图片解码和字体加载完。同一个 t 永远画出同一帧,不依赖 CSS 动画和播放时钟。cue(句id, '词'),从时间线里取,不写死秒数。换了配音,全片自动顺延。<video>。帧数要登记,漏了会取到不存在的帧,出现黑屏或空框。camPath(t, 起点, 移动表),每层用 L(机位, 上一帧机位, z, html) 包起来,远的层 z 小,运动模糊自动算。pushSwap、pushThrough、blurToBase、frameFill)就是这样接的:from 传上一镜的函数。examples/ai-burn-money/film_lib.js,第六版用底座和手法库重拼,和原版逐帧一致(素材不随仓库给,只用来读)。看它怎么在手写的画面里用手法、怎么写 why,不要照抄它的镜头。有一类财经视频,画面高级、简约,又有质感。这种风格怎么做呢?我做了一个 Skill,可以直接生成这种视频。

这个就是用这个 Skill 打磨出来的样片《AI 到底有多烧钱》,77 秒,这里压成了没有声音的 GIF。片子里的实拍、人物和新闻截图都是引用的,出处在 CREDITS.md。
这类财经视频,画面全是真实素材:新闻发布会、产品发布、企业官方画面,然后把数字和关系用可视化的方式表达出来。
所以最核心的就两件事:素材和数字表达。
素材的选择非常重要。这个 Skill 里面明确规定了素材的优先级,它会自己去各大主流视频网站上找到合适的片段,裁剪、处理。片子里的人也是真人,从发布会、采访里一帧一帧抠出来,站在大字前面讲。
数字表达就是 B-roll 的重点。数据怎么放、关系怎么画、图表怎么呈现,这些控制了整个片子的风格。

上面是样片里四个镜头动作,从上往下:镜头沿着桌上的新闻滑过去;黄仁勋从发布会画面里抠出来,身后换成"5.2 万亿";整组横推出去换成 Altman;新闻原文倒下去变成桌面,图表立起来。
然后是镜头之间的连贯性和转场。
这种财经视频最重要的是克制。同一个对象可以挂镜头运动,不是每出现一个新东西就切一下。不要为了有变化就去换机位、换背景,也不要连续硬切好几次让观众重新找位置。所有 PPT 式的渐入渐出,全部排除。
背景的质感、字体、节奏,也都是风格的一部分。
整个片子是用代码一帧一帧画出来的,通过时间线编排,最后渲染成视频。配乐用平稳的底乐,人声出来的时候自动压低,再加一些经典的财经类音效。
这套风格是参考这类财经视频提取出来的:一个问题就能撑起全篇,开头五到七秒抛出反差,结尾回答它,形成一句判断。
图形有自己的表达任务,实拍以直接切为主,新闻和报告给出具体截图,用高亮标出来。
色调、字体、节奏,都是复刻出来的。
这个 Skill 在设计的时候,每一镜都要回答:内容有没有增量?镜头有没有承接?素材是不是真实、高清、官方的?数字有没有表达清楚?
交付前静音看一遍,画面本身就能讲清楚在说什么。
小字不要太多,太多就 AI 味了。
用法很简单:把这个 Skill 的链接发给你的 AI 工具,让它下载、导入,然后直接生成视频就行了。
用 Claude Code 的话,自己装也就几行:
git clone https://github.com/HeyChengC/wallstreet-explainer.git ~/.claude/skills/wallstreet-explainer
cd ~/.claude/skills/wallstreet-explainer
pip install -r requirements.txt
npm install && npx playwright install chromium
再装一个 ffmpeg,放进 PATH。装完重启 Claude Code,跟它说"用 wallstreet-explainer 做一条 1 分钟的片子,讲 AI 到底有多烧钱"就行。
选题可以自己选,文案可以自己给,也可以让它来出。开头会让你选一个钩子,财经风格的钩子很重要,你可以自己描述想要什么,也可以让 AI 给你准备几个,自己挑。
配音一开始用免费的 edge-tts 临时配,先把时间线排出来。文案和画面都定了,再换成你自己的配音:每句存成 voice/<句子id>.final.wav,跑一下 python scripts/temp_voice.py film/script.json --asr,画面会跟着重新对齐。
几个可能会碰到的问题:
pip install -U 一下就好。onnxruntime-gpu(有 N 卡)或者 onnxruntime,再用 rembg 把模型下下来:python -c "from rembg import new_session; new_session('isnet-general-use')"。starter/film.css 里写的对上。字幕里的英文和数字我用的 Century Gothic Italic,这个是商业字体,可以换成 URW Gothic 或者 Questrial。PLAYWRIGHT_FROM 指过去就行。SKILL.md 是 AI 读的入口,具体的东西都在 references/ 里:每一镜怎么想(thinking.md)、镜头怎么动才不像 PPT(motion.md)、画面和转场(style.md、grammar.md)、开头的钩子(opening.md)、找素材和声音(sourcing.md、audio.md)、交付前查什么、踩过哪些坑(review.md、lessons.md)。
scripts/ 里是做片要用的工具:
| 脚本 | 干什么 |
|---|---|
footage.py |
搜片、下片(可以只下一段)、拼联系表、找切点、抽帧、看原声剪口 |
snap_news.mjs |
截新闻原文,量出关键词的位置,用来画高亮 |
temp_voice.py |
临时配音和时间线,换正式配音后重新对齐 |
matte.py、matte_clean.py |
把视频里的人一帧一帧抠出来 |
matte_despill.py |
去掉抠像边上原片背景的色边(比如蓝幕反光) |
stage25d.js |
镜头、景深、运动模糊、大字这些小工具 |
film_base.js |
底座:读时间线、按字取时刻、登记镜头、字幕,每条片都一样 |
moves.js |
手法库:横推换人、人身后换背景、画框推满屏这些磨过的动作,只管怎么动,画面每条片自己写 |
render.mjs |
一帧一帧渲染成视频;--moves 列出每一镜用了哪些手法 |
strip.py |
把一个镜头动作拼成连续帧,看有没有穿帮 |
motion_check.py |
量一下画面是不是太"死" |
mix.py |
配音、原声、音效、配乐混在一起 |
starter/ 是新片的起点,只有底座,没有镜头。
examples/ai-burn-money/ 是样片的文案、导演表、画面代码,还有每一段为什么这么拍。
这类片子一定会用到别人的素材:企业宣传片、新闻画面、网页截图、当事人原声。只拿来做评论和解读,每条片都在简介里写清楚出处,写法可以参考 CREDITS.md。有没有风险,你自己判断。
新闻网页截不到的时候,可以用核实过的文字自己排一张图,但别仿真实网站的 logo 和版式,也别编数据。别拿真实博主、电影、品牌的名字给自己的片子起名。
代码和文档是 MIT,见 LICENSE。样片里的第三方画面、截图、logo 和人物不在 MIT 范围内,归各自的所有者。
微信号 Yangdavee,备注来意。