job104-cli 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. job104_cli-0.1.1/.github/workflows/publish.yml +51 -0
  2. job104_cli-0.1.1/.gitignore +15 -0
  3. job104_cli-0.1.1/PKG-INFO +226 -0
  4. job104_cli-0.1.1/README.md +204 -0
  5. job104_cli-0.1.1/SKILL.md +198 -0
  6. job104_cli-0.1.1/docs/draft/initial.md +6 -0
  7. job104_cli-0.1.1/docs/plans/2026-03-14-feat-104-cli-job-search-tool-plan.md +468 -0
  8. job104_cli-0.1.1/docs/plans/2026-03-14-refactor-api-migration-and-search-filters-plan.md +589 -0
  9. job104_cli-0.1.1/docs/plans/2026-03-15-feat-expand-jobcat-indcat-constants-plan.md +110 -0
  10. job104_cli-0.1.1/docs/plans/2026-03-15-feat-personal-center-commands-plan.md +485 -0
  11. job104_cli-0.1.1/docs/plans/2026-03-15-feat-personal-center-phase3b-expansion-plan.md +589 -0
  12. job104_cli-0.1.1/docs/plans/2026-03-15-fix-personal-commands-no-data-plan.md +244 -0
  13. job104_cli-0.1.1/docs/refs/indust.json +1996 -0
  14. job104_cli-0.1.1/docs/refs/jobcat.json +3516 -0
  15. job104_cli-0.1.1/job104_cli/__init__.py +3 -0
  16. job104_cli-0.1.1/job104_cli/auth.py +364 -0
  17. job104_cli-0.1.1/job104_cli/cli.py +81 -0
  18. job104_cli-0.1.1/job104_cli/client.py +673 -0
  19. job104_cli-0.1.1/job104_cli/commands/__init__.py +0 -0
  20. job104_cli-0.1.1/job104_cli/commands/_common.py +218 -0
  21. job104_cli-0.1.1/job104_cli/commands/auth.py +192 -0
  22. job104_cli-0.1.1/job104_cli/commands/personal.py +1221 -0
  23. job104_cli-0.1.1/job104_cli/commands/resume_edit.py +736 -0
  24. job104_cli-0.1.1/job104_cli/commands/search.py +568 -0
  25. job104_cli-0.1.1/job104_cli/constants.py +523 -0
  26. job104_cli-0.1.1/job104_cli/exceptions.py +82 -0
  27. job104_cli-0.1.1/job104_cli/index_cache.py +106 -0
  28. job104_cli-0.1.1/job104_cli/models.py +102 -0
  29. job104_cli-0.1.1/job104_cli/resume_schema.py +185 -0
  30. job104_cli-0.1.1/pyproject.toml +57 -0
  31. job104_cli-0.1.1/tests/__init__.py +0 -0
  32. job104_cli-0.1.1/tests/conftest.py +73 -0
  33. job104_cli-0.1.1/tests/test_auth.py +381 -0
  34. job104_cli-0.1.1/tests/test_cli.py +343 -0
  35. job104_cli-0.1.1/tests/test_personal.py +982 -0
  36. job104_cli-0.1.1/tests/test_resume_edit.py +785 -0
  37. job104_cli-0.1.1/uv.lock +540 -0
@@ -0,0 +1,51 @@
1
+ name: CI / Publish
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ["v*"]
7
+ pull_request:
8
+ branches: [main]
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ test:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ python-version: ["3.12", "3.13"]
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: astral-sh/setup-uv@v6
22
+ - run: uv python install ${{ matrix.python-version }}
23
+ - run: uv sync --dev
24
+ - run: uv run pytest -m "not smoke" -v --tb=long
25
+
26
+ lint:
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ - uses: astral-sh/setup-uv@v6
31
+ - run: uv python install 3.13
32
+ - run: uv sync --dev
33
+ - run: uv run ruff check .
34
+ - run: uv run ruff format --check .
35
+
36
+ publish:
37
+ if: startsWith(github.ref, 'refs/tags/v')
38
+ needs: [test, lint]
39
+ runs-on: ubuntu-latest
40
+ environment: pypi
41
+ permissions:
42
+ id-token: write
43
+ contents: read
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+ - uses: astral-sh/setup-uv@v6
47
+ - run: uv python install 3.13
48
+ - run: uv build
49
+ - run: uv publish
50
+ env:
51
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
@@ -0,0 +1,15 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .venv/
10
+ venv/
11
+ .env
12
+ *.so
13
+ .ruff_cache/
14
+ .pytest_cache/
15
+ .mypy_cache/
@@ -0,0 +1,226 @@
1
+ Metadata-Version: 2.4
2
+ Name: job104-cli
3
+ Version: 0.1.1
4
+ Summary: A CLI for Taiwan 104 Job Bank (104人力銀行) — search jobs from the terminal
5
+ Project-URL: Homepage, https://github.com/weirenlan/job104-cli
6
+ Project-URL: Repository, https://github.com/weirenlan/job104-cli
7
+ Author: weirenlan
8
+ License-Expression: Apache-2.0
9
+ Keywords: 104,cli,job,recruitment,taiwan,terminal
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Office/Business
15
+ Requires-Python: >=3.12
16
+ Requires-Dist: browser-cookie3>=0.19
17
+ Requires-Dist: click>=8.0
18
+ Requires-Dist: httpx>=0.27
19
+ Requires-Dist: pyyaml>=6.0
20
+ Requires-Dist: rich>=13.0
21
+ Description-Content-Type: text/markdown
22
+
23
+ # job104 CLI
24
+
25
+ [![PyPI version](https://img.shields.io/pypi/v/job104-cli)](https://pypi.org/project/job104-cli/)
26
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/job104-cli)](https://pypi.org/project/job104-cli/)
27
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
28
+
29
+ > **Taiwan 104 Job Bank CLI** — Search jobs, view details, and manage your career from the terminal. Built for developers and AI agents.
30
+
31
+ 台灣 104 人力銀行終端機工具。讓開發者和 AI agent 可以在終端機中搜尋 104 職缺。
32
+
33
+ ## Install
34
+
35
+ ```sh
36
+ # Recommended (isolated environment)
37
+ uv tool install job104-cli
38
+
39
+ # Alternatives
40
+ pipx install job104-cli
41
+ pip install job104-cli
42
+ ```
43
+
44
+ ## Quick Start
45
+
46
+ ```sh
47
+ # Search jobs
48
+ job104 search "Python" --area 台北市
49
+
50
+ # Filter by company type and job category
51
+ job104 search "AI" --company-type 外商 --jobcat AI工程師 --area 台北市
52
+
53
+ # View job detail by index
54
+ job104 show 3
55
+
56
+ # View job detail by URL hash
57
+ job104 detail 8z5sl
58
+
59
+ # Export results
60
+ job104 export "Python" -n 50 -o jobs.csv
61
+
62
+ # Search companies
63
+ job104 company "Google" --zone 外商 --area 台北市
64
+
65
+ # Filter by industry
66
+ job104 search "護理師" --indcat 醫療服務業
67
+
68
+ # Use raw category code for specific job titles
69
+ job104 search "Python" --jobcat 2007001020
70
+
71
+ # List supported areas, job categories, and industries
72
+ job104 areas
73
+ job104 categories
74
+ job104 industries
75
+
76
+ # Login via browser cookies
77
+ job104 login
78
+
79
+ # View personal center (requires login)
80
+ job104 me
81
+ job104 applied
82
+ job104 saved
83
+ job104 interviews
84
+ job104 resume
85
+ job104 resume-show # first resume
86
+ job104 resume-show 2 # second resume by index
87
+ job104 viewers
88
+ job104 follows
89
+ job104 history
90
+ job104 recommend
91
+
92
+ # Edit resume (requires login) [Beta]
93
+ job104 resume-edit bio --update --data '{"chi": "我的自傳..."}'
94
+ job104 resume-edit experience --add --data '{"companyName": "Google", "jobName": "SWE"}'
95
+ job104 resume-fields --json # list all field definitions
96
+ job104 resume-fill --from resume.json --dry-run
97
+ ```
98
+
99
+ ## Personal Center (需登入)
100
+
101
+ 透過瀏覽器 Cookie 登入後,可查看個人中心資料:
102
+
103
+ ```sh
104
+ # Login
105
+ job104 login
106
+ job104 login --cookie-source chrome
107
+
108
+ # View profile
109
+ job104 me
110
+
111
+ # View applied jobs (with pagination and status filter)
112
+ job104 applied
113
+ job104 applied -p 2
114
+ job104 applied --status closed
115
+
116
+ # View saved/bookmarked jobs
117
+ job104 saved
118
+ job104 saved --not-applied
119
+
120
+ # View interview invitations
121
+ job104 interviews
122
+
123
+ # View resume list
124
+ job104 resume
125
+
126
+ # View full resume content (by index # or VNO)
127
+ job104 resume-show # default: first resume
128
+ job104 resume-show 2 # second resume by index
129
+ job104 resume-show <VNO> # by VNO
130
+
131
+ # View who viewed your resume
132
+ job104 viewers
133
+
134
+ # View followed companies
135
+ job104 follows
136
+
137
+ # View browsing history
138
+ job104 history
139
+ job104 history -p 2
140
+
141
+ # View recommended jobs
142
+ job104 recommend
143
+ job104 recommend --group highchance
144
+
145
+ # Structured output
146
+ job104 applied --json
147
+ job104 resume --yaml
148
+ job104 resume-show --json
149
+ job104 resume-show --md # full Markdown (no truncation)
150
+ job104 resume-show --md > resume.md # save to file
151
+
152
+ # Check login status / logout
153
+ job104 status
154
+ job104 logout
155
+ ```
156
+
157
+ ## Resume Editing (需登入) `Beta 開發中`
158
+
159
+ 編輯 104 履歷,支援互動模式與 agent 自動填入:
160
+
161
+ ```sh
162
+ # Edit a single section (agent mode with --data JSON)
163
+ job104 resume-edit bio --update --data '{"chi": "我的自傳內容..."}'
164
+ job104 resume-edit experience --add --data '{"companyName": "Google", "jobName": "SWE"}'
165
+ job104 resume-edit education --delete --index 2
166
+ job104 resume-edit experience --update --index 1 --data '{"description": "新的描述"}'
167
+
168
+ # Interactive mode (prompts for each field)
169
+ job104 resume-edit bio --update
170
+
171
+ # Preview without submitting
172
+ job104 resume-edit bio --update --data '{"chi": "test"}' --dry-run
173
+
174
+ # Auto-fill from external sources
175
+ job104 resume-fill --from resume.json --dry-run
176
+ job104 resume-fill --from resume.pdf --sections experience,education
177
+ echo '{"bio": {"chi": "..."}}' | job104 resume-fill --stdin --yes
178
+
179
+ # Merge strategy (default: replace)
180
+ job104 resume-fill --from data.json --strategy merge --yes
181
+
182
+ # View field definitions (for agents)
183
+ job104 resume-fields --json
184
+ job104 resume-fields --section experience --json
185
+
186
+ # Autocomplete lookup
187
+ job104 resume-autocomplete school 台灣大學
188
+ job104 resume-autocomplete company Google --json
189
+ job104 resume-autocomplete skill Python --json
190
+
191
+ # Specify which resume to edit (default: first)
192
+ job104 resume-edit bio --update --vno <VNO> --data '{"chi": "..."}'
193
+ ```
194
+
195
+ ## Filters
196
+
197
+ ```sh
198
+ job104 search "Python" \
199
+ --area 台北市 \
200
+ --company-type 外商 \
201
+ --jobcat 軟體工程師 \
202
+ --indcat 軟體及網路相關業 \
203
+ --exp 3-5年 \
204
+ --edu 大學 \
205
+ --salary-type 月薪 --salary-low 50000 \
206
+ --remote 完全遠端 \
207
+ --isnew 7天內
208
+ ```
209
+
210
+ ## Structured Output
211
+
212
+ All commands support `--json` and `--yaml` flags for agent-friendly output. `resume-show` also supports `--md` for full Markdown output. Resume edit commands support `--dry-run` to preview changes before submitting.
213
+
214
+ ```sh
215
+ job104 search "Python" --json
216
+ job104 company "AI" --zone 外商 --json
217
+ job104 applied --json
218
+ job104 resume --yaml
219
+ job104 resume-show --md
220
+ job104 resume-fields --json
221
+ job104 resume-edit bio --update --dry-run --data '{"chi": "test"}'
222
+ ```
223
+
224
+ ## License
225
+
226
+ Apache-2.0
@@ -0,0 +1,204 @@
1
+ # job104 CLI
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/job104-cli)](https://pypi.org/project/job104-cli/)
4
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/job104-cli)](https://pypi.org/project/job104-cli/)
5
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
6
+
7
+ > **Taiwan 104 Job Bank CLI** — Search jobs, view details, and manage your career from the terminal. Built for developers and AI agents.
8
+
9
+ 台灣 104 人力銀行終端機工具。讓開發者和 AI agent 可以在終端機中搜尋 104 職缺。
10
+
11
+ ## Install
12
+
13
+ ```sh
14
+ # Recommended (isolated environment)
15
+ uv tool install job104-cli
16
+
17
+ # Alternatives
18
+ pipx install job104-cli
19
+ pip install job104-cli
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ```sh
25
+ # Search jobs
26
+ job104 search "Python" --area 台北市
27
+
28
+ # Filter by company type and job category
29
+ job104 search "AI" --company-type 外商 --jobcat AI工程師 --area 台北市
30
+
31
+ # View job detail by index
32
+ job104 show 3
33
+
34
+ # View job detail by URL hash
35
+ job104 detail 8z5sl
36
+
37
+ # Export results
38
+ job104 export "Python" -n 50 -o jobs.csv
39
+
40
+ # Search companies
41
+ job104 company "Google" --zone 外商 --area 台北市
42
+
43
+ # Filter by industry
44
+ job104 search "護理師" --indcat 醫療服務業
45
+
46
+ # Use raw category code for specific job titles
47
+ job104 search "Python" --jobcat 2007001020
48
+
49
+ # List supported areas, job categories, and industries
50
+ job104 areas
51
+ job104 categories
52
+ job104 industries
53
+
54
+ # Login via browser cookies
55
+ job104 login
56
+
57
+ # View personal center (requires login)
58
+ job104 me
59
+ job104 applied
60
+ job104 saved
61
+ job104 interviews
62
+ job104 resume
63
+ job104 resume-show # first resume
64
+ job104 resume-show 2 # second resume by index
65
+ job104 viewers
66
+ job104 follows
67
+ job104 history
68
+ job104 recommend
69
+
70
+ # Edit resume (requires login) [Beta]
71
+ job104 resume-edit bio --update --data '{"chi": "我的自傳..."}'
72
+ job104 resume-edit experience --add --data '{"companyName": "Google", "jobName": "SWE"}'
73
+ job104 resume-fields --json # list all field definitions
74
+ job104 resume-fill --from resume.json --dry-run
75
+ ```
76
+
77
+ ## Personal Center (需登入)
78
+
79
+ 透過瀏覽器 Cookie 登入後,可查看個人中心資料:
80
+
81
+ ```sh
82
+ # Login
83
+ job104 login
84
+ job104 login --cookie-source chrome
85
+
86
+ # View profile
87
+ job104 me
88
+
89
+ # View applied jobs (with pagination and status filter)
90
+ job104 applied
91
+ job104 applied -p 2
92
+ job104 applied --status closed
93
+
94
+ # View saved/bookmarked jobs
95
+ job104 saved
96
+ job104 saved --not-applied
97
+
98
+ # View interview invitations
99
+ job104 interviews
100
+
101
+ # View resume list
102
+ job104 resume
103
+
104
+ # View full resume content (by index # or VNO)
105
+ job104 resume-show # default: first resume
106
+ job104 resume-show 2 # second resume by index
107
+ job104 resume-show <VNO> # by VNO
108
+
109
+ # View who viewed your resume
110
+ job104 viewers
111
+
112
+ # View followed companies
113
+ job104 follows
114
+
115
+ # View browsing history
116
+ job104 history
117
+ job104 history -p 2
118
+
119
+ # View recommended jobs
120
+ job104 recommend
121
+ job104 recommend --group highchance
122
+
123
+ # Structured output
124
+ job104 applied --json
125
+ job104 resume --yaml
126
+ job104 resume-show --json
127
+ job104 resume-show --md # full Markdown (no truncation)
128
+ job104 resume-show --md > resume.md # save to file
129
+
130
+ # Check login status / logout
131
+ job104 status
132
+ job104 logout
133
+ ```
134
+
135
+ ## Resume Editing (需登入) `Beta 開發中`
136
+
137
+ 編輯 104 履歷,支援互動模式與 agent 自動填入:
138
+
139
+ ```sh
140
+ # Edit a single section (agent mode with --data JSON)
141
+ job104 resume-edit bio --update --data '{"chi": "我的自傳內容..."}'
142
+ job104 resume-edit experience --add --data '{"companyName": "Google", "jobName": "SWE"}'
143
+ job104 resume-edit education --delete --index 2
144
+ job104 resume-edit experience --update --index 1 --data '{"description": "新的描述"}'
145
+
146
+ # Interactive mode (prompts for each field)
147
+ job104 resume-edit bio --update
148
+
149
+ # Preview without submitting
150
+ job104 resume-edit bio --update --data '{"chi": "test"}' --dry-run
151
+
152
+ # Auto-fill from external sources
153
+ job104 resume-fill --from resume.json --dry-run
154
+ job104 resume-fill --from resume.pdf --sections experience,education
155
+ echo '{"bio": {"chi": "..."}}' | job104 resume-fill --stdin --yes
156
+
157
+ # Merge strategy (default: replace)
158
+ job104 resume-fill --from data.json --strategy merge --yes
159
+
160
+ # View field definitions (for agents)
161
+ job104 resume-fields --json
162
+ job104 resume-fields --section experience --json
163
+
164
+ # Autocomplete lookup
165
+ job104 resume-autocomplete school 台灣大學
166
+ job104 resume-autocomplete company Google --json
167
+ job104 resume-autocomplete skill Python --json
168
+
169
+ # Specify which resume to edit (default: first)
170
+ job104 resume-edit bio --update --vno <VNO> --data '{"chi": "..."}'
171
+ ```
172
+
173
+ ## Filters
174
+
175
+ ```sh
176
+ job104 search "Python" \
177
+ --area 台北市 \
178
+ --company-type 外商 \
179
+ --jobcat 軟體工程師 \
180
+ --indcat 軟體及網路相關業 \
181
+ --exp 3-5年 \
182
+ --edu 大學 \
183
+ --salary-type 月薪 --salary-low 50000 \
184
+ --remote 完全遠端 \
185
+ --isnew 7天內
186
+ ```
187
+
188
+ ## Structured Output
189
+
190
+ All commands support `--json` and `--yaml` flags for agent-friendly output. `resume-show` also supports `--md` for full Markdown output. Resume edit commands support `--dry-run` to preview changes before submitting.
191
+
192
+ ```sh
193
+ job104 search "Python" --json
194
+ job104 company "AI" --zone 外商 --json
195
+ job104 applied --json
196
+ job104 resume --yaml
197
+ job104 resume-show --md
198
+ job104 resume-fields --json
199
+ job104 resume-edit bio --update --dry-run --data '{"chi": "test"}'
200
+ ```
201
+
202
+ ## License
203
+
204
+ Apache-2.0
@@ -0,0 +1,198 @@
1
+ ---
2
+ name: job104-cli
3
+ description: Use job104 for ALL 104 人力銀行 operations — searching jobs, viewing details, managing applications, browsing resumes, and exporting results. Invoke whenever the user requests any job search or recruitment interaction on Taiwan's 104 Job Bank.
4
+ author: weirenlan
5
+ version: "0.1.0"
6
+ tags:
7
+ - 104
8
+ - job-search
9
+ - taiwan
10
+ - recruitment
11
+ - cli
12
+ - ai-agent
13
+ ---
14
+
15
+ # job104 — Taiwan 104 Job Bank CLI
16
+
17
+ **Binary:** `job104`
18
+ **Credentials:** browser cookies (auto-extracted from Chrome, Firefox, Edge, Brave, Arc, Safari, etc.)
19
+
20
+ ## Setup
21
+
22
+ ```bash
23
+ # Install (requires Python 3.10+)
24
+ uv tool install job104-cli
25
+ # Or: pipx install job104-cli
26
+ # Or: pip install job104-cli
27
+
28
+ # Upgrade to latest
29
+ uv tool install --upgrade job104-cli
30
+ ```
31
+
32
+ ## Authentication
33
+
34
+ **IMPORTANT FOR AGENTS**: Many commands work without login (search, detail, export, company). Only personal center commands (me, applied, saved, resume, etc.) require authentication.
35
+
36
+ ### Step 0: Check if already authenticated
37
+
38
+ ```bash
39
+ job104 status --json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print('AUTH_OK' if d.get('ok') else 'AUTH_NEEDED')"
40
+ ```
41
+
42
+ If `AUTH_OK`, skip to [Command Reference](#command-reference).
43
+ If `AUTH_NEEDED` and personal center commands are needed, proceed to Step 1.
44
+
45
+ ### Step 1: Guide user to authenticate
46
+
47
+ Ensure user is logged into 104.com.tw in any supported browser. Then:
48
+
49
+ ```bash
50
+ job104 login # auto-detect browser with valid cookies
51
+ job104 login --cookie-source chrome # specify browser explicitly
52
+ ```
53
+
54
+ Verify with:
55
+
56
+ ```bash
57
+ job104 status
58
+ job104 me --json
59
+ ```
60
+
61
+ ### Step 2: Handle common auth issues
62
+
63
+ | Symptom | Agent action |
64
+ |---------|-------------|
65
+ | `未登入` or `not authenticated` | Run `job104 login` |
66
+ | Cookie expired | Run `job104 logout && job104 login` |
67
+ | Wrong browser | Run `job104 login --cookie-source <browser>` |
68
+
69
+ ## Agent Defaults
70
+
71
+ All machine-readable output uses a consistent envelope:
72
+
73
+ ```json
74
+ {"ok": true, "data": {...}}
75
+ ```
76
+
77
+ - `--json` / `--yaml` / `--md` for explicit format
78
+ - Rich table output goes to **stderr** (safe for pipes: `job104 search X --json | jq .data`)
79
+ - Non-zero exit codes on failure
80
+
81
+ ## Command Reference
82
+
83
+ ### Search & Browse (No Login Required)
84
+
85
+ | Command | Description | Example |
86
+ |---------|-------------|---------|
87
+ | `job104 search <keyword>` | Search jobs with filters | `job104 search "Python" --area 台北市` |
88
+ | `job104 show <index>` | View job #N from last search | `job104 show 3` |
89
+ | `job104 detail <hash>` | View full job details by URL hash | `job104 detail 8z5sl --json` |
90
+ | `job104 export <keyword>` | Export search results to CSV/JSON | `job104 export "Python" -n 50 -o jobs.csv` |
91
+ | `job104 company <keyword>` | Search companies | `job104 company "Google" --zone 外商 --area 台北市` |
92
+ | `job104 areas` | List supported areas | `job104 areas` |
93
+ | `job104 categories` | List job categories | `job104 categories` |
94
+ | `job104 industries` | List industry categories | `job104 industries` |
95
+
96
+ ### Personal Center (Login Required)
97
+
98
+ | Command | Description | Example |
99
+ |---------|-------------|---------|
100
+ | `job104 me` | View profile | `job104 me --json` |
101
+ | `job104 applied` | View applied jobs | `job104 applied -p 1 --json` |
102
+ | `job104 saved` | View saved/bookmarked jobs | `job104 saved --not-applied --json` |
103
+ | `job104 interviews` | View interview invitations | `job104 interviews --json` |
104
+ | `job104 resume` | List all resumes | `job104 resume --json` |
105
+ | `job104 resume-show` | View full resume content | `job104 resume-show --json` |
106
+ | `job104 resume-show <N>` | View Nth resume by index | `job104 resume-show 2 --md` |
107
+ | `job104 viewers` | View who viewed your resume | `job104 viewers --json` |
108
+ | `job104 follows` | View followed companies | `job104 follows --json` |
109
+ | `job104 history` | View browsing history | `job104 history -p 2 --json` |
110
+ | `job104 recommend` | View recommended jobs | `job104 recommend --json` |
111
+
112
+ ### Account
113
+
114
+ | Command | Description |
115
+ |---------|-------------|
116
+ | `job104 login` | Extract cookies from browser (auto-detect) |
117
+ | `job104 login --cookie-source <browser>` | Extract from specific browser |
118
+ | `job104 status` | Check authentication status |
119
+ | `job104 logout` | Clear saved credentials |
120
+
121
+ ## Search Filter Options
122
+
123
+ | Filter | Flag | Values |
124
+ |--------|------|--------|
125
+ | Area | `--area` | 台北市, 新北市, 桃園市, 台中市, 高雄市, etc. (use `job104 areas` for full list) |
126
+ | Experience | `--exp` | 不限, 1年以下, 1-3年, 3-5年, 5-10年, 10年以上 |
127
+ | Education | `--edu` | 不限, 高中以下, 高中/高職, 專科, 大學, 碩士, 博士 |
128
+ | Salary Type | `--salary-type` | 月薪, 時薪, 日薪 |
129
+ | Min Salary | `--salary-low` | Integer (e.g. 50000) |
130
+ | Max Salary | `--salary-high` | Integer (e.g. 100000) |
131
+ | Freshness | `--isnew` | 3天內, 7天內, 14天內, 30天內 |
132
+ | Remote | `--remote` | 完全遠端, 部分遠端 |
133
+ | Company Type | `--company-type` | 外商, 上市上櫃 |
134
+ | Job Category | `--jobcat` | 軟體工程師, AI工程師, etc. (use `job104 categories`) |
135
+ | Industry | `--indcat` | 半導體業, 軟體及網路相關業, etc. (use `job104 industries`) |
136
+ | Sort Order | `--order` | 符合度, 日期, 刊登日, 經歷需求, 學歷需求, 應徵人數, 待遇 |
137
+
138
+ ## Agent Workflow Examples
139
+
140
+ ### Search → Detail pipeline (structured)
141
+
142
+ ```bash
143
+ # Search and get job list
144
+ job104 search "Python" --area 台北市 --json | jq '.data.jobs[0]'
145
+ # View top result detail
146
+ job104 show 1 --json
147
+ ```
148
+
149
+ ### Foreign company AI job search
150
+
151
+ ```bash
152
+ job104 search "AI" --company-type 外商 --area 台北市 --salary-type 月薪 --salary-low 80000 --json
153
+ ```
154
+
155
+ ### Export pipeline
156
+
157
+ ```bash
158
+ job104 export "golang" --area 台北市 -n 50 -o golang_jobs.csv
159
+ job104 export "Python" -n 100 --format json -o python_jobs.json
160
+ ```
161
+
162
+ ### Daily job check workflow
163
+
164
+ ```bash
165
+ job104 recommend --json # Check recommendations
166
+ job104 search "Python" --area 台北市 --json # Search specific jobs
167
+ job104 applied --json # Check application status
168
+ job104 interviews --json # Check interview invitations
169
+ job104 saved --json # Check saved jobs
170
+ ```
171
+
172
+ ### Resume export
173
+
174
+ ```bash
175
+ job104 resume-show --md > my_resume.md # Export resume as Markdown
176
+ job104 resume-show --json | jq '.data' # Get structured resume data
177
+ ```
178
+
179
+ ### Profile check
180
+
181
+ ```bash
182
+ job104 me --json | jq '.data'
183
+ ```
184
+
185
+ ## Limitations
186
+
187
+ - **No job application** — cannot apply to jobs from CLI (requires browser interaction)
188
+ - **No resume editing** — read-only resume access (editing support planned)
189
+ - **No message sending** — cannot send messages to recruiters
190
+ - **Single account** — one set of cookies at a time
191
+ - **Taiwan only** — 104 Job Bank is a Taiwan-specific platform
192
+
193
+ ## Safety Notes
194
+
195
+ - Do not ask users to share raw cookie values in chat logs.
196
+ - Prefer local browser cookie extraction over manual secret copy/paste.
197
+ - If auth fails, ask the user to re-login via `job104 login`.
198
+ - Agent should treat cookie values as secrets (do not echo to stdout).
@@ -0,0 +1,6 @@
1
+
2
+ I want to to make 台灣104人力銀行的 104_cli, 目的是讓大家可以用coding agent工具如claude code來更好的查找相關資料(職缺等等)。
3
+
4
+ 而你可以參考 /Users/weirenlan/Desktop/self_project/labs/104_cli/docs/refs/boss-cli 的架構,我們的使用情境需求也會差不多。
5
+
6
+ 但是104的操作會有不同。