Community코딩 & 개발github.com

Spectature/dev-browser-local-profile-skill

Codex 스킬로, 지속적인 로컬 브라우저 프로필과 원격 디버깅을 사용하여 브라우저 자동화를 수행합니다.

dev-browser-local-profile-skill란 무엇인가요?

이 스킬은 브라우저 자동화가 매번 새로운 브라우저 상태를 시작하는 대신 장기 실행되는 로컬 브라우저 프로필에 연결해야 할 때 사용됩니다. 원래 `dev-browser` 프로젝트에서 파생되었지만, 현재는 독립 실행형으로 동작하며 별도의 `dev-browser` 설치 없이 Playwright-over-CDP 스크립트를 활용합니다. 핵심 규칙으로는 고정된 원격 디버깅 포트(기본값 9222) 사용, 사용자 상대적인 프로필 경로 유지, 기본적으로 새 탭 열기 등이 있습니다. 설치 후 `python scripts/start_chrome_debug.py`로 Chrome을 시작하고, `node scripts/browser_tools.mjs`로 URL 열기, 탭 목록 보기, 스크린샷 촬영 등의 작업을 수행할 수 있습니다. 또한 `node scripts/run_task.mjs`를 통해 사용자 정의 자동화 작업을 실행할 수 있으며, 해시 라우트 처리를 위한 2단계 탐색 전략을 제공합니다. 이 스킬은 지속적인 로그인 상태가 필요한 워크플로우에 최적화되어 있습니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add Spectature/dev-browser-local-profile-skill

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Dev Browser Local Profile

이 스킬은 브라우저 자동화가 새로운 브라우저 상태를 시작하는 대신 장기 실행되는 로컬 브라우저 프로필에 연결해야 할 때 사용하세요.

이 프로젝트는 dev-browser에서 가져와 수정되었지만, 현재 스킬은 독립적으로 실행되며 dev-browser가 필요하지 않습니다.

핵심 규칙

  • dev-browser 대신 번들된 Playwright-over-CDP 스크립트를 사용하세요.
  • 지속적인 브라우저 프로필이 로그인 상태의 진실 공급원(source of truth)이라고 가정합니다.
  • 고정된 원격 디버깅 포트를 선호합니다. 사용자가 다른 값을 지정하지 않는 한 기본값은 9222입니다.
  • 프로필 경로는 사용자 상대 경로로 유지하세요. 시스템별 사용자 이름을 하드코딩하지 마십시오.
  • 요청이 없는 한 사용자의 현재 탭을 대체하지 말고 기본적으로 새 탭을 여세요.

설정 워크플로우

1. 종속성 설치

스킬 디렉토리 내에서 한 번 실행하세요:

npm install

이 명령은 playwright-core만 설치합니다. 별도의 관리형 브라우저를 다운로드하지 않습니다.

2. 지속적인 프로필로 Chrome 또는 Chromium 시작

현재 사용자의 홈 디렉토리 아래에 고정된 사용자 데이터 디렉토리를 사용하세요:

  • Windows: Join-Path $env:USERPROFILE 'chrome-dev-browser-profile'
  • macOS/Linux: ~/chrome-dev-browser-profile

크로스 플랫폼 시작을 위해 번들된 런처 스크립트를 사용하세요:

python scripts/start_chrome_debug.py

유용한 옵션:

python scripts/start_chrome_debug.py --port 9222
python scripts/start_chrome_debug.py --profile-dir "C:\Users\name\chrome-dev-browser-profile"
python scripts/start_chrome_debug.py --chrome-path "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

3. 독립형 브라우저 도구 사용

새 탭에서 URL 열기:

node scripts/browser_tools.mjs open --url "http://localhost:9800/h5-bzzx/"

현재 탭 목록 보기:

node scripts/browser_tools.mjs list

스크린샷 촬영:

node scripts/browser_tools.mjs screenshot --url "http://localhost:9800/h5-bzzx/" --output "./page.png"

4. 사용자 정의 자동화 작업 실행

단순한 열기/목록/스크린샷 흐름보다 더 복잡한 작업을 위해 일반 작업 실행기를 사용하세요:

node scripts/run_task.mjs --task ./my-task.mjs --url "http://localhost:9800/h5-bzzx/" --task-arg mode=debug

작업 모듈은 기본 async 함수 또는 run이라는 이름의 함수를 내보내야 합니다.

예시:

export default async function ({ page, helpers, taskArgs }) {
  await page.waitForLoadState("domcontentloaded");
  return {
    title: await page.title(),
    url: page.url(),
    taskArgs
  };
}

해시 라우트 처리

해시 라우트 URL의 경우 json/new?... 등과 같은 직접 DevTools 열기 흐름에 의존하지 마세요. #... 부분이 생략될 수 있습니다.

해시 라우트의 경우 번들된 스크립트는 이미 2단계 탐색 전략을 사용합니다:

  1. 먼저 기본 URL을 엽니다.
  2. 그런 다음 페이지 내에서 window.location.href를 설정합니다.

예시:

node scripts/browser_tools.mjs open --url "http://localhost:9527/#/inspection/log/list?book_id=352"

확인 체크리스트

페이지를 연 후 성공을 명시적으로 확인하세요:

  • JSON 출력 url이 예상 경로와 일치하는지 확인합니다.
  • 페이지에 동적 제목이 있는 경우 title 또는 알려진 선택자를 확인합니다.
  • 작업이 조용히 실패한 것처럼 보이면 재시도 전에 node scripts/browser_tools.mjs list를 실행합니다.
  • 로그인이 누락된 경우 Chrome이 임시 프로필이 아닌 지속적인 프로필로 시작되었는지 확인합니다.

실패 모드

브라우저 도구가 연결할 수 없음

가능한 원인: Chrome이 --remote-debugging-port=<port>로 실행되지 않았습니다.

해결 방법:

  • python scripts/start_chrome_debug.py로 Chrome을 다시 시작합니다.
  • 포트가 스크립트에 전달된 포트와 일치하는지 확인합니다.

새 탭이 열렸지만 경로가 잘못됨

가능한 원인: 외부 도구에서 해시 라우트가 잘리거나 수동으로 단축된 URL입니다.

해결 방법:

  • 번들된 열기 명령을 사용합니다.
  • 전체 해시 라우트 URL을 전달합니다.

로그인 상태가 없음

가능한 원인: Chrome이 다른 프로필 디렉토리로 시작되었습니다.

해결 방법:

  • 지속적인 --user-data-dir로 Chrome을 다시 시작합니다.
  • 동일한 프로필 디렉토리를 일관되게 재사용합니다.

범위

이 스킬은 의도적으로 워크플로우에 초점을 맞춥니다. CDP를 통한 Playwright를 사용하여 지속적인 로컬 로그인 상태를 위한 독립형 브라우저 자동화 설정을 표준화합니다.

관련 스킬