Directory launch
Manage product profiles, directory variants, listing readiness, and cached directory SEO metrics from the CLI.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Overview
The directory:* commands wrap the Directory launch APIs and Directory SEO APIs. Use them to prepare product copy for launch directories (PeerPush, Uneed, …), inspect per-destination readiness, and read domain-rating metrics.
Warning
Directory launch routes require directory_launch_enabled on your workspace plan. Directory SEO commands require directory_seo_enabled. Both still need a programmatic API token with public_api.
Note
Directory SEO responses include checkedAt on domain metrics and manualRefreshAvailableAt after a manual refresh. Values are cached — use directory:analytics:refresh when the cooldown allows.
Destinations and profiles
Published launch catalog:
openquok directory:destinations:list Channel-group ↔ product rows:
openquok directory:business-profiles:list List profiles (optional filters):
openquok directory:profiles:list
openquok directory:profiles:list --main-only
openquok directory:profiles:list --customer-group-id <customer-group-id> | Flag | Description |
|---|---|
| --customer-group-id | Maps to API integrationCustomerId |
| --main-only | Client-side filter: rows without parentProfileId |
Get, create, and update:
openquok directory:profiles:get <profile-id>
openquok directory:profiles:create --name "Acme" --website-url "https://acme.example"
openquok directory:profiles:update <profile-id> --json ./profile-patch.json | Flag | Description |
|---|---|
| -j --json | Path to JSON matching POST /public/directory-launch/profiles or PATCH /public/directory-launch/profiles/{id} (omit organizationId) |
| --profile-data | profileData object as a JSON string |
| --logo-url | Public logoUrl (https URL or a storage key the API resolves) |
Logo and screenshots
Directory launch does not upload into the profile media bucket for you.
Set images with public https URLs on the profile (or upload in the web UI).
For automation, patch logoUrl and up to three screenshot URLs in profileData.gallery_urls on create or update — on the main profile or a variant id after directory:variants:ensure.
Direct URLs (simplest):
openquok directory:profiles:update <profile-id>
--logo-url "https://cdn.example.com/logo.png"
--profile-data '{"gallery_urls":["https://cdn.example.com/s1.png","https://cdn.example.com/s2.png"]}' Optional — workspace media library:
openquok upload-from-url "https://cdn.example.com/logo.png"
# or: openquok upload ./logo.png Upload responses include data.id and data.filePath for posts:create --media. They do not automatically bind to a product profile. After upload, still set logoUrl and gallery_urls to https URLs your directories and the extension can fetch (your CDN, or the same URL you imported).
Extension autofill
Readiness and autofill expect resolvable image URLs on the profile row. If a logo does not appear on a directory form, confirm logoUrl / gallery_urls are public https links, or add media in My Products. See Directory submission overview and Browser extension for the handoff flow.
Variants and listing summary
Idempotent variant for a site key:
openquok directory:variants:ensure <main-profile-id> --site-key peerpush Readiness and submission status per destination:
openquok directory:listings <profile-id> Read-only submissions:
openquok directory:submissions:list --profile <profile-id>
openquok directory:submissions:list --profile <profile-id> --destination <destination-id> Directory SEO (analytics)
openquok directory:analytics:overview --profile <profile-id>
openquok directory:analytics:history --profile <profile-id> -d 90
openquok directory:analytics:refresh --profile <profile-id> | Flag | Description |
|---|---|
| --profile | productProfileId query or body field |
| -d --days | History window: integer 1–366 (default 90) |
| --force | Optional force refresh when the plan allows it |
Competitors (workspace-scoped):
openquok directory:analytics:competitors:add --domain rival.example --label "Rival Co"
openquok directory:analytics:competitors:update --domain rival.example --label "Rival (EU)"
openquok directory:analytics:competitors:remove --domain rival.example Example workflow
openquok directory:profiles:list --main-only | jq '.data[0].id'
openquok directory:variants:ensure <main-profile-id> --site-key peerpush
openquok directory:listings <main-profile-id> | jq '.data.destinations[] | {providerSlug, readiness}'
openquok directory:analytics:overview --profile <main-profile-id> | jq '.data.productDomain.checkedAt'