Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
local-first studio that renders your own TSX components into finished social/marketing images
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Storybook for images — in your repo and speaking to your agents.
An open-source, local-first studio that renders your own TSX components into pixel-perfect social and marketing images. CLI for scripting, live UI for iteration, and an agent skill for AI coding agents.
# Scaffold a project (installs dependencies with the package manager you ran it with)
bunx @stdout-design/cli init my-studio
cd my-studio
# Render an image → out/bento-feature.default.instagram-square.0.png
bun run render bento-feature --headline "Hello"
# Or open the live studio on http://localhost:3030
bun run dev
bun add -d @stdout-design/cli
Prerequisites: Node.js 22.22+, Bun 1.2+.
--data posts.csv renders one asset per row.--json output.--locales en,ar,es, RTL support, tofu detection for missing glyphs.| Command | Description |
|---|---|
studio init | Scaffold a new studio project |
studio dev | Start the live preview studio |
studio render <template> | Render a single template or batch |
studio cache stats | Show cache statistics |
studio cache clean | Clear the render cache |
studio update | Update a project to the latest CLI |
studio skill install | Install the agent skill |
Inside a scaffolded project, run them through your package manager (bun run render …, bunx studio …). Commands work from any subdirectory of the project. Set STUDIO_DEBUG=1 for verbose logs.
studio render <template> [props...] [options]
| Option | Description |
|---|---|
key=value / --key value | Template props, validated against the template's propsSchema |
--data file.csv | Batch render: one image per CSV/JSON row |
--preset ids | Comma-separated preset IDs, or all (default: defaultPreset) |
--locale en,ar | Render once per locale, using locales/<code>.json |
--out-dir path | Output directory (default: config outDir, else ./out) |
--json | Print the render manifest as JSON on stdout |
Starts a dev server on localhost:3030 (--port to change, --open to open a browser) with:
A template is a TSX component plus a Zod propsSchema, styled with Tailwind classes on the tw prop:
// templates/milestone-card.tsx
import { defineSchema } from "@stdout-design/cli/schema";
import { z } from "zod";
export const propsSchema = defineSchema(
z.object({
title: z.string().default("Milestone"),
stat: z.string().default("10k users"),
})
);
export default function MilestoneCard({
title,
stat,
}: z.infer<typeof propsSchema>) {
return (
<div tw="flex flex-col w-full h-full justify-center bg-black p-16 text-white">
<h1 tw="text-6xl font-bold">{title}</h1>
<p tw="mt-4 text-3xl">{stat}</p>
</div>
);
}
Register it in studio.config.ts under templates ("milestone-card": { componentPath: "./templates/milestone-card" }), then studio render milestone-card stat="50k users".
Install the agent skill so coding agents (Claude Code, Cursor, …) know how to work with a studio project:
studio skill install # or: init --install-skill
Output paths are deterministic (<template>.<locale>.<preset>.<row>.png), and render --json prints a machine-readable manifest.
my-project/
├── studio.config.ts template registry, presets, locales
├── templates/ your TSX components
├── data/ CSV/JSON for batch renders
├── locales/ per-locale prop overrides, keyed by template id
└── out/ rendered assets (gitignored)
import type { StudioConfig } from "@stdout-design/cli";
const config: StudioConfig = {
defaultPreset: "og",
outDir: "./out",
presets: [
{ id: "og", platform: "web", width: 1200, height: 630 },
{ id: "instagram", platform: "instagram", width: 1080, height: 1080 },
],
templates: {
"bento-feature": { componentPath: "./templates/bento-feature" },
},
};
export default config;
Locale files map template ids to prop overrides, e.g. locales/ar.json:
{ "bento-feature": { "headline": "التطبيق المميز" } }
Presets are whatever you define in studio.config.ts; these are handy sizes to copy:
| Preset | Size | Use |
|---|---|---|
| og | 1200×630 | Open Graph / social cards |
| x-card | 1200×675 | X (Twitter) cards |
| 1200×627 | LinkedIn link previews | |
| 1080×1080 | Instagram feed posts | |
| instagram-story | 1080×1920 | Instagram stories |
| appstore | 1290×2796 | App Store screenshots |
| playstore | 1080×1920 | Play Store screenshots |
MIT