
회의록 정리 웹앱, 붙여넣으면 핵심과 할 일이 나뉜다
회의록을 읽으며 결정 사항과 담당 업무를 다시 옮겨 적고 있다면, 입력창 하나짜리 웹앱으로 이 과정을 줄일 수 있습니다. 회의 내용을 붙여넣고 버튼을 누르면 인공지능이 핵심 내용, 결정 사항, 할 일을 정해진 형식으로 나눠 줍니다. 이 글에서는 코딩이 처음인 분도 app.py 파일 하나로 화면을 만들고, 어디까지 직접 확인해야 하는지까지 따라갑니다.
30초 요약
- Streamlit으로 회의록 입력창과 정리 버튼을 만듭니다.
- OpenAI의 Responses API에 출력 형식을 구체적으로 지시합니다.
- 결과는 초안으로 보고 담당자·기한·결정 사항을 원문과 대조합니다.
- API 키는 코드에 적지 않고 환경 변수에 둡니다.
이걸 만들면 무엇이 달라질까요?
기존에는 회의록을 처음부터 다시 읽고, 핵심 문장과 할 일을 별도 문서로 복사해야 했습니다. 웹앱을 만들면 같은 원문을 입력창에 붙여넣고 정리된 초안을 한 화면에서 받습니다. 서류 더미에서 색깔별 포스트잇을 대신 붙여 주는 보조자와 비슷합니다.
아래는 이 글에서 만들 화면의 예시 데이터입니다. 실제로 작동하는 버튼이나 업로드 화면이 아니라, 완성 뒤 어떤 결과를 보게 되는지 보여 주는 정적 미리보기입니다.
예시 화면 · 회의 정리 도우미
회의록을 붙여넣으면 할 일이 나뉩니다
입력 · 예시 데이터
민수: 금요일까지 소개 자료 초안을 작성하겠습니다. 지연: 다음 회의는 9월 22일 오전 10시로 잡을게요. 제품 이름은 ‘모아’로 결정했습니다.
정리 결과 · 예시 데이터
핵심: 소개 자료 준비와 다음 회의 일정을 논의함
결정: 제품 이름은 ‘모아’
할 일: 민수 · 소개 자료 초안 · 금요일까지

AI가 문장을 요약해 주더라도 업무 자체를 대신 책임지지는 않습니다. 이 앱의 목표는 완벽한 확정본이 아니라, 사람이 빠르게 검토할 수 있는 첫 초안을 만드는 것입니다.
어떤 구조로 움직이나요?
흐름은 세 칸이면 충분합니다. 사용자가 회의록을 넣으면 Streamlit이 입력값을 받고, Python 코드가 그 내용을 OpenAI API로 보낸 뒤, 돌아온 텍스트를 화면에 표시합니다.
API(Application Programming Interface)는 서로 다른 프로그램이 정해진 방식으로 요청과 답을 주고받는 창구입니다. 식당에서 주문서를 주방에 전달하고 완성된 메뉴를 받아 오는 과정으로 생각하면 쉽습니다.

| 단계 | 웹앱이 하는 일 | 사람이 확인할 일 |
|---|---|---|
| 입력 | 회의록 텍스트 받기 | 개인정보와 기밀을 보내도 되는지 판단 |
| 정리 | 핵심·결정·할 일 형식으로 요청 | 담당자와 기한이 원문에 있는지 대조 |
| 출력 | 결과를 화면에 표시 | 틀린 내용 삭제·수정 |
Streamlit 공식 문서 기준 st.text_area는 여러 줄 텍스트 입력창을 만들고, st.button은 클릭 여부를 참 또는 거짓으로 돌려줍니다. OpenAI Python 공식 저장소는 Python 3.10 이상을 지원하며, 텍스트 생성의 기본 인터페이스로 Responses API를 안내합니다.
준비물은 어디에서 확인하나요?
이 글은 2026년 9월 15일 확인 기준으로 Python 3.10~3.14를 지원하는 Streamlit 문서와 OpenAI Python SDK 3.13.0 공식 릴리스를 참고했습니다. 버전은 바뀔 수 있으니 설치가 막히면 글 끝의 공식 링크에서 현재 요구 사항을 먼저 확인하세요.
준비물은 Python, 코드 편집기, 터미널, OpenAI API 키입니다. 터미널은 글자 명령으로 컴퓨터에 일을 시키는 창이고, 라이브러리는 다른 개발자가 만들어 둔 기능 묶음입니다.
API 호출에는 별도 사용 요금이 생길 수 있습니다. 모델과 입력 길이에 따라 조건이 달라지므로 특정 비용을 이 글에서 고정해 말하지 않습니다.
폴더를 만들고 필요한 도구를 설치해요
먼저 바탕화면이나 문서 폴더에 meeting-notes-app이라는 새 폴더를 만듭니다. VS Code에서 파일 → 폴더 열기를 눌러 그 폴더를 선택한 뒤, 상단 메뉴의 터미널 → 새 터미널을 엽니다.
macOS나 Linux라면 아래 네 줄을 위에서부터 한 줄씩 실행하세요. .venv는 이 프로젝트에 필요한 도구만 따로 담는 가상 상자입니다.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install streamlit==1.63.0 openai==3.13.0
python -m streamlit hello
Windows PowerShell에서는 활성화 명령만 다릅니다.
py -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install streamlit==1.63.0 openai==3.13.0
python -m streamlit hello
브라우저에 Streamlit 예제 화면이 뜨면 설치 성공입니다. 터미널이 다른 명령을 받지 않는 것처럼 보이면 Ctrl+C를 눌러 예제 서버를 멈추세요.
python을 찾을 수 없습니다가 보이면 Python 설치부터 확인해야 합니다. No module named streamlit은 대개 가상 환경을 켜지 않았거나 설치가 끝나지 않았다는 뜻이므로 활성화 명령과 설치 명령을 다시 실행합니다.
API 키는 코드 밖에 두세요
API 키는 서비스 이용 권한이 담긴 비밀번호와 같습니다. app.py 안에 직접 붙이거나 공개 저장소에 올리지 말고, 앱을 실행할 터미널의 환경 변수에 넣습니다.
macOS나 Linux에서는 여기에_내_API_키만 실제 키로 바꿉니다.
export OPENAI_API_KEY="여기에_내_API_키"
Windows PowerShell에서는 다음처럼 입력합니다.
$env:OPENAI_API_KEY="여기에_내_API_키"
이 설정은 현재 터미널 창에서만 쓸 수 있습니다. 창을 닫았다면 다시 설정해야 하며, 화면 공유나 오류 문의를 할 때도 키가 보이지 않는지 먼저 살펴보세요.
app.py에는 이 코드만 붙여넣습니다
VS Code 왼쪽 탐색기에서 새 파일을 만들고 이름을 정확히 app.py로 적습니다. 아래 코드 블록의 첫 줄 import streamlit as st부터 마지막 오류 문장까지 모두 복사해 파일에 붙여넣고 저장하세요.
import streamlit as st
from openai import OpenAI
st.set_page_config(page_title="회의 정리 도우미", page_icon="📝")
st.title("회의 정리 도우미")
st.caption("회의록을 붙여넣으면 핵심 내용, 결정 사항, 할 일을 나눠 줍니다.")
meeting_text = st.text_area(
"회의록",
height=280,
placeholder="가상의 회의록이나 외부 전송이 허용된 내용을 붙여넣으세요.",
)
if st.button("핵심과 할 일 정리하기", type="primary", width="stretch"):
if not meeting_text.strip():
st.warning("회의록을 먼저 붙여넣어 주세요.")
else:
try:
client = OpenAI()
with st.spinner("회의 내용을 정리하고 있습니다..."):
response = client.responses.create(
model="gpt-5.5",
instructions="""
당신은 회의록 정리 보조자입니다.
입력에 없는 사람, 날짜, 결정, 할 일을 만들지 마세요.
한국어로 아래 형식을 지키세요.
## 핵심 내용
- 최대 3개
## 결정 사항
- 없으면 '명확한 결정 없음'
## 할 일
- 담당자 | 할 일 | 기한
- 담당자나 기한이 없으면 '미정'으로 표시
## 확인이 필요한 점
- 모호하거나 서로 충돌하는 내용
""",
input=meeting_text,
)
st.subheader("정리 결과")
st.markdown(response.output_text)
except Exception as error:
st.error(f"요청을 처리하지 못했습니다: {error}")
이 코드는 입력 내용을 로컬 규칙만으로 요약하지 않습니다. 버튼을 누르면 회의록이 API 제공자에게 전송되고, 모델의 응답이 앱으로 돌아옵니다. 회사 자료에 적용하기 전에는 조직의 정보보호 정책과 API 사용 허용 범위를 확인해야 합니다.
앱은 어디에서 실행하나요?
app.py를 저장한 폴더의 터미널에서 다음 명령을 실행합니다.
python -m streamlit run app.py
브라우저에 회의 정리 도우미라는 제목, 큰 입력창, 파란 정리 버튼이 보이면 화면 구성은 성공입니다. 회의록을 넣지 않고 버튼을 눌렀을 때 회의록을 먼저 붙여넣어 주세요가 나오는지도 확인하세요.
첫 검증에는 실제 회사 회의록 대신 아래 가상 내용을 씁니다.
민수: 금요일까지 소개 자료 초안을 작성하겠습니다.
지연: 다음 회의는 9월 22일 오전 10시로 잡을게요.
모두 동의해서 제품 이름은 '모아'로 결정했습니다.
예산은 다음 회의에서 다시 논의합니다.
예상되는 출력은 제품 이름이 결정 사항으로, 민수의 자료 작성이 할 일로 나뉘는 형태입니다. 이 글에서는 API 호출을 실제 실행해 응답을 측정하지 않았으므로, 위 결과는 문서와 프롬프트에 근거한 예상 동작입니다.
첫 결과가 마음에 들지 않으면 무엇을 바꾸나요?
코드보다 프롬프트를 먼저 손보는 편이 쉽습니다. instructions 안의 문장이 앱의 정리 기준입니다. 예를 들어 회의에서 나온 질문도 따로 보고 싶다면 ## 남은 질문과 - 답이 정해지지 않은 질문만 작성을 형식 아래에 추가할 수 있습니다.
수정 프롬프트는 한 번에 한 조건만 바꿔야 결과 차이를 알아보기 쉽습니다. 담당자 이름이 자꾸 추측된다면 다음 문장을 추가하세요.
발언자와 담당자가 명시적으로 연결되지 않으면 담당자를 '미정'으로 표시하세요.
반대로 회의록에 발언자 구분과 날짜가 거의 없다면 모델을 바꾸는 것보다 입력 기록 방식을 먼저 고치는 편이 낫습니다. 재료에 이름표가 없으면 정리 보조자도 어느 서랍에 넣을지 헷갈립니다.
오류 문장은 다음 행동으로 번역하면 됩니다
오류 전체를 외우지 않아도 됩니다. 가장 먼저 볼 단어와 다음 행동을 짝지어 두면 초보자도 막힌 곳을 좁힐 수 있습니다.
| 화면에 보이는 단어 | 뜻 | 다음 행동 |
|---|---|---|
Authentication 또는 401 |
API 키 인증 실패 가능성 | 키 환경 변수를 다시 설정하고 터미널에서 앱 재실행 |
Rate limit 또는 429 |
요청 한도·사용 조건 관련 가능성 | 잠시 뒤 재시도하고 API 계정의 사용 한도 확인 |
model 관련 오류 |
모델 이름이나 계정 접근 조건 문제 가능성 | OpenAI 모델 문서에서 현재 사용 가능한 모델 확인 |
No module named |
라이브러리를 못 찾음 | 가상 환경 활성화 후 설치 명령 재실행 |
앱이 멈춘 듯 보여도 같은 버튼을 여러 번 누르면 요청이 중복될 수 있습니다. 먼저 터미널의 오류 한 건을 읽고, 키·모델·네트워크 중 어느 구간인지 확인하세요.
결과는 어떻게 검증해야 하나요?
좋은 요약보다 먼저 봐야 할 것은 원문에 없는 내용이 생겼는지입니다. 아래 네 항목만 원문과 나란히 대조해도 업무 전달 사고를 크게 줄이는 방향으로 검토할 수 있습니다.
- 결정 사항이 실제 합의 문장에 근거하는가
- 담당자와 할 일이 같은 발언에서 연결되는가
- 기한의 날짜와 요일이 원문과 같은가
- 논의 중인 안건을 확정된 결정처럼 쓰지 않았는가
AI 출력은 확정 회의록이 아니라 검토 대기 초안으로 표시하세요. 특히 인사 평가, 법률 검토, 고객 개인정보, 미공개 재무 정보처럼 민감한 내용은 조직 승인 없이 입력하지 않는 편이 안전합니다.
OpenAI는 API Platform을 포함한 비즈니스 데이터가 기본적으로 모델 훈련에 사용되지 않는다고 안내합니다. 그렇더라도 보관 조건, 조직 계약, 접근 권한은 환경마다 다를 수 있으므로 훈련에 쓰이지 않음을 아무 위험 없음으로 바꾸어 이해하면 안 됩니다.
언제 이 앱을 쓰고, 언제 다른 방법이 낫나요?
반복 회의의 메모를 일정한 네 칸으로 정리하고, 사람이 마지막 확인을 할 수 있는 팀에 잘 맞습니다. 코딩 연습용으로도 입력, API 요청, 화면 출력의 연결을 한 파일에서 볼 수 있어 부담이 작습니다.
정확한 법적 기록이나 감사 증빙처럼 문장 하나의 오류도 큰 문제가 되는 업무라면 자동 요약만으로 끝내면 안 됩니다. 사내 시스템 밖으로 자료를 보낼 수 없는 조직은 승인된 사내 모델이나 로컬 실행 도구를 검토해야 합니다.
다음 단계로는 결과 복사 버튼이나 다운로드 기능을 붙일 수 있습니다. 다만 첫 버전에서는 기능을 늘리기보다 가상 회의록 세 종류로 결정 없음, 담당자 미정, 날짜 포함이 제대로 구분되는지 먼저 확인하는 편이 낫습니다.
핵심 정리: 다섯 가지 질문과 답
Q. 이 웹앱이 대신 해 주는 일은 무엇인가요?
회의록을 받아 핵심 내용, 결정 사항, 할 일, 확인할 점으로 나눈 초안을 만듭니다. 최종 확정과 원문 대조는 사람이 맡습니다.
Q. 초보자도 화면을 만들 수 있나요?
Python 파일 하나와 Streamlit의 입력창·버튼 기능으로 시작할 수 있습니다. 설치 뒤 제목, 입력창, 버튼이 브라우저에 보이면 첫 단계가 끝난 것입니다.
Q. API 키는 어디에 적어야 하나요?
코드가 아니라 앱을 실행하는 터미널의 OPENAI_API_KEY 환경 변수에 둡니다. 키가 화면 공유나 공개 저장소에 노출되지 않도록 확인해야 합니다.
Q. AI가 만든 할 일을 그대로 공유해도 되나요?
그대로 확정하지 않는 편이 좋습니다. 담당자, 기한, 결정 여부가 원문과 같은지 확인한 뒤 공유해야 합니다.
Q. 첫 버전에 무엇을 더 만들면 좋나요?
기능 추가보다 서로 다른 가상 회의록으로 출력 형식을 검증하는 일이 먼저입니다. 그다음 실제 필요가 확인되면 복사나 다운로드 기능을 붙입니다.
출처
- Streamlit 설치 공식 문서: https://docs.streamlit.io/get-started/installation/command-line
- Streamlit
st.text_area공식 문서: https://docs.streamlit.io/develop/api-reference/widgets/st.text_area - Streamlit
st.button공식 문서: https://docs.streamlit.io/develop/api-reference/widgets/st.button - OpenAI Python 공식 저장소: https://github.com/openai/openai-python
- OpenAI Python 공식 릴리스: https://github.com/openai/openai-python/releases
- OpenAI 비즈니스 데이터 개인정보 안내: https://openai.com/enterprise-privacy/
'AI > AI 활용 기초' 카테고리의 다른 글
| 명단 비교 HTML, 엑셀 눈대중 대조를 누락자 목록으로 바꾸기 (0) | 2026.09.20 |
|---|---|
| 메모만 붙여넣으면 업무보고 표 완성, 단일 HTML 도구 만들기 (0) | 2026.09.19 |
| CSV 파일만 올리면 매출 차트가 보인다, 업무 대시보드 만들기 (0) | 2026.09.15 |
댓글