内容
<div align="center">
# 🥒 macro-pickle
<img src="https://readme-typing-svg.demolab.com?font=JetBrains+Mono&weight=700&size=22&pause=1000&color=6366F1¢er=true&vCenter=true&multiline=true&repeat=true&width=640&height=80&lines=%E5%BD%93%E5%9C%B0%E6%99%BA%E8%83%BD%E5%88%9A%E6%80%A7%E5%B7%A5%E5%85%B7%EF%BC%8C%E6%9C%AA%E6%9C%89%E6%95%B0%E6%88%AA%E5%BA%94%EF%BC%8C%E5%9B%BE%E5%83%8F+%E8%A7%85%E9%A1%B5%E7%94%BB%E9%9F%B1%E6%89%96%E6%89%B9%E6%9C%AF%E5%BC%95%E5%8A%8A%E5%BC%95%E4%BB%8B%E5%88%B0%E7%94%BB%E9%9F%B1%E5%BC%95%E5%8A%8A%E5%BC%95%E4%BB%8B" alt="Typing SVG" />
[](https://typescriptlang.org)
[](https://ai.google.dev)
[](https://ai.google.dev)
[](https://fal.ai)
[](https://modelcontextprotocol.io)
[](LICENSE)
[](https://github.com/PRSMTECH)
[](https://github.com/MrJPTech)
<img src="https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png" alt="rainbow line" width="100%"/>
**🥒 当地智能创意工具,无数据库图像和视频生成,加上打字提示引擎,由Claude驱动。无数据库,无网页应用。很重要的细节。 🌶️**
</div>
## 👀 它是什么
`macro-pickle` 是一个命令行 + MCP 工具包,用于生成品牌感知的图像和视频,以及用于生成图像和视频背后的提示的工程。它**没有数据库和网页应用** — 每个轨道都写入磁盘,最终的提示导出为可以直接复制到任何笔记库的 Markdown。
它通过 Claude 运行 — 通过 `tsx` 的 CLI 脚本,通过桌面 **MCP 服务器**,以及通过 Claude 代码**技能/命令** — 使用 **Google**(Gemini 视觉,Imagen,Veo,Nano Banana)和 **fal.ai**(FLUX 等,Kling 视频)作为生成后端。
## 🚦 快速开始(0 到 pickle 在 60 秒内 🏃💨)
**前提条件:** Node 20+,[pnpm](https://pnpm.io),以及至少一个 API 密钥。
```bash
git clone https://github.com/MrJPTech/macro-pickle.git
cd macro-pickle
pnpm install
cp .env.example .env.local # 然后添加您的密钥(参见下文)
pnpm lint # tsc --noEmit — 验证安装
pnpm prompt --brands # 列出已安装的品牌配置文件
pnpm img "一个霓虹色的泡菜吉祥物,黑暗的工作室背景" # Imagen → 磁盘上的 PNG
```
### 🔑 密钥
除非您实际使用的后端,否则所有内容都是可选的 — 不需要任何密钥来**生成**提示,只有在渲染像素时才需要。
| 变量 | 需要用于 | 获取一个 |
|:---|:---|:---|
| `GOOGLE_API_KEY` | Gemini 视觉/OCR,Imagen,Veo,Nano Banana,Omni Flash | [ai.google.dev](https://ai.google.dev) |
| `FAL_KEY` | Kling 视频 + FLUX / Recraft / Ideogram / SD3.5 图像 | [fal.ai](https://fal.ai) |
| `BYTEPLUS_API_KEY` · `RUNWAY_API_KEY` · `REPLICATE_API_TOKEN` | 通过模型注册表的可选额外视频提供商 | 参见 [`.env.example`](.env.example) |
### 📁 输出位置
所有路径都可以自行设置 — 默认值都是相对于仓库的,因此新的克隆可以在没有任何配置的情况下工作。
| 变量 | 默认值 | 它控制什么 |
|:---|:---|:---|
| `MACRO_PICKLE_EXPORT_DIR` | `./generated-images` | 渲染的图像/剪辑存放位置。指向一个同步的文件夹(iCloud/Drive/Dropbox),以便在手机上查看。 |
| `MACRO_PICKLE_PROMPT_VAULT` | `./exported-prompts` | `--save`写入最终提示笔记的位置。指向一个Obsidian/Logseq库,以在那里收集它们。 |
| `MACRO_PICKLE_OMNI_DIR` | 默认导出目录 | `pnpm omni`视频编辑的默认输出。 |
| `MACRO_PICKLE_BRANDS_DIR` | `content/brands` | 品牌配置文件加载的位置 — 将私有品牌保留在仓库之外。 |
<details>
<summary><b>⚡ 脚本(按钮)</b></summary>
| 命令 | 它做什么 |
|:--------|:-------------|
| `pnpm prompt` | 通过**提示引擎**生成图像/视频提示( `--image`/`--video`, `--brand`, `--json`, `--save`, `--gen`) |
| `pnpm img` | Imagen 4.0 参考图像生成 → `MACRO_PICKLE_EXPORT_DIR` |
| `pnpm fal` | fal.ai 图像模型(FLUX / Recraft / Ideogram / SD3.5)— 提示引擎对齐 |
| `pnpm nano` | **Nano Banana** 面部锁定生成,来自参考照片(您有权使用的肖像) |
| `pnpm veo` | Google **Veo** 视频 — 文本转视频,图像转视频,以及 `--refs` ASSET 身份锁定 |
| `pnpm kling` | **Kling** 视频通过 fal.ai — i2v / t2v / 起始+结束插值 |
| `pnpm describe` | Gemini 视觉:产品 **OCR + 使用场景建议** (UGC 轨道); `--paddle` 用于本地 OCR 边车 |
| `pnpm ocr` | 可选本地 **PaddleOCR** 边车(高召回率小/CJK 文本 + 几何) |
| `pnpm analyze-video` | 描述一个参考/竞争者剪辑以进行镜像 |
| `pnpm scene:new`/`refs`/`select`/`analyze`/`video` | **媒体管道** — 两阶段:文本 → 参考帧 → 精选 → 重新提示为视频([docs/media-pipeline.md](docs/media-pipeline.md)) |
| `pnpm rank-skus` · `pnpm gen-clips` | **商店批量剪辑** — 按销售额对商店的 SKU 进行排名 → 通用参考 → 视频批量(Veo 免费 + Kling 付费),按消费支出分级 |
| `pnpm omni` · `pnpm seedance` · `pnpm wan` | Gemini **Omni Flash** 会话式视频编辑 · Seedance · Wan 视频轨道 |
| `pnpm models` | 浏览/选择跨提供商的视频模型注册表 |
| `pnpm mcp:image` | 运行 `macro-pickle-images` 桌面 **MCP 服务器** |
| `pnpm lint` | 类型检查整个工具包(`tsc --noEmit`) |
</details>
<details>
<summary><b>🎨 提示引擎(秘密酱料 🧪)</b></summary>
`scripts/lib/prompts/` 将 [`content/knowledge/PROMPT-COOKBOOK.md`](content/knowledge/PROMPT-COOKBOOK.md) 中的方法(从一组参考仓库中综合而成)转换为类型化的确定性构建器 — **无需数据库**:
| 片段 | 它做什么 |
|:------|:-------------|
| `buildImagePrompt` | Nano Banana “完美提示”公式 — 主题 + 动作 + 上下文 + 构图 + 照明 + 风格 |
| `buildVideoPrompt` | Seedance/Veo “导演简介” — 场景 · 主题 · 摄像机 · 动作 · 音频 · 节奏 + 时间分段节拍 + 屏幕字幕 |
| 品牌配置文件 | `content/brands/*.json` — 样式,调色板,首选/避免,后缀,IP 安全代理;通过 `--brand` 自动应用 |
| UGC 层 | `scripts/lib/prompts/ugc.ts` — 无面孔短形式销售格式(英雄静止 → 生活方式静止 → 9:16 剪辑) |
| `lintScene` | 连续性和 IP 安全检查 — 单节拍,固定摄像机,固定循环,氛围 |
> 📓 **导出约定:** 最终提示作为可复制的 Markdown 写入 — `pnpm prompt … --save`,或 MCP 构建工具上的 `save: true`。它们存储在 `./exported-prompts/`,除非您将 `MACRO_PICKLE_PROMPT_VAULT` 指向一个笔记库。
</details>
<details>
<summary><b>🎬 媒体管道 — 想法 → 参考 → 视频( <code>scene:*</code> 流程 🎞️)</b></summary>
工具包的核心工作流: 将一个想法转化为**参考图像**,精选它们,然后**重新提示它们生成视频** — 跨越 Nano Banana / Imagen / Veo / Kling / Gemini。本地 `scene.json` 清单跟踪每个提示,帧和剪辑([完整演练](docs/media-pipeline.md))。
```bash
pnpm scene:new my-scene # 搭建 scene.json (参考 + 视频提示)
pnpm scene:refs my-scene # 阶段 1 — 生成参考帧候选
pnpm scene:select my-scene <ids> # 精选保留的帧
pnpm scene:analyze my-scene # (可选)Gemini 接地选择
pnpm scene:video my-scene # 阶段 2 — 精选帧 → Veo 剪辑
```
| 片段 | 它做什么 |
|:------|:-------------|
| `scene-store` | 本地 JSON 清单 — 场景每提示,帧和剪辑 |
| `PromptEnhancer` | Gemini 思维链提示重写器(+ 示例库) **指导** 您的想法 |
| `groundFrames` | 图像 → 理解反馈环 — 使第 2 阶段保持主题/品牌一致 |
| Veo 模式 | `ingredients` (ASSET 参考) · `firstLast` (第一个 → 最后一个帧) · `firstFrame` (i2v) |
> 建立在与工具包其余部分相同的 **scripts/lib/** 客户端 — 一套模型客户端,无重复。
</details>
<details>
<summary><b>🤖 MCP 服务器,技能和命令(Claude 的工具带 🛠️)</b></summary>
- **MCP** (`macro-pickle-images`,`pnpm mcp:image`) — 向 Claude Desktop 公开 `build_image_prompt`,`build_video_prompt`,`describe_product`,`build_ugc_spot`,`analyze_reference_video`,`lint_scene`,`generate_image`,`generate_video`。
- **技能** (`.claude/skills/`) — `openmontage-video-prompting` (电影摄影),`ugc-shortform-prompting` (销售层),`character-lock` (身份/面部锁定)。
- **命令** (`.claude/commands/`) — `/pickle-prompt` · `/pickle-ugc` · `/pickle-pipeline` (`scene:*`) · `/pickle-winners` → `/pickle-clips` (排名获奖者 → 批量剪辑) · `/pickle-ref` (清理参考) · `/pickle-describe` (OCR + 场景推荐) · `/pickle-character` (面部锁定) · `/pickle-brand` (新品牌配置文件)。
</details>
<details>
<summary><b>🛠️ 堆栈(底层 🏎️)</b></summary>
| 层 | 技术 |
|:------|:-----------|
| 语言/运行时 | TypeScript(严格,ESM)在 Node 上通过 `tsx` |
| 图像/视频 | `@google/genai` (Gemini · Imagen · Veo · Nano Banana) · `@fal-ai/client` (FLUX · Kling) |
| MCP | `@modelcontextprotocol/sdk` |
| 验证 | `zod` |
| 可选 OCR 边车 | Python + PaddleOCR (`scripts/py/`,按需) |
</details>
<details>
<summary><b>📂 布局(身体埋葬地点 ⚰️🗺️)</b></summary>
```
macro-pickle/
├── scripts/
│ ├── lib/ # 生成核心:imagen, fal, veo, kling, nano-banana, vision, paddleocr
│ │ ├── prompts/ # 提示引擎(构建器,品牌,场景,导出,ugc,检查)
│ │ └── pipeline/ # 场景存储 + 提示增强器 + 示例 + 预设
│ ├── pipeline/ # 场景:new/refs/select/analyze/video CLI
│ ├── generate-*.ts # pnpm img / fal / nano / veo / kling
│ ├── build-prompt.ts # pnpm prompt
│ ├── describe-product.ts · ocr.ts · analyze-video.ts # 视觉/OCR 轨道
│ ├── gen-clips.ts · rank-skus.ts # 商店批量剪辑轨道
│ └── py/ # 可选 PaddleOCR 边车
├── mcp/image-server/ # macro-pickle-images 桌面 MCP 服务器
├── content/
│ ├── brands/ # 品牌配置文件 (*.json) — `quiet-desk` 是示例
│ ├── briefs/ # 场景简介 — `example-logo/` 显示格式
│ ├── clip-scenes/ # 每商店批量剪辑场景配置 (`example-store.json`)
│ └── knowledge/ # PROMPT-COOKBOOK.md 方法论
└── .claude/ # 技能 + 斜杠命令
```
</details>
## 📜 许可证
MIT — 见 [LICENSE](LICENSE)。免费如冷切肉。 🥪
<img src="https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png" alt="rainbow line" width="100%"/>
<div align="center">
**🧑🍳 由 [MrJPTech](https://github.com/MrJPTech) 充满爱心地腌制 — [PRSMTECH](https://github.com/PRSMTECH) 项目**
**📅 最后更新**: 2026年7月 · **状态**: 🎨 本地无数据库创意工具包 — 图像 + 视频生成,提示引擎,MCP · **氛围**: 有点大 dill 🥒
[](#-macro-pickle)
<img src="https://capsule-render.vercel.app/api?type=waving&color=gradient&customColorList=6,11,20&height=100§ion=footer" width="100%" />