CLOVA Studio 운영자 Posted August 21 공유하기 Posted August 21 업무 환경에서 보고서 작성은 필수적인 업무 중 하나입니다. 하지만 많은 직장인들에게 보고서 작성은 시간이 많이 소요되고 부담스러운 작업으로 여겨지기도 합니다. 이번 포스팅에서는 하이퍼클로바X를 Google Slides와 연동하여 보고서 작성 프로세스를 개선하는 방법을 소개하고자 합니다. 보고서 작성 프롬프트 클로바 스튜디오의 플레이그라운드를 이용해 보고서 작성을 도와주는 프롬프트를 만들었습니다. "페이지 제목:"과 "내용:" prefix를 사용해 각 섹션을 구분하도록 구성했습니다. 이러한 구조는 Google Slides와 연동 시 각 슬라이드를 자동으로 채울 수 있어 유용합니다. Apps Script 작성 Chat Completions API를 Google Sheets에 연동하기 위해 Apps Script를 활용합니다. Google Sheets 상단 메뉴에서 '확장 프로그램'을 클릭한 후 'Apps Script'를 선택하면 새 탭에서 Apps Script 편집기가 열립니다. 이제 Google Sheets Apps Script 편집기에서 실제 스크립트를 작성해 보겠습니다. Google Slides의 사용자 인터페이스에 새 메뉴를 추가하는 onOpen 함수는 Google Slides가 실행되면 자동으로 동작하여 '사용자 정의 메뉴'를 만들고, 그 안에 '키워드 기반 보고서 생성'이라는 항목을 추가합니다. 해당 항목을 클릭하면 createReportFromKeyword 함수가 실행되도록 설정되어 있습니다. function onOpen() { SlidesApp.getUi() .createMenu('커스텀 메뉴') .addItem('키워드로 보고서 생성', 'createReportFromKeyword') .addToUi(); } createReportFromKeyword 함수는 보고서 자동 생성의 핵심 기능을 담당합니다. 먼저 사용자로부터 보고서 주제에 해당하는 키워드를 입력받습니다. 이후 입력된 키워드를 기반으로 CLOVA Studio API를 호출하여 보고서 내용을 생성합니다. 첫 번째 슬라이드는 입력된 키워드를 제목으로 하며, API 응답에서 받은 내용을 '페이지 제목:'과 '내용:' 구분자를 기준으로 분리하여 각각의 슬라이드로 구성합니다. 각 슬라이드는 제목과 본문 형식으로 이루어져 있으며, API 응답의 내용이 자동으로 채워집니다. 모든 과정이 완료되면 사용자에게 보고서 생성이 완료되었음을 알리는 알림을 표시합니다. 이 함수를 통해 사용자는 키워드 입력만으로 구조화된 보고서를 자동으로 생성할 수 있습니다. function createReportFromKeyword() { var ui = SlidesApp.getUi(); var keyword = ui.prompt('키워드 입력', '보고서 주제 키워드를 입력하세요:', ui.ButtonSet.OK_CANCEL).getResponseText(); if (keyword === '') return; var response = callClovaStudioAPI(keyword); if (!response) return; try { var parsedResponse = JSON.parse(response); Logger.log('파싱된 응답: ' + JSON.stringify(parsedResponse)); var content = parsedResponse.result.message.content; Logger.log('콘텐츠: ' + content); var presentation = SlidesApp.getActivePresentation(); Logger.log('현재 프레젠테이션 ID: ' + presentation.getId()); // 기존 슬라이드 모두 제거 var slides = presentation.getSlides(); for (var i = slides.length - 1; i >= 0; i--) { presentation.getSlides()[i].remove(); } // 첫 번째 페이지 생성 (키워드를 제목으로) var firstSlide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY); firstSlide.getShapes().forEach(function(shape) { if (shape.getPlaceholderType() === SlidesApp.PlaceholderType.TITLE) { shape.getText().setText(keyword); } else if (shape.getPlaceholderType() === SlidesApp.PlaceholderType.BODY) { shape.getText().setText("'" + keyword + "'에 대한 내용 보고서"); } }); var pages = content.split('페이지 제목:').filter(Boolean); Logger.log('페이지 수: ' + pages.length); pages.forEach(function(page, index) { var parts = page.split('내용:'); if (parts.length === 2) { var pageTitle = parts[0].trim(); var pageContent = parts[1].trim(); Logger.log('슬라이드 ' + (index + 2) + ' - 제목: ' + pageTitle + ', 내용: ' + pageContent); var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY); slide.getShapes().forEach(function(shape) { if (shape.getPlaceholderType() === SlidesApp.PlaceholderType.TITLE) { shape.getText().setText(pageTitle); } else if (shape.getPlaceholderType() === SlidesApp.PlaceholderType.BODY) { shape.getText().setText(pageContent); } }); } }); ui.alert(keyword + '에 대한 보고서가 현재 프레젠테이션에 추가되었습니다.'); } catch (error) { Logger.log('오류 발생: ' + error); ui.alert('보고서 생성 실패: ' + error); } } callClovaStudioAPI 함수는 사용자가 입력한 키워드를 기반으로 Chat Completions API 요청을 구성하고 전송합니다. API KEY와 APIGW KEY는 클로바 스튜디오에서 생성한 인증 정보를 입력해 주세요. 응답 코드를 확인하여 정상 응답(200)인 경우 응답 본문을 반환하고, 그렇지 않은 경우 오류 처리합니다. function callClovaStudioAPI(keyword) { var url = 'https://clovastudio.stream.ntruss.com/testapp/v1/chat-completions/HCX-003'; var apiKey = '{API_KEY}'; // API Key를 입력합니다. var apigwKey = '{APIGW_KEY}'; // APIGW API Key를 입력합니다. var requestId = '{requestID}'; // request ID입니다. var payload = { "messages": [ { "role": "system", "content": "- 키워드를 입력하면 보고서를 작성합니다.\n- 각 페이지의 제목과 내용을 작성합니다.\n- 페이지 제목은 3개 이내로 구성합니다.\n###\n페이지 제목:\n내용:" }, { "role": "user", "content": keyword } ], "topP": 0.8, "topK": 0, "maxTokens": 500, "temperature": 0.5, "repeatPenalty": 1.2, "stopBefore": [], "includeAiFilters": true, "seed": 0 }; var options = { 'method': 'post', 'contentType': 'application/json', 'payload': JSON.stringify(payload), 'headers': { 'X-NCP-CLOVASTUDIO-API-KEY': apiKey, 'X-NCP-APIGW-API-KEY': apigwKey, 'X-NCP-CLOVASTUDIO-REQUEST-ID': requestId, 'Content-Type': 'application/json', 'Accept': 'application/json' }, 'muteHttpExceptions': true }; try { var response = UrlFetchApp.fetch(url, options); var responseCode = response.getResponseCode(); var responseBody = response.getContentText(); if (responseCode === 200) { Logger.log('API 응답: ' + responseBody); return responseBody; } else { throw new Error('API 응답 오류: ' + responseCode + ' - ' + responseBody); } } catch (error) { Logger.log('API 호출 실패: ' + error); SlidesApp.getUi().alert('API 호출 실패: ' + error); return null; } } 스크립트 작성이 끝나면 상단의 저장 버튼을 눌러 변경사항을 저장해 주세요. 저장 후에는 '실행' 버튼을 클릭하여 스크립트가 정상적으로 동작하는지 확인할 수 있습니다. 아래와 같이 출력된다면 문제없이 정상 출력되는 것을 의미합니다. 처음 실행할 때 권한 요청 팝업이 나타날 수 있는데, '허용'을 클릭하여 필요한 권한을 부여해 주세요. 보고서 자동 생성하기 Google Slides의 메뉴 우측 상단을 확인합니다. 여기에 새롭게 '커스텀 메뉴'가 추가된 것을 볼 수 있습니다. '커스텀 메뉴'를 선택한 뒤 '키워드로 보고서 생성' 버튼을 클릭합니다. 이후 보고서 주제 키워드를 입력하라는 팝업이 나타나면 원하는 키워드를 입력하면 됩니다. 키워드 입력 후 스크립트가 실행되면 하이퍼클로바X가 보고서 내용을 생성하기 시작합니다. 이 과정은 보고서의 복잡도와 길이에 따라 시간이 소요될 수 있으니 잠시 기다려야 합니다. 작업이 완료되면 알림 팝업이 뜨고, 확인을 누르면 자동으로 생성된 보고서를 확인할 수 있습니다. 확인을 누르면 이렇게 보고서가 생성됩니다. 보고서 완성하기 초기에 생성된 보고서는 기본적인 내용만 담고 있어 단조로울 수 있습니다. 하지만 Google Slides의 기능을 활용해 보고서를 전문적이고 시각적으로 매력적으로 만들 수 있습니다. 먼저 모든 슬라이드의 썸네일을 선택한 후 'Apply layout' 기능을 사용해 원하는 레이아웃을 적용합니다. 이를 통해 보고서의 구조가 정돈되고 일관성 있게 변합니다. 레이아웃 적용 후에는 'Change theme' 버튼을 눌러 적절한 테마를 선택합니다. 테마 적용은 보고서에 통일된 색상과 폰트를 제공해 전문적인 느낌을 더해줍니다. 이러한 과정을 거치면 처음 자동 생성된 기본적인 내용이 보다 세련되고 완성도 높은 프레젠테이션으로 탈바꿈합니다. 글을 마치며 하이퍼클로바X의 강점은 이러한 도구와의 연동을 통해 다양한 분야에서 활용될 수 있다는 점입니다. 클로바 스튜디오에서 적절한 프롬프트를 설정하면 다양한 서비스와 손쉽게 연동해 업무 효율을 크게 높일 수 있습니다. 이는 개인뿐만 아니라 기업의 생산성 향상에도 큰 도움이 될 것입니다. 앞으로 하이퍼클로바X가 어떻게 발전하고 더 많은 영역에서 활용될지 그 잠재력이 무궁무진해 보입니다. 링크 복사 다른 사이트에 공유하기 More sharing options...
Recommended Posts
게시글 및 댓글을 작성하려면 로그인 해주세요.
로그인