이 튜토리얼에서는 DALL·E 2 AI 생성 이미지를 Story에 등록하여 라이선스하고 보호하는 방법을 배우게 됩니다.
AI를 사용하여 이미지를 생성했다고 가정해 봅시다. 이미지에 적절한 라이선스를 추가하지 않으면 다른 사람들이 자유롭게 사용할 수 있습니다. 이 튜토리얼에서는 DALL·E 2 AI 생성 이미지에 라이선스를 추가하는 방법을 배워 다른 사람들이 사용하려면 반드시 귀하로부터 적절한 라이선스를 받아야 하도록 하는 방법을 배우게 됩니다.
Story에 해당 IP를 등록하려면 먼저 해당 IP를 나타내는 NFT를 발행한 다음, 그 NFT를 Story에 등록하여 IP Asset으로 만들어야 합니다.
0. 시작하기 전에
튜토리얼을 시작하기 전에 완료해야 할 몇 가지 단계가 있습니다.
- 다음을 설치해야 합니다: Node.js와 npm. 이전에 코딩을 해보셨다면 이미 설치되어 있을 것입니다.
- Story Network Testnet 지갑의 개인 키를
.env
file:
- 다음으로 이동: Pinata에서 새 API 키를 생성하세요. JWT를
.env
file:
- 다음으로 이동: OpenAI에서 새 API 키를 생성하세요. 새 키를
.env
file:
OpenAI 크레딧
이미지를 생성하려면 OpenAI 크레딧이 필요합니다. 방금 계정을 만들었다면 시작할 수 있는 몇 가지 크레딧이 포함된 무료 평가판이 있을 것입니다.
- 선호하는 RPC URL을
.env
파일에 추가하세요. 우리가 제공하는 기본 공개 URL을 사용할 수 있습니다:
RPC_PROVIDER_URL=https://aeneid.storyrpc.io
- 의존성 설치:
npm install @story-protocol/core-sdk pinata-web3 viem openai
1. 이미지 생성
다음 main.ts
파일에 이미지를 생성하는 다음 코드를 추가하세요:
import OpenAI from "openai";
async function main() {
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
const image = await openai.images.generate({
model: "dall-e-2",
prompt: "A cute baby sea otter",
});
console.log(image.data[0].url); // the url to the newly created image
}
main();
2. Story Config 설정
다음 utils.ts
파일에 Story Config를 설정하는 다음 코드를 추가하세요:
import { StoryClient, StoryConfig } from "@story-protocol/core-sdk";
import { http } from "viem";
import { privateKeyToAccount, Address, Account } from "viem/accounts";
const privateKey: Address = `0x${process.env.WALLET_PRIVATE_KEY}`;
export const account: Account = privateKeyToAccount(privateKey);
const config: StoryConfig = {
account: account,
transport: http(process.env.RPC_PROVIDER_URL),
chainId: "aeneid",
};
export const client = StoryClient.newClient(config);
3. IP 메타데이터 설정
다음을 확인하세요: IPA 메타데이터 표준을 보고 IP에 대한 메타데이터를 구성하세요. main.ts
파일로 돌아가서 아래와 같이 메타데이터를 적절히 포맷하세요:
import OpenAI from "openai";
import { client, account } from "./utils";
async function main() {
// previous code here ...
const ipMetadata = {
title: "Baby Sea Otter",
description: "A baby sea otter generated with DALL·E.",
createdAt: "1728401700",
image: image.data[0].url,
imageHash: "0x...", // a hash of the image
mediaUrl: image.data[0].url,
mediaHash: "0x...", // a hash of the image
mediaType: "image/png",
creators: [
{
name: "Jacob Tucker",
address: "0x67ee74EE04A0E6d14Ca6C27428B27F3EFd5CD084",
description: "A cool dev rel person.",
contributionPercent: 100,
socialMedia: [
{
platform: "Twitter",
url: "https://x.com/jacobmtucker",
},
],
},
],
};
}
main();
4. NFT 메타데이터 설정
NFT 메타데이터는 ERC-721 메타데이터 표준을 따릅니다.
import OpenAI from "openai";
import { client, account } from "./utils";
async function main() {
// previous code here ...
const nftMetadata = {
name: "Image Ownership NFT",
description:
"This NFT represents ownership of the image generated by Dall-E 2",
image: image.data[0].url,
attributes: [
{
key: "Model",
value: "dall-e-2",
},
{
key: "Prompt",
value: "A cute baby sea otter",
},
],
};
}
main();
5. IP 업로드 및 등록
이제 모든 메타데이터가 설정되었으므로 IP Asset 등록하기로 이동하여 3단계(IP 및 NFT 메타데이터를 IPFS에 업로드)와 4단계(NFT를 IP Asset으로 등록)를 완료하면 이 튜토리얼을 쉽게 완료할 수 있습니다.
완료하면 등록된 AI 생성 이미지를 보여주는 IP-explorer 링크가 포함된 콘솔 로그가 표시될 것입니다.
6. 완료!