반응형
그니_
삽질탐방기
그니_
  • 분류 전체보기 (24)
    • 개발 (15)
    • ETC (1)
    • 트러블슈팅 & 삽질기록 (7)
    • 성능개선 (1)

인기 글

최근 글

최근 댓글

태그

  • db
  • spring docker compose
  • chatgpt 정리
  • timeunit
  • chatgpt 기록 삭제
  • spring log
  • springboot
  • 마이크로소프트 ai tour
  • Database
  • index
  • chatgpt 채팅 삭제
  • easyrandom
  • Spring
  • GPT 플러그인
  • spring docker
  • chatgpt 확장 프로그램
  • 네트워크
  • chatgpt 히스토리 삭제
  • java
  • chatgpt 확장 추천
hELLO · Designed By 정상우.
그니_

삽질탐방기

개발

ChatGPT 채팅 삭제, 크롬 확장 프로그램으로 자동화하기

2025. 3. 28. 00:44
반응형

ChatGPT를 쓰다 보면 대화 기록이 계속 사이드바에 남게 됩니다. 삭제하려면 수동으로 하나씩 지워야 하고, 대화량이 많아질수록 꽤 번거로운 작업이 됩니다.

저는 ChatGPT를 자주 사용하는 편인데, 개인적으로 채팅 목록을 깔끔하게 정리하고 싶어서 직접 확장 프로그램을 만들어보기로 했습니다.

프론트엔드 쪽은 따로 경험이 없어서 처음부터 혼자 구현하긴 어려웠고, 기본적인 구조와 접근 방식은 ChatGPT에게 도움을 받아 시작했습니다.
그 후 실제 DOM 구조나 동작을 보면서 디버깅하며 필요한 부분을 수정해가며 완성한 형태입니다.

이름은 chatgpt-chat-remover입니다.

 

주요 기능

  • 전체 삭제: 기존 채팅 목록 전체를 선택해 한 번에 삭제할 수 있습니다.
  • 선택 삭제: 원하는 대화만 체크해서 개별 삭제할 수 있습니다.

참고: 이 확장 프로그램에서 사용하는 삭제 방식은 실제 데이터를 완전히 삭제하는 것이 아니라, ChatGPT 백엔드 API를 통해 is_visible: false로 설정하여 UI에서 해당 채팅을 숨기는 방식입니다.
이는 ChatGPT 자체의 기본 삭제 동작과 동일합니다.

 

작동 방식

  • content.js에서는 ChatGPT DOM 구조에 접근해 각 채팅 항목에 체크박스를 삽입하고, 상단에 컨트롤 버튼 UI를 추가합니다.
  • 선택된 채팅 ID들을 모아서 백엔드 API로 PATCH 요청을 보내 is_visible: false로 처리합니다.
  • accessToken은 script 태그 내부 문자열을 대상으로 JSON 파싱을 통해 추출합니다.
    (window.__reactRouterContext.streamController.enqueue(...) 내부 구조 사용)
  • 상태 저장은 window 객체의 플래그 변수(chatRemoverAllSelected, chatRemoverObserverInitialized)를 사용해 간단히 처리합니다.
  • MutationObserver를 사용해 ChatGPT의 SPA 구조에서도 UI가 바뀔 때마다 체크박스와 버튼이 다시 삽입되도록 구성했습니다.

 

동작 영상

 

 

 

개발 중 겪었던 어려움

1. CORS 우회 문제

ChatGPT 백엔드 API(https://chatgpt.com/backend-api/conversation/{id})에 직접 요청을 보내는 구조이기 때문에, 크롬 확장 프로그램의 권한 범위에서 안전하게 동작하도록 구성해야 했습니다.

2. accessToken 추출

기존 웹 서비스처럼 토큰이 쿠키나 스토리지에 저장되어 있지 않고, React 내부 함수의 인자로 넘어오기 때문에 해당 스크립트에서 문자열을 직접 파싱해야 했습니다. 이 과정에서 JSON이 이중으로 인코딩되어 있어, 디버깅하며 처리 순서를 하나씩 정리해 나갔습니다.

 

향후 계획

더 이상의 기능 추가는 예정되어 있지 않습니다.
현재 상태에서 필요한 기능은 모두 구현되어 있고, 실제 사용 환경에서도 목적에 부합하기 때문입니다.

 

마무리

ChatGPT 채팅을 주기적으로 정리하거나, 불필요한 대화 목록을 깔끔하게 지우고 싶은 분들에게는 꽤 실용적인 도구입니다.

현재 이 확장 프로그램은 Chrome Web Store에 등록 완료 후 검토 중입니다.
심사가 완료되면 설치 링크도 함께 업데이트할 예정입니다.

배포 전이긴 하지만, 로컬에서 크롬 확장으로 직접 설치해서 사용하기에도 가볍고 직관적인 구조입니다.
필요하신 분들은 직접 적용해보시거나, 내부 코드 참고하셔도 좋을 것 같습니다.

 

소스코드는 아래 GitHub에서 확인하실 수 있습니다.
👉 https://github.com/kgggh/chatgpt-chat-remover

 

GitHub - kgggh/chatgpt-chat-remover: ChatGPT 채팅 기록을 손쉽게 삭제할 수 있는 크롬 확장 프로그램

ChatGPT 채팅 기록을 손쉽게 삭제할 수 있는 크롬 확장 프로그램. Contribute to kgggh/chatgpt-chat-remover development by creating an account on GitHub.

github.com

 

 

 

📌 업데이트 (2025.3.31 월)
해당 확장 프로그램이 오늘부로 크롬 웹 스토어에 정식 등록되어, 이제 누구나 다운로드 후 바로 사용하실 수 있습니다!
👉 Chrome 웹 스토어에서 설치하기

 

ChatGPT Chat Remover - Chrome 웹 스토어

Select and delete multiple chats in ChatGPT.

chromewebstore.google.com

 

반응형
저작자표시 (새창열림)

'개발' 카테고리의 다른 글

Java에서 Thread.UncaughtExceptionHandler 활용하기  (0) 2025.02.27
[spring] OpenFeign 로그 사용자화  (0) 2023.08.30
spring-boot docker-compose 사용법  (1) 2023.05.14
Easy Random을 활용한 Unit Test  (0) 2023.03.08
[후기] NHN forward 2022  (0) 2022.11.26
    '개발' 카테고리의 다른 글
    • Java에서 Thread.UncaughtExceptionHandler 활용하기
    • [spring] OpenFeign 로그 사용자화
    • spring-boot docker-compose 사용법
    • Easy Random을 활용한 Unit Test
    그니_
    그니_
    머리속에서만 존재하는 내용을 글로 정리

    티스토리툴바