728x90
애드온이 아닌 스크립트를 통해 블로그 포스팅을 작성해주는 시트를 만들어보자.
새로운 스프레드시트 파일을 하나 만든 다음 확장프로그램 > Apps Script 메뉴로 이동한다.
아래와 같이 스크립트를 입력한다.
첫 줄의 SECRET_KEY 부분에는 앞서 발급받은 OpenAI API 키를 입력한다.
- MAX_TOKENS : 최대길이. 현재 선택한 davinci-003 의 경우 4,000 이다.
- gpt_model : 여기서 선택한 다빈치 모델 외에 ChatGPT, Davinci, Curie, Babbage, Ada 등의 모델이 있다.
- temperature : 답변의 랜덤한 정도를 나타내는 것으로 0 과 1사이의 값을 가진다. 큰 값으로 갈수록 예측에서 벗어나고 다양한 특성이 있으며 작은 값으로 갈수록 전형적이고 보수적인 답변을 내놓는다.
토큰의 최대값을 초과하는 값을 입력하면 다음과 같이 Exception 오류가 발생한다.
text-davinci-003 외에 다양한 모델을 선택해서 테스트할 수 있다.
샘플코드는 다음과 같으며, 적절히 조정해서 사용한다.
const SECRET_KEY = "YOUR_API_KEY";
const MAX_TOKENS = 200;
const gpt_model = "text-davinci-003"
function GPT(prompt, temperature = 0.7, model = gpt_model) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: model,
prompt: prompt,
temperature: temperature,
max_tokens: MAX_TOKENS,
};
const options = {
contentType: "application/json",
headers: { Authorization: "Bearer " + SECRET_KEY },
payload: JSON.stringify(payload),
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return res.choices[0].text.trim();
}
위의 코드를 붙여넣은 다음 실행을 눌러 선택한 기능을 실행한다.
이제 스프레드시트로 돌아와서 함수를 작성해보자. 기본적인 절차는 다음과 같다. 각각의 실행과정을 살펴보기 위해 각 실행단계 첫 컬럼에 체크박스를 두었고, 체크박스가 선택되면 해당 함수가 실행되는 방식이다.
- 제목란에 작성하고자하는 주제를 입력한다. 이를 영어로 번역한다.
- 해당 영어 주제에 적합한 영어로 된 컨텐츠를 생성한다.
- 해당 영어 컨텐츠에 적합한 Meta Description, 해시태그, 이미지 URL 을 생성한다.
- 그리고 나서 영어로 된 컨텐츠를 이제 한국어로 번역한다.
- 영어로 된 Meta Description 도 한국어로 번역한다.
- 그리고 앞선 이미지 URL 에서 이미지를 가져온다.
각 단계에서 사용된 함수는 다음과 같다.
제목 | 함수 |
제목번역 | =if(A3=TRUE,GOOGLETRANSLATE(D2,"ko","en"),"") |
컨텐츠 | =if(A3=TRUE,GPT("Write a long blog articles in markdown format. Length is about 8000 words and include title and subtitles. Writing Style is Professional,Length is about 8000 words.The title of the blog is:"&D2),"") |
Meta Description | =if(A4=TRUE,GPT("Write a meta description of SEO optimization for the blog post. The blog post is:"&D3),"") |
해시 태그/키워드 | =if(A5=TRUE,GPT("Find only 10 SEO-optimized hashtags or keywords for the blog . The blog post is:"&D3),"") |
이미지 URL | =if(A6=TRUE,GPT(" [INFO: Use the Unsplash API (https://source.unsplash.com/1600x900/?). the query is just some tags that describes the image. Write the final Image URL.] ## DO NOT RESPOND TO INFO BLOCK ## Give me a blog cover image url fit to this subject:"&D3),"") |
컨텐츠 | =if(A7=TRUE,GOOGLETRANSLATE(D3,"en","ko"),"") |
Meta Description | =if(A8=TRUE,GOOGLETRANSLATE(D4,"en","ko"),"") |
이미지 | =if(A9=TRUE,image(D6),"") |
위의 과정으로 작성된 글은 다음 링크에 게시했으니 참고하세요. 어색한 부분이 있어, 당연히 후공정이 필요하지만 겉보기에는 외형은 그럴듯하게 나오네요. 하지만 뭐 내용 자체는 하나마나한 소리라 별로 도움이 안됩니다. 해당 실행에 소요된 자원은 다음과 같습니다.
728x90