Eudic Anki 파이프라인 (통합 스킬)
대상
이 파일은 실행 중인 에이전트를 위한 것입니다. 사용자는 자연어 형태의 목표를 제시하며, 에이전트는 처음부터 끝까지(end-to-end) 실행합니다.
배포
이 스킬은 소스 저장소의 skills/eudic-to-anki/ 디렉토리 아래에 있으며, Vercel skills CLI(npx skills add <owner>/<repo> --skill eudic-to-anki)를 통해 설치할 수 있습니다. 설치 후, 이 디렉토리(SKILL.md가 있는 곳)를 아래 모든 명령어의 현재 작업 디렉토리(cwd)로 취급하십시오. 정확한 설치 명령어는 저장소가 GitHub에 공개된 후 저장소 루트의 README.md를 참조하십시오.
범위
단일 스킬, 모듈식 내부 구조:
- 내보내기 모듈:
modules/export/README.md - 코치 모듈:
modules/coach/README.md - 가져오기 모듈:
modules/import/README.md - 오디오 모듈:
modules/audio/README.md - 워크플로우 플레이북:
workflows/*.md
아래 모든 명령어는 cwd가 이 스킬 루트(eudic-to-anki/)인 것으로 가정합니다.
기본값
- 날짜: 사용자가 범위를 지정하지 않으면 전날(현지 시간대)
- 출처: 사용자가 카테고리를 지정하지 않으면 모든 Eudic 카테고리
- 덱:
words(사용자가 지정하지 않은 경우) - 노트 유형:
TRVS-Lab - 중간 산출물: 사용자의 전용 Documents 아티팩트 디렉토리에만 저장합니다. 표준 절대 경로
<ABS_TEMP_DIR>(예:/Users/alice/Documents/eudic-to-anki-temp)를 사용하십시오. - 로컬 테스트/사용자 정의 설정을 위한 선택적 재정의:
EUDIC_TO_ANKI_TEMP_DIR=/path/to/temp - 규칙에 민감한 실행의 경우, 아티팩트 경로를
/Users/alice/Documents/eudic-to-anki-temp와 같은 절대 디렉토리로 확장하십시오.~또는$HOME을 사용하여 실행하지 마십시오.
실행 규율
아래에서 <ABS_TEMP_DIR>은 사용자의 확장된 아티팩트 디렉토리(예: /Users/alice/Documents/eudic-to-anki-temp)를 의미합니다.
- 규칙이 적용된 명령어는 직접 argv 명령어로만 실행하십시오.
/bin/zsh -lc ...,zsh -lc ...,bash -lc ...,env ...,FOO=bar ...등으로 감싸지 마십시오.- 규칙이 적용된 명령어 앞에
&&,||,;, 파이프, 또는 서브쉘로 연결하지 마십시오. 준비 명령어와 메인 명령어는 별도의 도구 호출로 실행하십시오. - cwd가 이 스킬 루트일 때는
python3 scripts/eudic_export.py ...와 같이 상대 스크립트 경로를 사용하십시오. - cwd가 다른 곳일 때는
python3 /Users/alice/.agents/skills/eudic-to-anki/scripts/eudic_export.py ...와 같이 절대 설치 스킬 경로를 사용하십시오. - 토큰 로딩을 위해 로그인 zsh가 필요한 경우,
python3 scripts/run_with_login_zsh.py python3 scripts/eudic_export.py ...를 직접 호출하고, 그 주위에 다른 쉘 래퍼를 추가하지 마십시오. <ABS_TEMP_DIR>이 존재하지 않으면, 먼저 별도의 직접 명령어mkdir -p /Users/alice/Documents/eudic-to-anki-temp로 생성하십시오.
빠른 시작 (에이전트 흐름)
- 임시 디렉토리가 있는지 확인:
mkdir -p <ABS_TEMP_DIR>
- 환경 확인:
bash scripts/check_env.sh
- 단어 내보내기:
python3 scripts/eudic_export.py --all-categories --start-date <D> --end-date <D> --format csv --output <ABS_TEMP_DIR>/_day_<D>_export.csv
- 플레이스홀더 + 작성자 코치 생성:
python3 scripts/build_dia_json_from_csv.py --csv <ABS_TEMP_DIR>/_day_<D>_export.csv --output <ABS_TEMP_DIR>/_day_<D>_partial.json --batch-date <D> --eudic-words-only- 에이전트가 세련된 코치 JSON을 작성합니다. 각 노트는
part_of_speech를 포함해야 하며, 모든meaning줄은n.,vt.,vi.,adj.,adv.와 같은 POS 표시자로 시작해야 합니다. 그런 다음 병합합니다(단일 파일 또는 배치 +scripts/merge_coach_with_partial.py).
- 검증:
python3 scripts/validate_trvs_coach_json.py <ABS_TEMP_DIR>/_day_<D>_import.json
- 오디오와 함께 가져오기 (성공적인 가져오기는 기본적으로 Anki 동기화를 트리거합니다. 건너뛰려면
--no-sync사용):python3 scripts/ankiconnect_import.py --input <ABS_TEMP_DIR>/_day_<D>_import.json --deck words --create-deck --dia-upsert --audio-provider command --audio-format mp3 --audio-command 'python3 scripts/edge_tts_runner.py --text "{word}" --output "{output}"'--audio-command는 argv로 구문 분석되어 쉘 없이 실행됩니다. 파이프/리다이렉션과 같은 쉘 연산자는 지원되지 않습니다.
- 성공 후 정리:
bash scripts/cleanup_import_artifacts.sh
품질 관문
- 에이전트가 코치 콘텐츠를 작성합니다. 기본적으로 Eudic의
exp/phon을 그대로 코치 필드에 대량 복사하지 마십시오. - 코치 JSON은 POS를 명시적으로 보존해야 합니다. 모든 노트에
part_of_speech를 포함하고, 각 중국어meaning줄의 시작 부분에 POS 표시자를 유지하십시오. - 대량 목록의 경우 배치로 서브에이전트를 사용하고 병합하기 전에 각 배치를 검증하십시오.
- 서브에이전트 출력이 base64인 경우 다음을 통해 디코딩하십시오:
python3 scripts/decode_subagent_transcript_b64.py <subagent.jsonl> -o <ABS_TEMP_DIR>/coach_batch_01.json
- 검증기 오류(
U+FFFD, 모지바케 표시자, 잘못된 필드 유형,meaning에 POS 표시자 누락, 또는part_of_speech누락)가 있으면 가져오기를 차단하십시오. - 성공적인 가져오기 후
ankiconnect_import.py는 기본적으로 Anki 동기화를 실행합니다. 건너뛰려면--no-sync를 전달하십시오. - 검증에 실패하면(특히
root형식), 실패한 배치/단어만 재생성하고 병합/가져오기 전에 검증기를 다시 실행하십시오.
플레이북
- 전날 흐름:
workflows/yesterday.md - 날짜 범위 흐름:
workflows/date-range.md - 사용자 단어 목록 흐름:
workflows/word-list.md
안전
- 토큰 값을 추적된 파일에 저장하지 마십시오.
- 환경 변수
EUDIC_TOKEN을 선호하십시오. - AnkiConnect를 사용할 수 없는 경우 중단하고 설정 안내를 제공하십시오.