shopping-candidate-fetcher
Use this skill as a candidate-retrieval layer over the local shopping snapshot dataset.
Do not use this skill as a live shopping search engine. Do not use this skill as the final recommender.
Workflow
- Judge whether the task needs a candidate pool for a shopping request.
- Check
data/query_index.jsonto find a supported snapshot query. - Run
scripts/fetch_candidate_list.pywith a supported query and a positivetop_k. - Return the structured candidate list as retrieval output.
- Perform any ranking, filtering, recommendation, or final selection outside this skill.
Match the query
- Prefer an exact query string that already exists in
data/query_index.json. - If the user's wording differs but clearly matches one indexed query, reuse the indexed query and say which snapshot query was used.
- If no indexed query is close enough, do not invent candidates. Explain that the local snapshot dataset does not yet cover the request.
Run the script
Prefer the bundled script over manual JSON assembly.
python scripts/fetch_candidate_list.py --query "我想买一双适合日常慢跑的舒适跑鞋。" --top-k 5
Use top_k=5 unless the user asks for a different number.
Keep top_k greater than 0.
The script:
- loads
data/query_index.json - resolves the mapped file in
data/snapshots/ - reads the snapshot JSON
- returns the first
top_kentries fromcandidates
Output contract
Preserve the returned structure. Treat it as the source-of-truth retrieval payload.
Top-level fields currently include:
skill_nameskill_versionsourcequery_idquerysearch_keywordsource_platformcapture_methodscreenshot_filecapture_datetop_kcandidates
Each candidate currently includes fields such as:
rankitem_idtitlebrandpricesales_textratingshoplocationdescriptionurlis_ad
Do not rename fields unless you are intentionally changing the code and all downstream consumers.
Do not add final-decision fields such as selected_item_id, must_choose, or recommendation labels inside the raw retrieval payload.
Data expectations
- Treat this dataset as static snapshot data, not real-time marketplace data.
- Use
capture_dateandsource_platformas provenance metadata when explaining freshness. - Expect
rating,url, orsales_textto be missing ornullfor some items because the source is screenshot-derived. - Prefer the cleaned snapshot JSON in
data/snapshots/for structured output. - The public package retains cleaned JSON snapshots. Original screenshot images are not required for normal execution and may be omitted from the repository.
Failure handling
- If
queryis empty, expect aValueError. - If
top_k <= 0, expect aValueError. - If the query is not present in
data/query_index.json, do not fabricate a result. Report that no clean snapshot exists for the request. - If a mapped snapshot file is missing, verify the filename in
data/query_index.jsonand the corresponding file underdata/snapshots/.
Maintain the dataset
To support a new shopping request:
- Add a new query-to-file mapping in
data/query_index.json. - Add the corresponding cleaned snapshot JSON to
data/snapshots/. - Keep the snapshot schema aligned with the existing files.
Use the keys in data/query_index.json as the canonical supported query phrasings.
