윤누리
윤누리
Admin
🧙 AI 위자드
🎻 루키 파트너
🌈 지피터스금손
🚀 SNS 챌린지 달성자

지피터스 AI 댓글 비서 개발기 (wt Cursor, Streamlit)

소개

최근에 이재엽_miniLAB 님께서 저희 지피터스 직원들이 댓글을 열심히 달아주니 넘 좋다는 이야기를 해주셨더라고요.. 그래서 최대한 더 분발해보고자 그래서 "AI 댓글 비서를 만들어 보자!"라는 아이디어를 떠올렸습니다.
단순히 AI가 댓글을 대신 다는 것이 아니라, 더 많은 댓글을 효율적으로 작성해 소통의 가치를 높이는 역할을 목표로 했습니다.

(아직은 프로토타입... 으로 단순히 댓글을 생성하고 자동 업로드되고 있지만 - 차차 개선해보려고요 )


스터디 리더 잔마왕님 최고! 👑✨ 이런 시스템이 가능하도록 영감을 주셨습니다.

한국어 텍스트가 포함된 한국어 웹사이트 ��스크린샷

진행 방법

1. AI툴

  • AI 댓글 생성: Anthropic Claude API

  • 코드 작성: Cursor

  • UI 제작: Streamlit

2. 구현 과정

(1) 게시글 크롤링

  • 게시글 순차 크롤링:
    크롬 개발자 도구에서 XPath를 추출하여 게시판의 첫 번째 글부터 데이터를 가져왔습니다.

  • 댓글 영역 탐색:
    스크롤을 최하단으로 내린 뒤 댓글 입력 영역을 찾는 방식으로 구현했습니다.
    다만 영역이 보이지 않을 경우에는 스크롤을 위로 다시 올려서 탐색하도록 로직을 보완했죠.

생성된 댓글 2개 중 하나를 선택하면 자동으로 스크롤이 내려가고 댓글이 달립니다.

(2) 댓글 생성

  • AI를 활용한 댓글 생성:
    Claude API를 활용하여 게시글 내용에 맞는 댓글을 생성했습니다.
    댓글은 감정을 담아 자연스러움을 강조했습니다. (아직 더 고도화 해야함...)

 def generate_comments(self, title, content, is_regeneration=False):
        if not is_regeneration:
            prompt = f"""다음 게시글에 댓글 2개를 생성해주세요. 
            게시글 제목: {title}
            게시글 내용: {content}
            
            다음 조건을 지켜주세요:
            1. 게시글에서 직접 인용한 구체적인 문구나 키워드를 반드시 포함
            2. 다음과 같은 요소들을 자연스럽게 섞어서 사용:
               - 'ㅎㅎ', '...!', 'ㅠㅠ' 같은 감정 표현
               - '맞아요~', '그러게요...' 같은 공감 표현
               - 말줄임표(...) 활용
            3. 각 댓글은 1-2문장으로 짧게
            4. 존댓말 사용하되 너무 형식적이지 않게
            5. 1번 댓글은 긍정적으로, 2번 댓글은 긍정과 함께 제안점도 추가해서 생성해줘.
            """
        else:
            prompt = f"""다음 게시글에 새로운 댓글 2개를 생성해주세요.
            게시글 제목: {title}
            게시글 내용: {content}
            
            다음 조건을 지켜주세요:
            1. 게시글의 핵심 워크플로우나 아이디어에 대해 놀라움/감탄을 표현
            2. 다음 요소들을 자연스럽게 섞어서 사용:
               - 이모지 적극 활용 (예: 👀, 👍, ✨, 🎉)
               - '와우', '대박', '신기하네요' 같은 감탄 표현
               - '이런 방법이...!' 같은 놀람 표현
            3. 각 댓글은 1-2문장으로 짧게
            4. 친근한 존댓말 사용
            5. 1번 댓글은 순수한 감탄/칭찬으로, 2번 댓글은 감탄하면서 다른 아이디어도 제안
            """

        response = self.anthropic.messages.create(
            model="claude-3-sonnet-20240229",
            max_tokens=3000,
            temperature=0.2,
            messages=[{"role": "user", "content": prompt}]
        )

(3) 중복 방지와 로그인 유지

  • 중복 방지: 이미 스크랩핑한 게시글은 JSON 파일에 저장해 중복 작업을 피했습니다.

  • 로그인 유지: 매번 로그인해야 하는 불편함을 해결하기 위해 쿠키를 저장 및 불러오는 기능을 추가했습니다.

(4) Streamlit으로 UI 제작

  • UI 제작 과정의 삽질(!):
    크롤링 상태를 실시간으로 확인하고, 댓글 작성 여부를 선택할 수 있는 UI를 만들었지만, 데이터를 저장하는 로직에서 꽤나 헤맸습니다. 지금 대부분 동작하긴 하는데 댓글 재생성 기능이 안 돌아가서 애를 먹고 있네요 😭


결과와 배운 점

  • AI 댓글 생성은 단순히 댓글을 대신 다는 게 아니라, 더 많은 소통을 효율적으로 가능하게 해주는 도구라는 점에서 의미가 있습니다. 역시 사람이 한땀한땀 써준 댓글과는 정성스러운 부분 차이가 많이 납니다..

  • 한 번에 여러 이슈를 해결하려고 덤비다가 오히려 코드가 꼬여서 여러번 다시 시도를 했는데요, 역시 하나하나씩 차근차근 보완하는게 중요한 것 같아요.

  • 잔마왕님과의 스터디에서 공유하며 피드백 받고 더 도움이 되는 댓글을 달아주려고 합니다! 🙌

그리고 이 게시글은 제가 만든 '지피터스 게시글 서포트 GPT'로 초안을 생성했습니다. 대략적인 내용을 넣으면 구조를 잘 잡아줘서 편하긴하네요! (챗봇 링크)

소소한 꿀팁 - 처음에는 좀 딱딱하게 게시글을 써주는데 재밌고 흥미롭게 써달라고 하면 잘 바꿔줍니다.

5
4개의 답글

👉 이 게시글도 읽어보세요