초대하고 적립

초대 보상 안내

초대 링크를 공유하세요. 친구가 링크로 가입하고 충전하면 이후 충전마다 표시된 보상을 받을 수 있습니다.

GPT Image 2.5에서 Figma로: Codex와 Astra

GPT Image 2.5 콘셉트를 Codex, GPT-6 Astra, Computer Use로 편집 가능한 Figma 레이어로 만드세요.

목차
GPT Image 2.5에서 Figma로: Codex와 Astra

GPT Image 2.5는 웹사이트의 시각 콘셉트를 만들고, Codex와 GPT-6 Astra 및 Computer Use는 이를 Figma에서 다시 만들 수 있습니다. 합격 기준은 편집 가능한 텍스트, 버튼, 컨테이너이며 프레임 전체에 늘린 PNG가 아닙니다.

계정에 필요한 모델과 Computer Use가 이미 있다면 공식 구독 경로를 사용합니다. 대안은 BetterToken API로 Image 2.5를 생성하고 API 설정으로 Astra를 연결하는 방법입니다. 플러그인, 시스템 권한, Figma 접근은 별도로 확인해야 합니다. Hideki Kobayashi의 사례는 작성자의 예시일 뿐, 당사의 종단 간 테스트나 정확한 재현 보증이 아닙니다.

확인 가능한 콘셉트 만들기

처음에는 데스크톱 화면 하나로 시작합니다. 내비게이션, 제목, 기본 버튼, 카드를 넣고 정확한 문구는 이미지 밖에 보관하여 Figma 텍스트 레이어로 만듭니다. PNG 한 장을 생성해 열어 보고 참조로 읽을 수 있는지 확인합니다. 요청 크기는 실제 결과 크기의 증거가 아닙니다.

첫 콘셉트에는 Flare를 쓰고 편집 정확도가 더 중요하면 Sunburst를 선택합니다. BetterToken Workspace에서 필요한 image-model group을 가진 key를 고릅니다. 한 group 접근 권한이 Astra까지 자동으로 허용하는 것은 아닙니다. n=1, 300초 timeout, 자동 retry 없이 유료 요청을 정확히 한 번 실행하고 timeout 재시도 전 기록과 비용을 확인합니다.

Codex를 따로 설정하고 확인하기

config.tomlauth.json을 안전하게 백업하고 중복 TOML table 없이 설정을 병합하며 API key는 로컬에 둡니다. API key 인증은 Computer Use 접근의 증거가 아닙니다. Codex를 재시작해 짧은 메시지로 모델 연결을 확인한 다음 Computer Use가 Figma를 보는지 별도로 확인합니다.

격리된 Figma file/page를 사용하고 직접 로그인하며 agent에게 비밀번호나 key를 주지 마세요. 먼저 쓰기 없이 열린 file과 보이는 layer를 말하게 합니다. 작업은 이름이 있는 새 page로 제한하고 native text, button, container, auto layout을 요구합니다.

편집 가능한 결과 승인하기

제목을 더 긴 문구로 바꾸고 button의 문구와 너비를 수정한 뒤 main frame을 좁힙니다. 겹침과 layer 이름을 확인합니다. PNG만 import됐다면 한 section을 native layer로 다시 만듭니다. 401 또는 model error는 API 설정과 key access를, 앱 제어 실패는 Computer Use 권한을 확인해야 합니다。

정확한 값, 참고 자료, 복사 가능한 구현 예제

CODEX_HOME이 설정되어 있으면 해당 directory를 사용합니다. Windows의 일반적인 위치는 %USERPROFILE%\\.codex입니다.

다음 값을 정확히 유지합니다. gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-6-astra, image call 1회당 $0.05, 5회당 $0.25, GPT group multiplier 0.68입니다. Astra의 100만 token당 요금은 272,000 tokens 이하에서 $6.80 / $34.00 / $0.68 / $8.50이고, 이를 초과하면 $13.60 / $51.00 / $1.36 / $17.00입니다. 현재 catalog, key 조건, 실제 usage를 확인해야 하며 고정된 최종 청구액이 아닙니다.

https://bettertoken.ai/pricing · https://bettertoken.ai/api/pricing · https://bettertoken.ai/workspace · https://docs.bettertoken.ai/api-reference/images-generations · https://docs.bettertoken.ai/ai-tools/codex · https://openai.com/index/introducing-chatgpt-images-2-5/ · https://developers.openai.com/api/docs/models/gpt-image-2.5-flare · https://developers.openai.com/api/docs/models/gpt-image-2.5-sunburst · https://learn.chatgpt.com/docs/computer-use · https://help.figma.com/hc/en-us/articles/360040451373-Guide-to-auto-layout

다음 구현 예제는 byte 단위로 그대로 복사할 수 있습니다. API key를 노출하거나 실패한 유료 request를 자동으로 다시 보내지 말고, chat 응답을 Figma 제어가 가능하다는 증거로 보지 마세요.

Create a flat desktop website design concept for a fictional interior
design studio called Northline. Show one screen, not a browser mockup.
Use an off-white background, dark green accents and a clean grid.
Include a navigation bar, a hero heading, one primary button and three
service cards. No perspective, device frame or decorative UI overlays.
Use these exact labels:
Navigation: Projects | Services | About
Heading: Spaces for everyday life
Button: Discuss a project
Cards: Homes | Workspaces | Consultation
Keep text readable and leave enough space between sections.
Создай и запусти в текущей папке Node.js-скрипт generate-design.mjs,
который получит одну концепцию веб-страницы через API BetterToken.
Используй HTTP API, не встроенный инструмент генерации изображений Codex.

Дизайн: один плоский экран сайта вымышленной интерьерной студии Northline,
без рамки браузера и перспективы. Фон молочно-белый, акценты тёмно-зелёные,
чёткая сетка. Навигация: Projects | Services | About.
Заголовок: Spaces for everyday life. Кнопка: Discuss a project.
Три карточки: Homes | Workspaces | Consultation.

POST https://www.bettertoken.ai/v1/images/generations
Content-Type: application/json
Authorization: Bearer <значение BETTERTOKEN_IMAGE_API_KEY>
Параметры: model="gpt-image-2.5-flare", size="1536x1024", n=1,
response_format="b64_json", output_format="png".

Сначала проверь Node.js и наличие переменной BETTERTOKEN_IMAGE_API_KEY,
не выводя её значение. Если ключ недоступен, объясни, как безопасно задать
его локально для процесса запуска; не проси присылать ключ в чат.
Не читай другие хранилища учётных данных и не меняй настройки Codex.
Используй встроенные средства Node.js, без установки зависимостей.
Не перезаписывай существующие файлы: при совпадении выбери новое имя.

Когда окружение готово, выполни ровно один платный запрос, n=1,
с тайм-аутом 300 секунд. Не повторяй запрос автоматически при ошибке
или тайм-ауте; сообщи статус и предложи проверить списания до повтора.
Не выводи ключ, заголовок Authorization или полный ответ с base64.
Декодируй data[0].b64_json и сохрани website-concept.png.
Проверь, что PNG открывается, покажи изображение и его фактические размеры,
укажи путь к скрипту и PNG. При неудаче не заявляй об успешной генерации.
На этом остановись: Figma пока не открывай и не изменяй.
import { writeFile } from "node:fs/promises";

const apiKey = process.env.BETTERTOKEN_IMAGE_API_KEY;
if (!apiKey) throw new Error("Set BETTERTOKEN_IMAGE_API_KEY locally");

const prompt = `Create a flat desktop website design concept for a fictional
interior design studio called Northline. Show one screen without a browser
or device frame. Use an off-white background, dark green accents and a
clean grid. Include navigation, a hero heading, one button and three cards.
Exact navigation: Projects | Services | About.
Exact heading: Spaces for everyday life.
Exact button: Discuss a project.
Exact card labels: Homes | Workspaces | Consultation.
Keep text readable and leave enough space between sections.`;

const response = await fetch("https://www.bettertoken.ai/v1/images/generations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-image-2.5-flare",
    prompt,
    size: "1536x1024",
    n: 1,
    response_format: "b64_json",
    output_format: "png",
  }),
  signal: AbortSignal.timeout(300000),
});

if (!response.ok) throw new Error(`Image request failed: HTTP ${response.status}`);
const result = await response.json();
const encoded = result.data?.[0]?.b64_json;
if (!encoded) throw new Error("Response has no data[0].b64_json");
const base64 = encoded.replace(/^data:[^;]+;base64,/, "");
await writeFile("website-concept.png", Buffer.from(base64, "base64"));
console.log("Saved website-concept.png");
model_provider = "bettertoken"
model = "gpt-6-astra"
cli_auth_credentials_store = "file"

[model_providers.bettertoken]
name = "BetterToken"
base_url = "https://www.bettertoken.ai/v1"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
{
  "auth_mode": "apikey",
  "OPENAI_API_KEY": "YOUR_API_KEY"
}
Use Computer Use to rebuild the attached website-concept.png in the Figma
Design file I have opened for this task. Work only on a new page named
Northline concept. Do not modify other pages, share the file or publish it.

Create a desktop frame 1440 px wide. Use the image as a visual reference.
Rebuild navigation, heading, button and service cards with native Figma
layers. Do not use a full-page image as the finished design.

Use these exact texts:
Projects | Services | About
Spaces for everyday life
Discuss a project
Homes | Workspaces | Consultation

Use editable text and auto layout where content must resize. Make the
primary button reusable. Keep photos as image fills if needed; do not
pretend they have become editable vectors.

First build the navigation and hero, inspect them, then continue with the
three cards. Match the reference proportions, colours and spacing. If a
font is unavailable, report it and use an available substitute.

At the end, verify that the title can be edited, the button can be resized
and the frame can be narrowed without overlapping text. Report any
remaining differences and the page/frame names so I can inspect them.

LLM 워크플로를 최적화할 준비가 되셨나요?

하나의 API로 모델을 연결하고 키와 AI 비용을 관리하세요.

무료로 시작하기