
这是视觉艺术。ASCII 字符是媒介;电影是标准。
在编写任何一行代码之前,请阐明创意概念。氛围是什么?它讲述了什么视觉故事?是什么让这个项目与所有其他 ASCII 视频不同?用户的提示是一个起点——用创造性的雄心去诠释它,而不是字面转录。
首次渲染的卓越性不容妥协。 输出必须视觉震撼,无需多轮修改。如果某些内容看起来普通、平淡或像"AI 生成的 ASCII 艺术",那就是错误的——在交付前重新思考创意概念。
超越参考词汇表。 参考资料中的效果目录、着色器预设和调色板库是起始词汇。对于每个项目,都要组合、修改并发明新的模式。目录是绘画的调色板——你才是创作画作的人。
积极主动地发挥创意。 当项目需要时,扩展技能的词汇。如果参考资料中没有视觉构想所需的内容,那就构建它。至少包含一个用户未要求但会欣赏的视觉时刻——一个提升整部作品的转场、效果或色彩选择。
统一的美学高于技术正确性。 视频中的所有场景必须通过统一的视觉语言(共享的色温、相关的字符调色板、一致的运动词汇)感到相互关联。一个技术上正确但每个场景都使用随机不同效果的视频,在美学上是失败的。
密集、分层、深思熟虑。 每一帧都应值得观看。永远不要使用纯黑背景。始终采用多网格构图。始终有逐场景的变化。始终使用有意的色彩。
| 视频转 ASCII | references/inputs.md | ||
| 音频响应式 | references/inputs.md | ||
| 生成式 | references/effects.md | ||
| 混合式 | |||
| 歌词/文本 | references/inputs.md | ||
| TTS 旁白 | references/inputs.md |
每个项目使用单个独立的 Python 脚本。无需 GPU。
每种模式都遵循相同的 6 阶段流程:
INPUT → ANALYZE → SCENE_FN → TONEMAP → SHADE → ENCODEuint8 H,W,3)。通过 _render_vf() 和像素混合模式组合多个字符网格。参见 references/composition.mdreferences/composition.md § 自适应色调映射ShaderChain 和 FeedbackBuffer 进行后处理。参见 references/shaders.md| 字符调色板 | architecture.md | |
| 色彩策略 | architecture.md | |
| 背景纹理 | effects.md | |
| 主要效果 | effects.md | |
| 粒子 | effects.md | |
| 着色器氛围 | shaders.md | |
| 网格密度 | architecture.md | |
| 坐标空间 | effects.md | |
| 反馈 | composition.md | |
| 遮罩 | composition.md | |
| 转场 | shaders.md |
切勿对整个视频使用相同的配置。对于每个段落/场景:
对于每个项目,至少发明以下一项:
不要只是从目录中挑选。目录是词汇表——你才是写诗的人。
在任何代码之前,阐明创意概念:
将用户的提示映射到美学选择。"轻松的低保真视觉化"与"故障赛博朋克数据流"在各方面都要求不同。
references/optimization.md单个 Python 文件。组件(带参考):
references/optimization.mdreferences/inputs.mdreferences/architecture.mdreferences/architecture.md § 调色板references/architecture.md § 色彩canvas (uint8 H,W,3);references/scenes.mdreferences/composition.mdShaderChain + FeedbackBuffer;references/shaders.mdreferences/scenes.mdcanvas.mean() > 8。如果太暗,降低 gamma 值tonemap(),而非线性乘数这是头号视觉问题。黑色背景上的 ASCII 本身就很暗。切勿使用 canvas * N 乘数——它们会剪切高光。使用自适应色调映射:
def tonemap(canvas, gamma=0.75):f = canvas.astype(np.float32)lo, hi = np.percentile(f[::4, ::4], [1, 99.5])if hi - lo < 10: hi = lo + 10f = np.clip((f - lo) / (hi - lo), 0, 1) ** gammareturn (f * 255).astype(np.uint8)
流程:scene_fn() → tonemap() → FeedbackBuffer → ShaderChain → ffmpeg
每场景 gamma 值:默认 0.75,曝光过度 0.55,海报化 0.50,明亮场景 0.85。对于暗层使用 screen 混合模式(而非 overlay)。
macOS Pillow:textbbox() 返回错误的高度。使用 font.getmetrics():cell_height = ascent + descent。参见 references/troubleshooting.md。
切勿对长时间运行的 ffmpeg 使用 stderr=subprocess.PIPE——缓冲区会在 64KB 时填满并导致死锁。重定向到文件。参见 references/troubleshooting.md。
并非所有 Unicode 字符都能在所有字体中渲染。在初始化时验证调色板——渲染每个字符,检查是否有空白输出。参见 references/troubleshooting.md。
对于分段视频(引用、场景、章节),将每个片段渲染为单独的文件,以便并行渲染和选择性重新渲染。参见 references/scenes.md。
| 总计 |
references/architecture.md | _render_vf() 辅助函数、GridLayer 类 |
references/composition.md | blend_canvas()、多网格构图、自适应 tonemap()、FeedbackBuffer、PixelBlendStack、遮罩/模板系统 |
references/effects.md | |
references/shaders.md | ShaderChain_apply_shader_step() 调度、38 种着色器目录、音频响应式缩放、转场、色调预设、输出格式编码、终端渲染 |
references/scenes.md | Renderer 类、SCENES 表、render_clip()、节拍同步剪切、并行渲染、设计模式(层级结构、方向弧线、视觉隐喻、构图技巧)、各复杂度级别的完整场景示例、场景设计检查清单 |
references/inputs.md | |
references/optimization.md | |
references/troubleshooting.md |
请在微信客户端打开
安装命令
npx skills add https://github.com/nousresearch/hermes-agent --skill ascii-videogithub地址
https://github.com/nousresearch/hermes-agent
更多技能>>>
find-skills 技能搜索工具 - 让AI更智能的skill
Skills之FastMCP:Python MCP 服务器构建与部署技能 GitHub Stars 14.9万+
Skills之Claude API 使用技能:Python/TypeScript SDK 安装、模型选择与工具调用教程
Skills之Python PDF处理技能:合并拆分、文本提取、表格解析与PDF创建教程
Skills之Scrapling:Python网络爬虫框架,支持反机器人绕过、JS渲染和Cloudflare保护网站抓取 GitHub Stars 13.9万+
Skills之AI SEO优化指南:让内容被元宝,百度,ChatGPT、Google AI概览等AI系统引用为来源 GitHub Stars 2.7万+
Skills之Laravel TDD 测试驱动开发指南:PHPUnit 与 Pest 实现 80% 以上测试覆盖率 GitHub Stars 17.8万+
