사용자 스크립트
기본 제공 스크립트는 일반적인 흐름을 대부분 다룹니다. 그것으로 부족할 때 — 순서를 바꾸고 싶을 때, 기본 스크립트가 건드리지 않는 화면을 다뤄야 할 때, TikTok이나 Instagram이 아닌 앱을 자동화해야 할 때 — 원하는 언어로 직접 작성하면 TikMatrix가 기기를 넘겨줍니다.
요구 사항
사용자 스크립트는 Pro, Team, Business 플랜에서만 사용할 수 있습니다. Starter 플랜에서는 사용할 수 없습니다.
플랜의 기기 수가 곧 동시 실행 한도입니다. Pro 플랜(20대)은 기본 작업이든 사용자 스크립트든, 혹은 둘을 섞어서든 동시에 20대를 제어할 수 있습니다.
실행 방식 두 가지
독립 실행
프로그램은 여러분이 직접 실행합니다. TikMatrix는 기기만 빌려줍니다.
from tikmatrix import TikMatrix
client = TikMatrix()
for device in client.devices():
if device["busy"]:
continue
with client.device(device["serial"], label="my crawler") as d:
d.press("home")
print(d.info())
일회성 작업, 데이터 수집, 자체 스케줄러로 돌리고 싶은 작업에 적합합니다.
관리형 실행
프로그램을 TikMatrix에 등록하면 일반 작업과 똑같아집니다. 작업 큐, 플랜별 동시 실행 제한, 자동 재시도, 작업 로그, 스케줄 템플릿을 그대로 사 용할 수 있습니다. TikMatrix는 프로그램을 시작하기 전에 기기를 임대하고 임대 ID를 환경 변수로 전달합니다.
from tikmatrix import TikMatrix
with TikMatrix.from_env() as d: # 기기는 이미 임대된 상태
d.click(text="Log in")
print("done") # 이 줄은 작업 로그에 남습니다
반복 실행, 예약 실행, 여러 기기에 걸친 실행에 적합합니다.
어느 쪽을 고를까
| 독립 실행 | 관리형 실행 | |
|---|---|---|
| 실행 주체 | 여러분 | TikMatrix 작업 큐 |
| 기기 임대 | 직접 획득 | 시작 시점에 이미 보유 |
| 재시도·예약·작업 로그 | 직접 구현 | 기본 제공 |
| 여러 기기에서 실행 | 직접 반복문 작성 | 기기당 작업 하나씩 병렬 배포 |
| 적합한 용도 | 탐색, 크롤러, 일회성 작업 | 반복하고 싶은 모든 것 |
먼저 독립 실행으로 흐름을 다듬은 뒤 같은 파일을 관리형 스크립트로 등록해도 됩니다. 바뀌는 건 TikMatrix.from_env() 한 줄뿐입니다.
시작하기
1. 클라이언트 라이브러리 설치
pip install requests
그런 다음 SDK 디렉터리의 tikmatrix.py를 스크립트 옆에 복사합니다. 이 라이브러리는 단일 파일이며 다른 의존성이 없습니다.
꼭 쓸 필요는 없습니다. API는 HTTP 위의 평범한 JSON이며, 원시 엔드포인트는 아래에 정리해 두었습니다.
2. 스크립트 작성
from tikmatrix import TikMatrix
client = TikMatrix()
with client.device("192.168.1.5:5555") as d:
d.press("home")
d.adb("shell", "am", "start", "-a", "android.settings.SETTINGS")
d.wait_for(text="Settings", timeout=15)
d.screenshot("settings.png")
TikMatrix를 켜 두고 기기를 연결한 상태에서 실행하세요. 기기 정보 딕셔너리가 출력되면 연결은 정상입니다.
3. 등록하기 (관리형 전용)
기기 → 사용자 스크립트 → 스크립트 추가 로 이동합니다.
| 항목 | 의미 |
|---|---|
| 이름 | 스크립트 목록과 작업 로그에 표시됩니다 |
| 명령 | 실행할 프로그램 줄. 예: python C:/scripts/my_flow.py |
| 작업 디렉터리 | 선택 사항. 프로그램이 시작될 위치 |
| 플랫폼 | 아래 플랫폼 모드 참고 |
| 타임아웃 | 몇 초 후 스크립트를 종료하고 작업을 실패 처리할지. 기본값 1800 |
| 추가 환경 변수 | 선택 사항. 프로그램 환경에 병합되는 JSON 객체 |
| 활성화 | 삭제하지 않고 끌 수 있습니다. 비활성 스크립트는 배포되지 않습니다 |
이후 스크립트 행의 ▶ 를 누르고 기기를 고르면 기본 스크립트와 완전히 동일하게 실행됩니다.
AI 어시스턴트는 평범한 말로 된 설명으로 사용자 스크립트를 작성하고 한 번에 등록까지 해줍니다. 디스크에 무언가 기록되기 전에 파일 전체를 보여줍니다.
기기 임대
한 기기는 한 번에 하나만 제어할 수 있습니다. 임대는 TikMatrix에게 "이 기기는 사용 중"이라고 알리는 것이며, 그 결과:
- 작업 큐가 같은 화면에 작업을 배포하지 않고,
- 여러분의 JSON-RPC 호출이 기본 스크립트와 똑같이 에이전트 상태를 보고하므로, 워치독은 침묵하는 에이전트가 아니라 바쁜 에이전트를 보게 됩니다.
임대는 플랜의 기기 슬롯도 하나 차지합니다.
임대는 만료됩니다 — 기본 120초, 최대 600초. Python 라이브러리는 백그라운드 스레드에서 자동 갱신하고 with 블록이 끝날 때 해제하므로, 스크립트가 죽어도 앱을 재시작할 때까지 붙잡고 있는 대신 몇 초 안에 기기가 풀립니다. API를 직접 호출한다면 하트비트를 직접 보내야 합니다.
살아 있는 모든 임대는 설정 → Developer API → 활성 기기 세션 에서 확인하고 강제 해제할 수 있습니다.
플랫폼 모드
등록된 스크립트는 대상 플랫폼을 선언합니다.
Generic — 기기가 그대로 넘어옵니다. 앱을 실행하지 않고, 계정을 전환하지 않으며, 입력기를 확인하지도 않고, 끝난 뒤에 무엇도 닫지 않습니다. TikTok / Instagram 이외의 모든 것을 자동화할 때 사용합니다.
TikTok / Instagram — 프로그램이 시작되기 전에 앱을 열고 계정을 전환하며, 끝나면 앱을 닫습니다. 기본 스크립트와 동일합니다. 해석된 패키지는 TIKMATRIX_PACKAGE로 알 수 있습니다. 기본 스크립트에 없는 단계를 더할 때 사용합니다.
환경 변수
관리형 스크립트가 받는 값:
| 변수 | 의미 |
|---|---|
TIKMATRIX_API_BASE | 서버 URL. 예: http://127.0.0.1:50809 |
TIKMATRIX_SESSION_ID | 이미 여러분을 대신해 보유 중인 임대 |
TIKMATRIX_SERIAL | 이 작업이 배포된 기기 |
TIKMATRIX_PACKAGE | 해석된 앱 패키지 |
TIKMATRIX_PLATFORM | tiktok, instagram, generic |
TikMatrix.from_env()가 이 값들을 대신 읽어줍니다.
독립 실행 스크립트는 이 값들을 받지 못합니다. 기기를 직접 임대하세요.
추가 환경 변수에 넣은 내용은 그 위에 덮어써서 병합됩니다. 파일을 고치지 않고 등록된 스크립트 하나에 실행별 설정을 넘기는 일반적인 방법입니다.
Python 라이브러리 레퍼런스
TikMatrix — 연결
| 호출 | 하는 일 |
|---|---|
TikMatrix(base_url=None, timeout=30.0) | 연결. TIKMATRIX_API_BASE, 이어서 http://127.0.0.1:50809로 폴백 |
client.devices() | 온라인 기기. 각 항목에 serial, real_serial, busy |
client.sessions() | 살아 있는 모든 임대(다른 프로세스 것 포함) |
client.device(serial, label=..., ttl_secs=120) | 기기를 임대하고 Device 반환 |
TikMatrix.from_env() | 관리형 스크립트가 시작될 때 받은 기기를 이어받음 |