콘텐츠 생성 자동화를 해보자! 2~3단계 - 원하는 레이아웃과 톤대로 텍스트/이미지 생성하여 배치하자(ft. 구글 독스)

소개

✅ 기획안(1단계 게시글로 갈음) : https://www.gpters.org/marketing/post/lets-automate-content-creation-wWieXj6VsyhjfRa

✅ 이미지 생성하는 방법(AJ님 사례로 갈음) : https://www.gpters.org/wealth/post/make-lets-start-easy-Yi6TDlrVKCmdy1z

✅ 이번 목표 : 특정 주제에 대해 [인트로, 기(부제/내용), 승(부제/내용), 전(부제/내용), 결(부제/내용), 마무리]구조로 글을 작성하고, 메인 썸네일과 기/승/전/결에 맞는 이미지 생성하여 구글 독스로 한번에 보자!

👀 왜 구글 독스로 글/텍스트를 정리했는가?
▶︎ 보통 블로그 자동발행은 구글 독스와 연동이 가능하기 때문.
▶︎ 만약 콘텐츠 복붙을 하더라도 가장 손실이 적은 것 같음(개인적인 경험)
※ 슬픈 소식은 제가 사용하는 티스토리는 24년 2월부로 외부 api 지원이 안됩니다.. 그래서 더더욱 구글 독스로 글과 이미지를 자동정리해서(이것까진 포기못함) 복붙만 하면 되도록 구조를 개선했습니다.

진행 방법

사용한 도구 : 구글 스프레드시트, 메이크, GPT, 구글 독스

우선 결론만 간단히 정리하자면, 메이크 플로우는 다음과 같습니다.

프로젝트의 다양한 단계를 보여주는 다이어그램

방법을 정리하자면 다음과 같습니다.

1단계. 주제에 맞는 개요를 작성합니다.
개요에서 기/승/전/결을 명확히 나누는 것이 중요함.

우선 주제를 선정해야합니다. 전 GPT에게 물어보고 오는 과정이 귀찮아서, 앱스스크립트를 활용해 저만의 GPT 수식을 만들었습니다. 체크박스가 체크되어 있으면, 주제를 제안해주고, 그 중 마음에 드는 것으로 제가 "선정한 제목"칸에 주제를 옮겨 적으면 됩니다.

우선 메이크에서 GPT의 system에게 역할/목표/가이드라인을 정해줬습니다.

콘텐츠 마케팅 담당자의 역할을 보여주는 화면

[system 프롬프트] ▶︎ 작성하는 텍스트의 톤앤매너도 여기서 정리하면 됩니다.

#### Role ####
You are a content marketer with 15 years of experience. You are friendly and an expert who explains things at a level that anyone can easily understand. He has a positive and bright personality who rarely expresses anything negative.

#### Goal #####
Your goal is to create content that showcases your expertise. Create various contents such as blogs, SNS, and short forms.

#### Guidelines ####
Don't answer, just write. Do not use any markings such as numbering. only write korean.

그리고 user에게 아래와 같은 프롬프트를 작성했습니다.

I'm going to write a blog post, so please write an outline.

subject : {{선정한 제목}}

#### outline structure ####

[key point summary]

[Print subheadings related to introduction]
[Output introduction related content]

[Print subheadings related to development]
[Output development related content]

[Print subheadings related to transition]
[Output transition related content]

[Print subheadings related to conclusion]
[Output conclusion related content]

그러면 아래와 같이 개요를 작성해줍니다.

워드 문서에 있는 한국어 스크린�샷

다만 주의할 점은, 명확하게 포맷을 지정 안해주고, 기승전결 구성으로 해줘 같은 워딩으로 명령하면, 어쩔땐 잘해주고, 어쩔땐 정말 엉망진창으로 해줍니다.
그리고 맘대로 넘버링을 넣거나, 이상하게 작성하는 경우가 많아, 가이드라인으로 이런 부분을 잡아줬습니다.

※ 특히 assistant에 프롬프트를 적용하면, 반영이 더 잘 안됩니다. assistant라는 게 제가 이해하기론 다음과 같습니다. system(기본역할)에게 user(질문자)가 문의하고, 문의한 내용 중 기억해야 할 부분을 기억하여, 다음 답변에 참고하는 게 assistant의 역할입니다. 그렇기에 반영이 잘 안되더라고요. 그래서 그냥 system에게 한꺼번에 역할/목표/지침/표현방법 등을 적용하는게 훨씬 결과물이 좋았습니다.

2단계. 개요를 바탕으로 글을 작성하고, JSON 형태로 저장합니다.
우선 [system의 프롬프트]는 1단계에서 조금만 수정했습니다.

#### Role ####
You are a content marketer with 15 years of experience. You are friendly and an expert who explains things at a level that anyone can easily understand. He has a positive and bright personality who rarely expresses anything negative.

#### Goal #####
Your goal is to write blog posts that display professionalism.

#### Guidelines ####
Don't answer, just write. write with an introduction, development, turn, and conclusion. Don't use numbering or other markings. only korean.

그리고 user 프롬프트에 아래와 같이 적었습니다.

Just write the main points of the outline below. In the output format, keep the "maintitle" as you received it. Output the “Introduction”, “Development”, “Transition”, and “Conclusion” content structure to JSON in the output format below.

- outline -
{{GPT의 개요 값}}

#### output format ####
[{
"maintitle": "{{선정한 제목}}",
"intro": "인트로",
"introduction": {
"subtitle": "소제목",
"content": "내용"
},
"development": {
"subtitle": "소제목",
"content": "내용"
},
"transition": {
"subtitle": "소제목",
"content": "내용"
},
"conclusion": {
"subtitle": "소제목",
"content": "내용"
},
"end":"마무리"
}]

그리고 답변 포맷을 JSON으로 지정해줘야합니다. 챗GPT가 좋은게, JSON 형태로 출력해주더라고요.

그 다음 결과값을 각각 나눠서 저장해야 합니다.

JSON 모듈을 선택하여 "Parse JSON"을 클릭하고, ADD 버튼을 눌러주세요.
그럼 아래와 같이 뜨는데, Specification에 있는 [Generate] 버튼을 눌러줍니다.

그 다음 위에 GPT에게 요청했던 출력 포맷을 복붙해줍니다.

[{
"maintitle": "{{선정한 제목}}",
"intro": "인트로",
"introduction": {
"subtitle": "소제목",
"content": "내용"
},
"development": {
"subtitle": "소제목",
"content": "내용"
},
"transition": {
"subtitle": "소제목",
"content": "내용"
},
"conclusion": {
"subtitle": "소제목",
"content": "내용"
},
"end":"마무리"
}]

그럼 아래와 같이 구조가 만들어져 있을 겁니다. 처음엔 펼쳐져있는 상태일 건데, 접어보면 아래와 같이 뜹니다. 그리고 맨 아래 Strict는 NO를 선택해주세요. YES를 선택해봤는데, 잘 안될때가 많더라고요. 구조가 조금이라도 틀어지면 생성하지 못하게 하는 기능 같습니다.

각각의 기/승/전/결 영역에 들어가보면, 콜렉션 타입에, 아래와 같이 subtitle, content 영역이 있을 겁니다. 그렇다면 잘된 겁니다.

✅ 참고 : 각 항목마다, 질문들이 있는데, 해당하는 부분을 체크하시면 됩니다.
Required : YES or NO ▶︎ 필수 영역으로 지정할건지 여부로 생각했습니다.
Multi-line : YES or NO ▶︎ 여러 줄글로 쓸 건지 여부로 생각했습니다.
Preserve the order of object keys : YES or NO or Empty ▶︎ 이건 콜랙션 타입만 나오는 질문(기/승/전/결)이라, 각 키값(subtitle, content)의 순서를 지켜서 나올건지 묻는 걸로 생각했습니다.
※ 다만 전 이번이 처음으로 메이크를 사용하는거라, 제가 제대로 이해한 것인지는 확신이 없습니다. 그냥 이럴것이다 라는 식으로 때려맞춘건데, 틀리다면 댓글로 알려주세요-! (일단 이렇게 이해하고 진행했을 때 문제가 안생겼습니다)

어쨌든 JSON 데이터 구조 설정을 완료했다면, 아래와 같이 값을 입력해주세요. 그냥 GPT에게 받은 값을 넣으면 됩니다.

그럼 아래와 같이 값이 잘 들어오는 것을 알 수 있습니다.

만약 JSON형태로 저장하기 싫다면? 기승전결 구조로 만들 때 아래와 같이 쓰면 됩니다. 아래와 같이 써도, [서론, 기/승/전/결(소제목/내용)]을 출력해줍니다. 여러 프롬프트로 테스트해봤는데, 저렇게 잘게 쪼개지 않으면 제가 원하는 데로 글의 구조를 만들 수 없었습니다.

그리고 토큰값을 너무 단시간에 많이 요청해서 그런지, 테스트 초반은 괜찮은데, 중간에 "결과값을 출력할 수 없습니다"라는 멘트가 뜨더라고요. 만약 몇 개 안쓴다면 상관없지만, 다른 자동화와 함께 GPT를 많이 쓴다면, 문제가 발생할 소지가 있습니다.

다만 JSON형태로 변환한다면? 아래와 같이 단순하게 작업할 수 있습니다.

전화기�의 다양한 단계를 보여주는 다이어그램


3단계. JSON 데이터를 바탕으로 이미지를 생성합니다.
이건 많은 분들이 알기에 간략하게 넘어가겠습니다.

챗GPT로 이미지를 생성합니다.

전 썸네일은 전체 개요 작성한 걸 가져왔습니다. 각 기/승/전/결 마다 이미지는 기/승/전/결의 내용(content)를 넣었습니다.

그런 다음 placid에서 원하는 템플릿을 선택하고, 값을 넣으면 됩니다.

이미지 url은 챗GPT에서 생성한 이미지 url을 넣었습니다.


[추가 문제]
썸네일은 직사각 형태로 원하기에 상관없는데, 기/승/전/결 이미지의 경우 16:9 사이즈를 원했습니다.
이걸 해결하기 위해 프롬프트에 아무리 명령을 내려도, 안되더라고요. 픽셀 지정, 16:9 비율 지정 등 해봤지만 안되었습니다. (나중에 조금 더 프로세스를 디벨롭할 땐 챗GPT의 달리가 아닌, 플러스나 미드져니로 연결하는 게 훨씬 나을 것 같습니다. 일단 저는 전체 프로세스를 만드는 단계라 편의상 달리로 만들었습니다)

그래서 전 placid에서 템플릿으로 위치 지정하고, 이미지는 정사각형 그대로 넣었고, 대신 기/승/전/결의 "부제"를 우측에 넣도록 했습니다. 그랬더니 아래 이미지와 같이 만들어지네요.
placid에서 강제로 16:9로 전체 꽉 차게 넣었더니, 그냥 해당 틀에 맞게 확대만 했습니다. 제가 원하는 느낌은 아니기에 이 부분은 패쓰..

4단계. 구글 독스에 원하는 구조대로 글과 이미지를 넣습니다.
[인트로, 기(부제/내용), 승(부제/내용), 전(부제/내용), 결(부제/내용), 마무리]

우선 기준이 될 구글 독스 파일을 만듭니다. 템플릿용으로 만들면 됩니다.
그리고 변수를 입력합니다. 변수는 {{변수명}}으로 쓰면 됩니다.
이미지가 들어갔으면 하는 위치에 아래와 같이 아무 이미지를 넣습니다. 전 1번 이미지는 썸네일 용이기에 정사각형, 2~5번 이미지는 세부 내용 이미지이기에 직사각형 이미지를 넣었습니다. 정사각형으로 5개를 넣었더니, 정사각형 크기에 맞춰서 이미지가 들어왔습니다.
마지막으로, 제목, 부제, 내용의 폰트 사이즈 등을 지정해줍니다. (그냥 변수값 명을 키우거나 줄이면 됩니다)

메이크에서 설정을 마무리해야 합니다.
우선 "Create a Document from a Template"으로 구글 독스 모듈을 만듭니다.

구글 문서

그리고 각 위치에 맞는 값을 JSON에서 불러와 넣습니다. maintitle, intro 등의 변수는 구글 독스에서 지정해놓은 변수 명을 그대로 불러옵니다.

값 목록이 포함된 화면의 스크린샷

그렇게 텍스트 영역을 입력하면, 아래와 같이 이미지는 넣는 영역이나옵니다. 이미지는 넣은 순서에 따라 넘버로 표시됩니다. 이미지의 변수는 따로 지정하지 않아도 된다. 그리고 생성된 파일을 저장하는 경로를 지정하면 됩니다.

그럼 아래 링크와 같이 결과물이 생성됩니다. 파일명은 "maintitle"(주제)로 입력되고, 이미지/텍스트가 원하는 순서대로 작성됩니다.

https://docs.google.com/document/d/1XUZ1DF0NWeyqtsd-kkPiajwvg-PGBkD9N2mgprIA1pw/edit?usp=sharing

결과와 배운 점

  1. 생각보다 assistant는 도움되지 않는다. (챗GPT 사이트에서 직접 사용하는게 아니고서는)

  2. 과도한 시나리오는 오류를 낳는다. 이를 개선하기 위해 JSON, 웹훅 등을 사용할 필요가 있다.

  3. GPT에게 원하는 구조로 글을 작성하기 위해 물어보면 한두번은 잘해준다. 계속 하면 못한다. (역시 JSON 형태로 만드는게 오류가 발생하지 않는 좋은 방법이다.)

  4. JSON 형태로 글을 구조화 하면, 이걸 바탕으로 카드뉴스를 만들거나, 블로그 글을 작성하는게 훨씬 쉬워진다. (응용하자면, 데이터를 크롤링해와 JSON형태로 구조화해 원하는 내용만 저장하는 것도 가능하다.)

  5. 이미지의 퀄리티를 높이기 위해서는 다른 걸 쓰자. 달리는 테스트용으로만.

  6. 달리는 뭔가 조금 딸린다

  7. 구글 독스에 변수를 넣는 기능은 따로 없다. 그냥 {{변수명}} 글자를 쓰면 된다.

도움 받은 글 (옵션)

JSON 만드는 방법 참고

https://www.youtube.com/watch?v=GvJMt9FtkAg

개요 토대로 글 작성하는 아이디어 참고(워드프레스는 자동발행도 가능함)

https://www.youtube.com/watch?v=SNYGDAvEsvQ

자, 이제 다음 글은 해당 내용을 바탕으로 카드뉴스를 만들고, 자동발행하는 것을 만들 예정입니다.

더불어 1단계에서 만든 bitly 축약 url을 넣어, 블로그 포스팅 하단, 트위터(현 엑스)에 url을 첨부하여 발행하는 단계까지 추가할 예정입니다. (인스타는 본문에 url 넣어도 안열림.. 이건 그냥 프로필링크에 한번 적용하는 걸로..!) 혹은 댓글 자동화 할 때 축약url 쓰면 좋을 것 같습니다.

7
3개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요