티스토리 뷰

Bing Image Creator에서 "call ChatGPT using applescript"로 생성

개요

ChatGPT를 잘 쓰고 있는데 필요할 때마다 브라우저를 실행하고 웹페이지를 찾아가는게 번거로웠다. 원하는 바를 정리해서 ChatGPT의 GPT-4의 도움을 받아 구현해보았다.

목표

  • 단축키를 눌려서 구글 크롬에서 ChatGPT(https://chat.openai.com) 페이지가 열려야 한다. 구글 크롬이 활성화되고 크롬 내에서는 ChatGPT 웹페이지 탭이 활성화 되어야 한다.
    1. 구글 크롬이 실행되지 않았다면 실행하여 열어주고
    2. 구글 크롬이 실행되긴 했는데 ChatGPT 페이지가 열려있지 않다면 새로운 탭에서 열어주고
    3. 이미 ChatGPT 페이지가 열려있다면 해당 탭이 활성화되어야 한다.
  • 이때, 구글 크롬창은 디스플레이의 왼쪽 절반에 위치하도록 한다.
  • 입력창에 포커싱이 되도록 자바스크립트까지 넣을 수도 있으나 다음 이유로 넣지 않았다.
    • 애플 이벤트내의 자바스크립트를 허용하도록 크롬 설정까지 건드려야해서 과하다.
    • 입력창이 아니라 새로운 대화(New Chat)을 해야할 경우도 있다.

입력창, New Chat에 대한 부분은 ChatGPT 자체의 단축키로 해결하면 되겠다.

구현

Automator

MacOS의 Automator를 사용하면 된다.

1. Automator를 실행하고 새로운 Quict Action를 선택한다.

2. Workflow receivesno input 을 선택하고, Run AppleScript를 검색해서 가운데로 끌어옮긴다. 그러면 가운데에 기본 AppleScript가 생성된 창이 나온다.

3. 스크립트에 다음을 복사하여 붙여넣는다. 개발자라면 코멘트를 보면 대략의 흐름을 이해할 것이다.

# 대상 URL을 상수로 설정
set TARGET_URL to "<https://chat.openai.com>"

# Google Chrome 애플리케이션을 조작
tell application "Google Chrome"
    
    # Google Chrome이 실행 중인지 확인
    if not (exists window 1) then
        # 실행 중이지 않으면 새 창을 생성하고 대상 URL로 이동
        make new window
        set URL of active tab of window 1 to TARGET_URL
    else
        # 해당 URL을 가진 탭을 찾기 위한 변수 초기화
        set found to false
        set theTabIndex to 0
        set theWindowIndex to 0
        
        # 모든 창에서 대상 URL을 포함하는 탭을 검색
        repeat with aWindow in windows
            set theWindowIndex to theWindowIndex + 1
            repeat with aTab in tabs of aWindow
                set theTabIndex to theTabIndex + 1
                if (URL of aTab contains TARGET_URL) then
                    set found to true
                    exit repeat
                end if
            end repeat
            if found then exit repeat
            set theTabIndex to 0
        end repeat
        
        # 탭을 찾은 경우 활성화, 찾지 못한 경우 새 탭 생성
        if found then
            set active tab index of window theWindowIndex to theTabIndex
            set index of window theWindowIndex to 1
        else
            make new tab at end of tabs of window 1 with properties {URL:TARGET_URL}
        end if
    end if
    activate
end tell

# 화면의 해상도 정보를 Finder 애플리케이션을 통해 가져옴
tell application "Finder"
    set screenBounds to bounds of window of desktop
end tell
set screenWidth to item 3 of screenBounds
set screenHeight to item 4 of screenBounds

# 화면의 폭을 절반으로 계산
set halfScreenWidth to screenWidth / 2

# Google Chrome의 창 크기를 조절하여 왼쪽 절반에 표시
tell application "Google Chrome"
    set bounds of front window to {0, 0, halfScreenWidth, screenHeight}
    activate
end tell

4. ChatGPT라고 이름 붙여서 저장하자(이름은 무엇이든 상관없다)

   <참고> 이 파일은 ~/Library/Services/ChatGPT.workflow 라는 이름으로 저장된다.

단축키 설정

MacOS의 Settings >> Keyboard >> Keyboard ShortCuts 로 들어간 다음, Services >> General을 확장해보면 방금 만든 ChatGPT가 보일 것이다. 이를 체크하여 활성화하고, 원하는 단축키를 할당하자. 나는 Ctrl + Option + Space를 할당하였다(IntelliJ와 중복이 되어 IntelliJ 단축키는 비활성화 하였다)

정리

이제 언제든 ChatGPT가 필요하면 Ctrl + Option + Space 키만 누르면 ChatGPT가 뜨고, 새로운 채팅을 시작하고 싶다면 Cmd + Shift + O , 기존 채팅의 입력창으로 가고 싶다면 Shift + Esc를 누르면 된다.

 

만든 기능이 편리한 점도 있지만, 무엇을 어떻게 만들지만 잘 기획하면 ChatGPT의 도움을 받아 (약간의 시행착오와 오류수정만 거치면) 이렇게 만들어낼 수 있다는 것이 즐거운 경험이었다. ChatGPT가 없었다면 Automator를 사용할 생각도 못했을 것이고, AppleScript가 있다는 것 자체도 몰랐을 것이다.

반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함