You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reshape apify create into the guided wizard flow. Local scaffold only (--source apify); the Git path is a separate sub-issue.
Add the -u, --use-case and -l, --language filter flags; keep -t, --template authoritative.
Skip the template prompt when the filter leaves exactly one match.
Reuse the recommendation algorithm already in apify-core: getTemplateRecommendation (src/console/frontend/src/ui/actors/actor_new_wizard/get_template_recommendation.ts, returns { templates, isExactMatch }). isExactMatch drives the skip case above.
isExactMatch just check if all pickedTemplates are exactMatch and it always return pickedTemplates according to limit. So pickedTemplates.length === options.limit, there is no way now to get exactly one match unless limit is 1 (but there can be more exact matches anyway). Do we have a plan to change it in console? or should I match the console in cli wizard and also suggest 2 templates (with info if they are exact match or not)?
only combination without exact match I was able to get in console right now is Browser automation + Javascript, do we want to cover this hint also in CLI wizard?
isExactMatch just check if all pickedTemplates are exactMatch and it always return pickedTemplates according to limit. So pickedTemplates.length === options.limit, there is no way now to get exactly one match unless limit is 1 (but there can be more exact matches anyway). Do we have a plan to change it in console? or should I match the console in cli wizard and also suggest 2 templates (with info if they are exact match or not)?
only combination without exact match I was able to get in console right now is Browser automation + Javascript, do we want to cover this hint also in CLI wizard?
Yeah, all good points ...
No plan to change Console, and no need to mirror its 2-suggestion limit either.
Since the CLI ports the algorithm anyway let's change the return shape to Array<{ template, isExactMatch }>, a per-template flag instead of one flag for the whole list.
The template prompt then always renders as one scrollable list (viewport of ~8 rows): exact matches first with the top one preselected, then a non-selectable separator row ("The templates below don't exactly match your selection"), then the remaining templates in tier order. Let's drop the "skip when exactly one match" behavior, a preselected list costs one Enter and keeps alternatives visible.
Let's either set the options.limit to arbitrary high value (100?) or not at all (might clash with the "Template Actors in Store" initiative in preparation, leading to high number of templates available).
In case the limit is omitted, the getTemplateRecommendation returns list in order from the most fitting templates to least ones.
Happy path
$ apify create
✔ Name of your new Actor: my-actor
✔ What do you want to build? Web scraping
✔ Choose the programming language of your new Actor: Python
? Choose a template for your new Actor. More info at https://apify.com/templates
❯ Crawlee + BeautifulSoup
Crawlee + Playwright + Chrome
Scrapy
One-Page HTML Scraper with BeautifulSoup
── The templates below don't exactly match your selection ──
Standby Python project
Empty Python project
Selenium + Chrome
(Use arrow keys to see more)
No exact matches
? Choose a template for your new Actor. More info at https://apify.com/templates
i No template matches Browser automation + JavaScript exactly — showing the closest alternatives.
❯ Crawlee + Puppeteer + Chrome (TypeScript)
Empty JavaScript project
…
Activity
apify create(parity with Console wizard) #1153l2ysho commentedon Jul 9, 2026
DaveHanns commentedon Jul 9, 2026
Yeah, all good points ...
No plan to change Console, and no need to mirror its 2-suggestion limit either.
Since the CLI ports the algorithm anyway let's change the return shape to
Array<{ template, isExactMatch }>, a per-template flag instead of one flag for the whole list.The template prompt then always renders as one scrollable list (viewport of ~8 rows): exact matches first with the top one preselected, then a non-selectable separator row ("The templates below don't exactly match your selection"), then the remaining templates in tier order. Let's drop the "skip when exactly one match" behavior, a preselected list costs one Enter and keeps alternatives visible.
Let's either set the
options.limitto arbitrary high value (100?) or not at all (might clash with the "Template Actors in Store" initiative in preparation, leading to high number of templates available).In case the limit is omitted, the
getTemplateRecommendationreturns list in order from the most fitting templates to least ones.Happy path
No exact matches
test(create): cover flag mappings and --template precedence
refactor(create): rename use-case flags to web-scraper and data-pipeline
refactor(create): address review nits on template consts
feat(create): language flag aliases; drop the "other" language
refactor(create): symmetric use-case/language filter shapes
fix(create): correct no-filter tier guard (hasUseCaseFilter)