@koda-sl/baker-cli 0.28.0 → 0.32.0-dev.31ee8d9c
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.
- package/README.md +280 -15
- package/dist/cli.js +1 -1
- package/dist/commands/actions/complete.d.ts +2 -2
- package/dist/commands/actions/complete.d.ts.map +1 -1
- package/dist/commands/actions/complete.js +10 -8
- package/dist/commands/actions/complete.js.map +1 -1
- package/dist/commands/actions/shared.d.ts +1 -0
- package/dist/commands/actions/shared.d.ts.map +1 -1
- package/dist/commands/actions/shared.js +3 -0
- package/dist/commands/actions/shared.js.map +1 -1
- package/dist/commands/ads/google/correction-table.d.ts.map +1 -1
- package/dist/commands/ads/google/correction-table.js +13 -1
- package/dist/commands/ads/google/correction-table.js.map +1 -1
- package/dist/commands/ads/google/preflight.d.ts.map +1 -1
- package/dist/commands/ads/google/preflight.js +7 -0
- package/dist/commands/ads/google/preflight.js.map +1 -1
- package/dist/commands/ads/google/presets.d.ts.map +1 -1
- package/dist/commands/ads/google/presets.js +14 -0
- package/dist/commands/ads/google/presets.js.map +1 -1
- package/dist/commands/images/extract.d.ts +23 -0
- package/dist/commands/images/extract.d.ts.map +1 -0
- package/dist/commands/images/extract.js +53 -0
- package/dist/commands/images/extract.js.map +1 -0
- package/dist/commands/images/find.d.ts +33 -0
- package/dist/commands/images/find.d.ts.map +1 -0
- package/dist/commands/images/find.js +70 -0
- package/dist/commands/images/find.js.map +1 -0
- package/dist/commands/images/gif.d.ts +33 -0
- package/dist/commands/images/gif.d.ts.map +1 -0
- package/dist/commands/images/gif.js +81 -0
- package/dist/commands/images/gif.js.map +1 -0
- package/dist/commands/images/google.d.ts +38 -0
- package/dist/commands/images/google.d.ts.map +1 -0
- package/dist/commands/images/google.js +77 -0
- package/dist/commands/images/google.js.map +1 -0
- package/dist/commands/images/icon.d.ts +23 -0
- package/dist/commands/images/icon.d.ts.map +1 -0
- package/dist/commands/images/icon.js +57 -0
- package/dist/commands/images/icon.js.map +1 -0
- package/dist/commands/images/index.d.ts.map +1 -1
- package/dist/commands/images/index.js +45 -7
- package/dist/commands/images/index.js.map +1 -1
- package/dist/commands/images/ingest.d.ts +28 -0
- package/dist/commands/images/ingest.d.ts.map +1 -0
- package/dist/commands/images/ingest.js +60 -0
- package/dist/commands/images/ingest.js.map +1 -0
- package/dist/commands/images/library.d.ts +55 -0
- package/dist/commands/images/library.d.ts.map +1 -0
- package/dist/commands/images/library.js +86 -0
- package/dist/commands/images/library.js.map +1 -0
- package/dist/commands/images/logo.d.ts +18 -0
- package/dist/commands/images/logo.d.ts.map +1 -0
- package/dist/commands/images/logo.js +49 -0
- package/dist/commands/images/logo.js.map +1 -0
- package/dist/commands/images/meme.d.ts +28 -0
- package/dist/commands/images/meme.d.ts.map +1 -0
- package/dist/commands/images/meme.js +66 -0
- package/dist/commands/images/meme.js.map +1 -0
- package/dist/commands/images/screenshot.d.ts +23 -0
- package/dist/commands/images/screenshot.d.ts.map +1 -0
- package/dist/commands/images/screenshot.js +64 -0
- package/dist/commands/images/screenshot.js.map +1 -0
- package/dist/commands/images/search.d.ts.map +1 -1
- package/dist/commands/images/search.js +1 -0
- package/dist/commands/images/search.js.map +1 -1
- package/dist/commands/images/sticker.d.ts +33 -0
- package/dist/commands/images/sticker.d.ts.map +1 -0
- package/dist/commands/images/sticker.js +81 -0
- package/dist/commands/images/sticker.js.map +1 -0
- package/dist/commands/images/stock.d.ts +58 -0
- package/dist/commands/images/stock.d.ts.map +1 -0
- package/dist/commands/images/stock.js +116 -0
- package/dist/commands/images/stock.js.map +1 -0
- package/dist/commands/images/use.d.ts +18 -0
- package/dist/commands/images/use.d.ts.map +1 -0
- package/dist/commands/images/use.js +57 -0
- package/dist/commands/images/use.js.map +1 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +1 -0
- package/dist/output.js.map +1 -1
- package/dist/output.test.js +1 -0
- package/dist/output.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -218,6 +218,8 @@ baker ads google query --list-presets
|
|
|
218
218
|
|------------------------|------------------------------------------|--------------------|
|
|
219
219
|
| `campaign-performance` | Campaign metrics overview | LAST_30_DAYS |
|
|
220
220
|
| `keyword-analysis` | Keyword performance with match type | LAST_30_DAYS |
|
|
221
|
+
| `positive-keywords` | Positive (targeting) keywords only | ALL_TIME |
|
|
222
|
+
| `negative-keywords` | Negative (blocking) keywords only | ALL_TIME |
|
|
221
223
|
| `search-terms` | Actual user queries triggering ads | LAST_7_DAYS |
|
|
222
224
|
| `ad-copy-performance` | Ad headline/description effectiveness | LAST_30_DAYS |
|
|
223
225
|
| `asset-performance` | PMax asset performance labels | LAST_30_DAYS |
|
|
@@ -234,6 +236,7 @@ The CLI automatically corrects common GAQL mistakes before hitting the API:
|
|
|
234
236
|
| `keyword.text` | `ad_group_criterion.keyword.text` | `"keyword.text → ad_group_criterion.keyword.text"` |
|
|
235
237
|
| `shopping_performance_view.product_*` | `segments.product_*` | Field renamed |
|
|
236
238
|
| `campaign.status = 'ACTIVE'` | `= 'ENABLED'` | Enum corrected |
|
|
239
|
+
| `FROM ad_group_criterion` without `negative` field | Warns | `"ad_group_criterion returns BOTH positive and negative keywords. Use --preset positive-keywords or negative-keywords."` |
|
|
237
240
|
|
|
238
241
|
Auto-fixed queries proceed normally. Warnings appear in the response:
|
|
239
242
|
|
|
@@ -1570,27 +1573,289 @@ Research data is cached server-side (shared across all callers). No local cache
|
|
|
1570
1573
|
|
|
1571
1574
|
### Assets (`baker images`, `baker videos`, `baker testimonials`)
|
|
1572
1575
|
|
|
1573
|
-
|
|
1576
|
+
#### Image sourcing — verb-per-provider overview
|
|
1574
1577
|
|
|
1575
|
-
|
|
1578
|
+
Each external source is its own subcommand. Pick the verb that matches the source — license, cost, and result shape are all provider-specific.
|
|
1579
|
+
|
|
1580
|
+
| Command | Purpose | Cost | Auto-ingest default |
|
|
1581
|
+
|---|---|---|---|
|
|
1582
|
+
| `baker images library <q>` | Hybrid library search (replaces `search`) | $0 | n/a |
|
|
1583
|
+
| `baker images find <q>` | Fanout: library + opted-in providers | sum of providers | off |
|
|
1584
|
+
| `baker images stock <q> [--type photo\|vector\|psd]` | Magnific (Freepik's dev API) — photos, vectors, illustrations, PSDs (~250M assets) | $0.002/req | off |
|
|
1585
|
+
| `baker images google <q>` | Google Images via the official Custom Search JSON API | $0 under 100/day, then $0.005/query | off |
|
|
1586
|
+
| `baker images logo <domain>` | Brand logo via Brandfetch CDN | $0 | **on** (top 1) |
|
|
1587
|
+
| `baker images icon <name>` | Iconify (200+ icon sets, no API key) | $0 | off (CDN URL is stable) |
|
|
1588
|
+
| `baker images gif <q>` | Reaction GIFs / memes via Giphy (paid-social creative) | $0 | off |
|
|
1589
|
+
| `baker images sticker <q>` | Transparent stickers via Giphy (overlay-friendly for ad creative) | $0 | off |
|
|
1590
|
+
| `baker images extract <url>` | Pull every image off a URL via Firecrawl | $0.001/scrape | off |
|
|
1591
|
+
| `baker images screenshot <url>` | Website screenshot via ScreenshotOne | $0.009/capture | **on** |
|
|
1592
|
+
| `baker images ingest <url>` | Save a remote URL to the library | ~$0.001–$0.002 (describe + embed) | always on |
|
|
1593
|
+
| `baker images use <url>` | Sugar over `ingest` — waits until `ready` | same as `ingest` | always on |
|
|
1594
|
+
| `baker images get <id>` | Single record | $0 | n/a |
|
|
1595
|
+
| `baker images upload <file>` | Upload a local file | $0 | always on |
|
|
1596
|
+
| `baker images delete <id>` | Delete a record | $0 | n/a |
|
|
1597
|
+
|
|
1598
|
+
**Auto-ingest** runs the full `processImage` pipeline (Gemini describe + Voyage multimodal embed + OpenRouter text embed, ~$0.001–$0.002/image) on top of the provider cost. Override with `--auto-ingest N` (turn on) or `--no-auto-ingest` (turn off where default is on). After auto-ingest the next `baker images library` query for the same concept hits the local row.
|
|
1599
|
+
|
|
1600
|
+
**Hash-dedup is automatic.** `contentHash` (sha256 of bytes) + `externalId` per-source — same JPEG from two providers becomes one library row.
|
|
1601
|
+
|
|
1602
|
+
**`baker images search` is a deprecated alias** for `library` (stderr deprecation log, removed in next minor).
|
|
1603
|
+
|
|
1604
|
+
### `baker images library <query>`
|
|
1605
|
+
|
|
1606
|
+
Search the company library (hybrid BM25 + vector + Cohere rerank). Use this FIRST before any external provider.
|
|
1607
|
+
|
|
1608
|
+
```bash
|
|
1609
|
+
baker images library "hero banner"
|
|
1610
|
+
baker images library "logo" --aspect-ratio 1:1 --tags logo
|
|
1611
|
+
baker images library "office" --source magnific
|
|
1612
|
+
baker images library "pricing" --external-url-host competitor.com
|
|
1613
|
+
```
|
|
1614
|
+
|
|
1615
|
+
**Flags:**
|
|
1616
|
+
|
|
1617
|
+
| Flag | Description |
|
|
1618
|
+
|-----------------------|--------------------------------------------------------------------------|
|
|
1619
|
+
| `--limit` | Max results (default 5) |
|
|
1620
|
+
| `--min-score` | Minimum relevance score, 0-1 |
|
|
1621
|
+
| `--aspect-ratio` | Filter by aspect ratio |
|
|
1622
|
+
| `--tags` | Comma-separated tag names |
|
|
1623
|
+
| `--source` | Filter by source (uploaded, magnific, brandfetch, google_images, firecrawl, screenshotone, iconify, giphy, …) |
|
|
1624
|
+
| `--external-url-host` | Filter by host substring of `externalUrl` (e.g. competitor.com) |
|
|
1625
|
+
| `--output` | Output format: `json` \| `files` \| `md` |
|
|
1626
|
+
| `--fields` | Comma-separated field names to include |
|
|
1627
|
+
| `--full` | Include full metadata |
|
|
1628
|
+
|
|
1629
|
+
> `baker images search` is a deprecated alias for `library` (emits a deprecation log on stderr; removed in the next minor).
|
|
1630
|
+
|
|
1631
|
+
### `baker images find <query> --sources <list>`
|
|
1632
|
+
|
|
1633
|
+
Fanout image search: library first, then opted-in providers in parallel.
|
|
1634
|
+
|
|
1635
|
+
```bash
|
|
1636
|
+
baker images find "office" --sources library,magnific --limit 20
|
|
1637
|
+
baker images find "office" --sources library,magnific --fallback --threshold 0.4
|
|
1638
|
+
baker images find "celebration" --sources library,giphy --auto-ingest 3
|
|
1639
|
+
```
|
|
1640
|
+
|
|
1641
|
+
Providers: `library`, `magnific`, `google`, `iconify`, `brandfetch`, `giphy`. Response shape: `{ groups: { library, external }, meta: { counts, errors } }`. Partial failures (one provider throws) return the successful providers plus a `meta.errors` array; the whole call never fails on a single provider error.
|
|
1642
|
+
|
|
1643
|
+
**Flags:**
|
|
1644
|
+
|
|
1645
|
+
| Flag | Description |
|
|
1646
|
+
|------------------|--------------------------------------------------------------------------------------------|
|
|
1647
|
+
| `--sources` | Comma-separated providers (default `library`) |
|
|
1648
|
+
| `--limit` | Max results per group (default 20, max 50) |
|
|
1649
|
+
| `--fallback` | Skip external providers when the top library score ≥ `--threshold` |
|
|
1650
|
+
| `--threshold` | Library score floor for `--fallback` (default `0.4`) |
|
|
1651
|
+
| `--auto-ingest` | Ingest top N external hits into the library (0–20, default 0) |
|
|
1652
|
+
|
|
1653
|
+
### `baker images stock <query>`
|
|
1654
|
+
|
|
1655
|
+
Stock search via **Magnific** — Freepik's developer API (post-acquisition rebrand — `api.magnific.com`, header `x-magnific-api-key`). One library, ~250M assets covering photos, vectors, illustrations, icon sets, mockups, PSDs.
|
|
1656
|
+
|
|
1657
|
+
```bash
|
|
1658
|
+
baker images stock "minimalist office"
|
|
1659
|
+
baker images stock "flat office workers" --type vector
|
|
1660
|
+
baker images stock "hero photo of a kitchen" --type photo --orientation landscape --ai exclude
|
|
1661
|
+
baker images stock "brand pattern" --color "#0a0a0a" --license freemium --auto-ingest 2
|
|
1662
|
+
baker images stock "office reaction" --people only
|
|
1663
|
+
```
|
|
1664
|
+
|
|
1665
|
+
Cost: $0.002/req. Free tier exists but watermarks previews — pass `--license freemium` to filter to clean free assets explicitly.
|
|
1666
|
+
|
|
1667
|
+
**Flags:**
|
|
1668
|
+
|
|
1669
|
+
| Flag | Description |
|
|
1670
|
+
|------------------|--------------------------------------------------------------------------------------------|
|
|
1671
|
+
| `--type` | Content type: `photo \| vector \| psd` |
|
|
1672
|
+
| `--orientation` | `landscape \| portrait \| square \| panoramic` |
|
|
1673
|
+
| `--license` | `freemium` (free with attribution) or `premium` (paid, watermark-free) |
|
|
1674
|
+
| `--color` | Hex color filter (`#0a0a0a` or `0a0a0a`) |
|
|
1675
|
+
| `--ai` | AI-generated filter: `exclude` or `only` (default: no filter) |
|
|
1676
|
+
| `--people` | People-in-image filter: `include` \| `exclude` \| `only` |
|
|
1677
|
+
| `--order` | `relevance` (default) or `recent` |
|
|
1678
|
+
| `--limit` | Max results (1–50, default 10) |
|
|
1679
|
+
| `--page` | Page number for pagination |
|
|
1680
|
+
| `--auto-ingest` | Ingest top N hits (0–20, default 0) |
|
|
1681
|
+
|
|
1682
|
+
### `baker images google <query>`
|
|
1683
|
+
|
|
1684
|
+
Google Images via the official Custom Search JSON API. ⚠ Source is unverified web content — inspect before placing.
|
|
1685
|
+
|
|
1686
|
+
```bash
|
|
1687
|
+
baker images google "industrial workshop" --type photo --size large --limit 20
|
|
1688
|
+
```
|
|
1689
|
+
|
|
1690
|
+
Cost: $0.005/query above the free tier (100 queries/day free). Custom Search caps at 10 results per call — pagination is automatic and bills per page (`--limit 30` = 3 queries against your daily quota).
|
|
1691
|
+
|
|
1692
|
+
Requires both `GOOGLE_CUSTOM_SEARCH_API_KEY` and `GOOGLE_CUSTOM_SEARCH_ENGINE_ID` (Programmable Search Engine `cx`) set on the Convex deployment, with the engine configured to "Search the entire web" + Image search ON.
|
|
1693
|
+
|
|
1694
|
+
**Flags:**
|
|
1695
|
+
|
|
1696
|
+
| Flag | Description |
|
|
1697
|
+
|------------------|----------------------------------------------------------------------------------------------------------|
|
|
1698
|
+
| `--type` | `imgType`: `photo \| clipart \| lineart \| stock \| animated \| face \| news` |
|
|
1699
|
+
| `--size` | `imgSize`: `icon \| small \| medium \| large \| xlarge \| xxlarge \| huge` |
|
|
1700
|
+
| `--color` | `imgColorType`: `color \| gray \| mono \| trans` |
|
|
1701
|
+
| `--safe` | `off \| active` |
|
|
1702
|
+
| `--limit` | Max results (1–50, paginated 10 per call) |
|
|
1703
|
+
| `--auto-ingest` | Ingest top N (0–20, default 0) |
|
|
1704
|
+
|
|
1705
|
+
### `baker images logo <domain>`
|
|
1706
|
+
|
|
1707
|
+
Brand logo via Brandfetch CDN (`fallback/404`). Returns up to 5 variants per domain (icon, light/dark logo, light/dark symbol). Auto-ingests the first by default.
|
|
1708
|
+
|
|
1709
|
+
```bash
|
|
1710
|
+
baker images logo stripe.com
|
|
1711
|
+
baker images logo linear.app --variant logo
|
|
1712
|
+
baker images logo example.com --no-auto-ingest
|
|
1713
|
+
```
|
|
1714
|
+
|
|
1715
|
+
If the domain isn't in Brandfetch the result is empty — fall back to `baker images extract https://<domain>` to pull the logo from the site directly.
|
|
1716
|
+
|
|
1717
|
+
**Flags:**
|
|
1718
|
+
|
|
1719
|
+
| Flag | Description |
|
|
1720
|
+
|---------------------|--------------------------------------------------------------------------|
|
|
1721
|
+
| `--variant` | Pin to one variant: `icon \| logo \| symbol` (default: try all 5) |
|
|
1722
|
+
| `--no-auto-ingest` | Skip the default top-1 ingest |
|
|
1723
|
+
|
|
1724
|
+
### `baker images icon <name> [--set <set>]`
|
|
1725
|
+
|
|
1726
|
+
Icon lookup via Iconify (200+ icon sets). Free, no API key.
|
|
1727
|
+
|
|
1728
|
+
```bash
|
|
1729
|
+
baker images icon react --set devicon
|
|
1730
|
+
baker images icon lucide:check --color "#0a0a0a" --width 24
|
|
1731
|
+
baker images icon stripe # tries simple-icons → logos → devicon
|
|
1732
|
+
```
|
|
1733
|
+
|
|
1734
|
+
Pass a prefixed id (`lucide:check`) to pin both set and name explicitly. Without `--set`, the lookup chain is `simple-icons → logos → devicon`.
|
|
1735
|
+
|
|
1736
|
+
**Flags:**
|
|
1737
|
+
|
|
1738
|
+
| Flag | Description |
|
|
1739
|
+
|------------|------------------------------------------------------------------------------------------------------|
|
|
1740
|
+
| `--set` | Iconify set (`simple-icons`, `logos`, `lucide`, `devicon`, `heroicons`, `tabler`, `phosphor`, …) |
|
|
1741
|
+
| `--color` | Hex color — replaces `currentColor` in the SVG |
|
|
1742
|
+
| `--width` | Render width in px (height auto-scales) |
|
|
1743
|
+
|
|
1744
|
+
### `baker images gif <query>`
|
|
1745
|
+
|
|
1746
|
+
Search **Giphy** for GIFs / reaction memes — built for paid-social creative (Meta, TikTok, LinkedIn, X). Free API, no per-request cost. Replaces the discontinued Tenor integration.
|
|
1747
|
+
|
|
1748
|
+
```bash
|
|
1749
|
+
baker images gif "this is fine" --limit 10
|
|
1750
|
+
baker images gif "office reaction" --rating pg --auto-ingest 2
|
|
1751
|
+
baker images gif "celebration" --lang es
|
|
1752
|
+
baker images gif --trending --limit 25
|
|
1753
|
+
```
|
|
1754
|
+
|
|
1755
|
+
Each hit returns the primary URL (WebP — best for ingest) plus `providerMeta.gifUrl`, `providerMeta.mp4Url`, `providerMeta.webpUrl` so you can pick the right format per platform. `providerMeta.kind` is `"gif"`. `externalUrl` points at the Giphy permalink for verification.
|
|
1756
|
+
|
|
1757
|
+
**Flags:**
|
|
1758
|
+
|
|
1759
|
+
| Flag | Description |
|
|
1760
|
+
|------------------|--------------------------------------------------------------------------------------------|
|
|
1761
|
+
| `--trending` | Fetch the current trending feed (omit `<query>` when set) |
|
|
1762
|
+
| `--limit` | Max results (default 20, max 50) |
|
|
1763
|
+
| `--rating` | Content rating: `g \| pg \| pg-13 \| r` (default `pg`) |
|
|
1764
|
+
| `--lang` | ISO 639-1 language code (`en`, `es`, `fr`, …) to bias results |
|
|
1765
|
+
| `--auto-ingest` | Ingest top N (0–20, default 0). Ingest uses the WebP URL; `processImage` partial-fails on animated GIFs (no thumbhash/palette) but describe + embed still work. |
|
|
1766
|
+
|
|
1767
|
+
### `baker images sticker <query>`
|
|
1768
|
+
|
|
1769
|
+
Search **Giphy's sticker corpus** — same API as `gif`, different corpus. Stickers are transparent-background WebPs / GIFs, ideal for overlaying on ad creative (Stories, Reels, banners).
|
|
1770
|
+
|
|
1771
|
+
```bash
|
|
1772
|
+
baker images sticker "thumbs up" --limit 10
|
|
1773
|
+
baker images sticker celebration --rating g --auto-ingest 3
|
|
1774
|
+
baker images sticker --trending --limit 25
|
|
1775
|
+
```
|
|
1776
|
+
|
|
1777
|
+
Same response shape as `gif`. `providerMeta.kind` is `"sticker"`; `externalUrl` points at `https://giphy.com/stickers/<id>`.
|
|
1778
|
+
|
|
1779
|
+
**Flags:** identical to `baker images gif` (`--trending`, `--limit`, `--rating`, `--lang`, `--auto-ingest`).
|
|
1780
|
+
|
|
1781
|
+
### `baker images extract <url>`
|
|
1782
|
+
|
|
1783
|
+
Pull every image from a single URL via Firecrawl (`formats: ["images"]`).
|
|
1784
|
+
|
|
1785
|
+
```bash
|
|
1786
|
+
baker images extract https://stripe.com --auto-ingest 5
|
|
1787
|
+
baker images extract https://example.com --wait-for 1500 --limit 20
|
|
1788
|
+
```
|
|
1789
|
+
|
|
1790
|
+
Every image extracted from a page shares the scraped-page URL as `externalUrl`. Big pages can return 100+ images — cap auto-ingest at 20.
|
|
1791
|
+
|
|
1792
|
+
Cost: $0.001/scrape. JS-rendered pages with `--wait-for` cost the heavier credit bucket.
|
|
1793
|
+
|
|
1794
|
+
**Flags:**
|
|
1795
|
+
|
|
1796
|
+
| Flag | Description |
|
|
1797
|
+
|------------------|--------------------------------------------------------------------------------------------|
|
|
1798
|
+
| `--wait-for` | JS render wait in ms (0–30000) |
|
|
1799
|
+
| `--limit` | Max images returned (default 50) |
|
|
1800
|
+
| `--auto-ingest` | Ingest top N (0–20, default 0) |
|
|
1801
|
+
|
|
1802
|
+
### `baker images screenshot <url>`
|
|
1803
|
+
|
|
1804
|
+
Capture a website screenshot via ScreenshotOne. Auto-ingests on success.
|
|
1805
|
+
|
|
1806
|
+
```bash
|
|
1807
|
+
baker images screenshot https://stripe.com
|
|
1808
|
+
baker images screenshot https://stripe.com --full-page --viewport 1440x900
|
|
1809
|
+
baker images screenshot https://stripe.com --format png
|
|
1810
|
+
```
|
|
1811
|
+
|
|
1812
|
+
Auto-ingests with prefetched bytes (no double-fetch). The screenshot bytes themselves are the artifact — `externalUrl` is the captured URL.
|
|
1813
|
+
|
|
1814
|
+
Cost: $0.009/capture. ScreenshotOne caches captures for 30 days, so re-shotting the same URL within that window is cheap.
|
|
1815
|
+
|
|
1816
|
+
**Flags:**
|
|
1817
|
+
|
|
1818
|
+
| Flag | Description |
|
|
1819
|
+
|----------------|--------------------------------------------------------------------------------------------|
|
|
1820
|
+
| `--full-page` | Capture the full scrolled page (default: viewport only) |
|
|
1821
|
+
| `--viewport` | `WxH` viewport (default `1280x800`) |
|
|
1822
|
+
| `--format` | `webp \| png \| jpg` (default `webp`) |
|
|
1823
|
+
|
|
1824
|
+
### `baker images ingest <url> --source <enum>`
|
|
1825
|
+
|
|
1826
|
+
Download a remote URL and store it in the library. Byte-exact deduped via sha256 + externalId, then queued for describe + embed.
|
|
1827
|
+
|
|
1828
|
+
```bash
|
|
1829
|
+
baker images ingest https://img.freepik.com/free-photo/xyz.jpg --source magnific --external-id 12345
|
|
1830
|
+
baker images ingest https://acme.com/hero.png --source firecrawl --external-url https://acme.com/pricing --context "competitor pricing hero"
|
|
1831
|
+
```
|
|
1832
|
+
|
|
1833
|
+
Returns `{ imageId, deduped, contentHash }`. When `deduped: true`, an existing library row is returned — no new bytes are stored. Max ingest size 25MB.
|
|
1834
|
+
|
|
1835
|
+
**Flags:**
|
|
1836
|
+
|
|
1837
|
+
| Flag | Description |
|
|
1838
|
+
|------------------|--------------------------------------------------------------------------------------------|
|
|
1839
|
+
| `--source` | **Required.** Source enum (`uploaded`, `magnific`, `brandfetch`, `google_images`, `firecrawl`, `screenshotone`, `iconify`, `giphy`, `instagram`, …) |
|
|
1840
|
+
| `--external-id` | Provider asset id — enables per-source dedup before bytes are fetched |
|
|
1841
|
+
| `--external-url` | Canonical page URL (parent page for scraped/Google hits, provider page for stock) |
|
|
1842
|
+
| `--context` | Free-text hint passed to Gemini describe to bias the generated description and tags |
|
|
1843
|
+
|
|
1844
|
+
### `baker images use <url>`
|
|
1845
|
+
|
|
1846
|
+
Sugar over `ingest`: stores the URL and polls `get` until the library record is `ready` (or errored). Returns the ingest result plus the ready image doc — synchronous from the agent's perspective.
|
|
1576
1847
|
|
|
1577
1848
|
```bash
|
|
1578
|
-
baker images
|
|
1579
|
-
baker images
|
|
1580
|
-
baker images search "team photo" --limit 5 --min-score 0.3
|
|
1849
|
+
baker images use https://cdn.example.com/hero.png
|
|
1850
|
+
baker images use https://cdn.example.com/hero.png --source magnific --max-wait 60000
|
|
1581
1851
|
```
|
|
1582
1852
|
|
|
1583
1853
|
**Flags:**
|
|
1584
1854
|
|
|
1585
|
-
| Flag
|
|
1586
|
-
|
|
1587
|
-
| `--
|
|
1588
|
-
| `--
|
|
1589
|
-
| `--aspect-ratio` | Filter by aspect ratio (1:1, 16:9, 9:16, 2:3, 3:4, 1:2, 2:1, 4:5, 3:2, 4:3) |
|
|
1590
|
-
| `--tags` | Comma-separated tag names to filter by |
|
|
1591
|
-
| `--output` | Output format: `json` \| `files` \| `md` |
|
|
1592
|
-
| `--fields` | Comma-separated field names to include |
|
|
1593
|
-
| `--full` | Include full metadata |
|
|
1855
|
+
| Flag | Description |
|
|
1856
|
+
|----------------|--------------------------------------------------------------------------------------------|
|
|
1857
|
+
| `--source` | Source enum (default `uploaded`) |
|
|
1858
|
+
| `--max-wait` | Max wait ms before returning `TIMEOUT` (default `30000`, polled every 1500ms) |
|
|
1594
1859
|
|
|
1595
1860
|
### `baker images get <id>`
|
|
1596
1861
|
|
|
@@ -1691,7 +1956,7 @@ baker actions release <action-id>
|
|
|
1691
1956
|
baker actions create --name "Build hero" --description "..." --tag copy,landing
|
|
1692
1957
|
# → returns { ok, data: { tempId }, hints: [...] } — check hints for dependencies/tags/description reminders
|
|
1693
1958
|
baker actions update <action-id> --name "Better name"
|
|
1694
|
-
baker actions complete <action-id> --note "What was done" # stages — applies on chat publish
|
|
1959
|
+
baker actions complete <action-id-or-tempId> --note "What was done" # stages — applies on chat publish
|
|
1695
1960
|
baker actions discard <action-id> --reason "obsolete"
|
|
1696
1961
|
|
|
1697
1962
|
baker actions link --blocker <id-or-tempId> --blocked <id-or-tempId>
|
package/dist/cli.js
CHANGED
|
@@ -12,7 +12,7 @@ import { videosCommand } from "./commands/videos/index.js";
|
|
|
12
12
|
const main = defineCommand({
|
|
13
13
|
meta: {
|
|
14
14
|
name: "baker",
|
|
15
|
-
version: "0.
|
|
15
|
+
version: "0.32.0",
|
|
16
16
|
description: `AI-agent CLI for finding and managing images, videos, testimonials, action items, and ad platform data in Baker.
|
|
17
17
|
|
|
18
18
|
Auth: Set BAKER_API_KEY (starts with bk_) and BAKER_API_URL environment variables.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export declare const completeCommand: import("citty").CommandDef<{
|
|
2
2
|
readonly id: {
|
|
3
3
|
readonly type: "positional";
|
|
4
|
-
readonly description: "Action ID";
|
|
4
|
+
readonly description: "Action ID or temp ID";
|
|
5
5
|
readonly required: false;
|
|
6
6
|
};
|
|
7
7
|
readonly "action-id": {
|
|
8
8
|
readonly type: "string";
|
|
9
|
-
readonly description: "Action ID";
|
|
9
|
+
readonly description: "Action ID or temp ID";
|
|
10
10
|
readonly required: false;
|
|
11
11
|
};
|
|
12
12
|
readonly note: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/commands/actions/complete.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/commands/actions/complete.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;EA2B1B,CAAC"}
|
|
@@ -2,23 +2,23 @@ import { defineCommand } from "citty";
|
|
|
2
2
|
import { apiPost, validateConvexId } from "../../client.js";
|
|
3
3
|
import { requireChatId } from "../../env.js";
|
|
4
4
|
import { registerSchema } from "../../schemas.js";
|
|
5
|
-
import { failApi, failValidation, writeOk } from "./shared.js";
|
|
5
|
+
import { failApi, failValidation, isTempId, writeOk } from "./shared.js";
|
|
6
6
|
registerSchema({
|
|
7
7
|
command: "actions.complete",
|
|
8
|
-
description: "Stage completion of
|
|
8
|
+
description: "Stage completion of an action. Accepts a real action ID (must be claimed) or a temp ID from the same draft. The action becomes completed when the chat is published.",
|
|
9
9
|
args: {
|
|
10
|
-
id: { type: "string", description: "Action ID
|
|
10
|
+
id: { type: "string", description: "Action ID or temp ID", required: true },
|
|
11
11
|
note: { type: "string", description: "What was done — context for the team and AI", required: false },
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
export const completeCommand = defineCommand({
|
|
15
15
|
meta: {
|
|
16
16
|
name: "complete",
|
|
17
|
-
description: "Stage completion of
|
|
17
|
+
description: "Stage completion of an action. Accepts real IDs (claimed) or temp IDs (same draft). Example: baker actions complete <id>",
|
|
18
18
|
},
|
|
19
19
|
args: {
|
|
20
|
-
id: { type: "positional", description: "Action ID", required: false },
|
|
21
|
-
"action-id": { type: "string", description: "Action ID", required: false },
|
|
20
|
+
id: { type: "positional", description: "Action ID or temp ID", required: false },
|
|
21
|
+
"action-id": { type: "string", description: "Action ID or temp ID", required: false },
|
|
22
22
|
note: { type: "string", description: "What was done — context for the team and AI", required: false },
|
|
23
23
|
},
|
|
24
24
|
run: async ({ args }) => {
|
|
@@ -27,9 +27,11 @@ export const completeCommand = defineCommand({
|
|
|
27
27
|
if (!id) {
|
|
28
28
|
failValidation("Action ID is required.");
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
if (!isTempId(id)) {
|
|
31
|
+
validateConvexId(id);
|
|
32
|
+
}
|
|
31
33
|
const chatId = requireChatId();
|
|
32
|
-
await apiPost("/api/actions/complete", { chatId,
|
|
34
|
+
await apiPost("/api/actions/complete", { chatId, actionRef: id, note: args.note });
|
|
33
35
|
writeOk();
|
|
34
36
|
}
|
|
35
37
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../src/commands/actions/complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../src/commands/actions/complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzE,cAAc,CAAC;IACb,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EACT,sKAAsK;IACxK,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE,QAAQ,EAAE,KAAK,EAAE;KACtG;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,0HAA0H;KAC7H;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE;QAChF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE;QACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE,QAAQ,EAAE,KAAK,EAAE;KACtG;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAI,IAAI,CAAC,EAAyB,IAAK,IAAI,CAAC,WAAW,CAAwB,CAAC;YACxF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,cAAc,CAAC,wBAAwB,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAe,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACjG,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -2,4 +2,5 @@ export declare function writeOk<T = null>(data?: T): void;
|
|
|
2
2
|
export declare function failValidation(message: string): never;
|
|
3
3
|
export declare function failApi(err: unknown): never;
|
|
4
4
|
export declare function generateTempId(): string;
|
|
5
|
+
export declare function isTempId(id: string): boolean;
|
|
5
6
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/actions/shared.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAEhD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAGrD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAW3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/actions/shared.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAEhD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAGrD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAW3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE5C"}
|
|
@@ -22,4 +22,7 @@ export function failApi(err) {
|
|
|
22
22
|
export function generateTempId() {
|
|
23
23
|
return `temp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
|
|
24
24
|
}
|
|
25
|
+
export function isTempId(id) {
|
|
26
|
+
return id.startsWith("temp_");
|
|
27
|
+
}
|
|
25
28
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/actions/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,OAAO,CAAW,IAAQ;IACxC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/actions/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,OAAO,CAAW,IAAQ;IACxC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correction-table.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/correction-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AAMrE,eAAO,MAAM,gBAAgB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"correction-table.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/correction-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AAMrE,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAoY5C,CAAC"}
|
|
@@ -63,7 +63,19 @@ export const CORRECTION_RULES = [
|
|
|
63
63
|
};
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
|
-
// 5.
|
|
66
|
+
// 5. ad_group_criterion query without negative filter — auto-add the field
|
|
67
|
+
{
|
|
68
|
+
matchQuery: /FROM\s+ad_group_criterion\b(?!.*ad_group_criterion\.negative)/i,
|
|
69
|
+
fix: (ctx) => {
|
|
70
|
+
const corrected = ctx.originalQuery.replace(/SELECT\s+/i, "SELECT ad_group_criterion.negative, ");
|
|
71
|
+
return {
|
|
72
|
+
action: "add_required_field",
|
|
73
|
+
correctedCommand: buildCommand(corrected, ctx),
|
|
74
|
+
explanation: "Added ad_group_criterion.negative to distinguish positive (targeting) from negative (blocking) keywords. Filter with WHERE ad_group_criterion.negative = FALSE for positives only.",
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
// 6. Missing campaign.id in ad_group queries
|
|
67
79
|
{
|
|
68
80
|
matchQuery: /FROM\s+ad_group\b/i,
|
|
69
81
|
matchApiError: /campaign\.id.*required|must.*include.*campaign\.id/i,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correction-table.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/correction-table.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"correction-table.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/correction-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,aAAa,CAAC;AAkD/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,aAAa,CAAC;AAkD/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CA2FpG"}
|
|
@@ -108,6 +108,13 @@ export function validatePreflight(query, customerId, limit) {
|
|
|
108
108
|
},
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
|
+
// WARN: ad_group_criterion without negative field — positives and negatives will be mixed
|
|
112
|
+
if (/FROM\s+ad_group_criterion\b/i.test(corrected) && !/ad_group_criterion\.negative/i.test(corrected)) {
|
|
113
|
+
warnings.push({
|
|
114
|
+
code: "NEGATIVE_FIELD_MISSING",
|
|
115
|
+
message: "ad_group_criterion returns BOTH positive and negative keywords. Add ad_group_criterion.negative to SELECT or filter with WHERE ad_group_criterion.negative = FALSE (positives) / TRUE (negatives). Use --preset positive-keywords or negative-keywords instead.",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
111
118
|
const { query: autoFixed, warnings: autoFixWarnings } = applyAutoFixes(corrected, limit);
|
|
112
119
|
warnings.push(...autoFixWarnings);
|
|
113
120
|
return { valid: true, correctedQuery: autoFixed, warnings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,eAAO,MAAM,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/google/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAgErC,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEpE;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAa5C"}
|
|
@@ -17,6 +17,20 @@ export const PRESETS = [
|
|
|
17
17
|
defaultDateRange: "LAST_30_DAYS",
|
|
18
18
|
defaultLimit: 200,
|
|
19
19
|
},
|
|
20
|
+
{
|
|
21
|
+
name: "positive-keywords",
|
|
22
|
+
description: "Positive (targeting) keywords only — excludes negatives",
|
|
23
|
+
gaqlTemplate: `SELECT campaign.id, campaign.name, ad_group.name, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.status, ad_group_criterion.negative FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.negative = FALSE AND campaign.status != 'REMOVED' AND ad_group_criterion.status != 'REMOVED' ORDER BY campaign.name LIMIT {limit}`,
|
|
24
|
+
defaultDateRange: "ALL_TIME",
|
|
25
|
+
defaultLimit: 500,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "negative-keywords",
|
|
29
|
+
description: "Negative keywords only — campaign and ad group level",
|
|
30
|
+
gaqlTemplate: `SELECT campaign.id, campaign.name, ad_group.name, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.negative FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.negative = TRUE AND campaign.status != 'REMOVED' ORDER BY campaign.name LIMIT {limit}`,
|
|
31
|
+
defaultDateRange: "ALL_TIME",
|
|
32
|
+
defaultLimit: 500,
|
|
33
|
+
},
|
|
20
34
|
{
|
|
21
35
|
name: "search-terms",
|
|
22
36
|
description: "Actual user search queries triggering ads",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/presets.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GACtB,oOAAoO,CAAC;AAEvO,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,iCAAiC;QAC9C,YAAY,EAAE,yWAAyW;QACvX,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iDAAiD;QAC9D,YAAY,EAAE,+VAA+V;QAC7W,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,4SAA4S;QAC1T,gBAAgB,EAAE,aAAa;QAC/B,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,iXAAiX;QAC/X,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0CAA0C;QACvD,YAAY,EAAE,kUAAkU;QAChV,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,4CAA4C;QACzD,YAAY,EAAE,4UAA4U;QAC1V,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,uCAAuC;QACpD,YAAY,EAAE,sNAAsN;QACpO,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,CAAC;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,MAA8C;IAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC;IAElD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,wBAAwB,SAAS,iGAAiG;SACnJ,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/presets.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GACtB,oOAAoO,CAAC;AAEvO,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,iCAAiC;QAC9C,YAAY,EAAE,yWAAyW;QACvX,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iDAAiD;QAC9D,YAAY,EAAE,+VAA+V;QAC7W,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE,6YAA6Y;QAC3Z,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,sDAAsD;QACnE,YAAY,EAAE,sUAAsU;QACpV,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,4SAA4S;QAC1T,gBAAgB,EAAE,aAAa;QAC/B,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2CAA2C;QACxD,YAAY,EAAE,iXAAiX;QAC/X,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0CAA0C;QACvD,YAAY,EAAE,kUAAkU;QAChV,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,4CAA4C;QACzD,YAAY,EAAE,4UAA4U;QAC1V,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,GAAG;KAClB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,uCAAuC;QACpD,YAAY,EAAE,sNAAsN;QACpO,gBAAgB,EAAE,cAAc;QAChC,YAAY,EAAE,CAAC;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,MAA8C;IAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC;IAElD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,wBAAwB,SAAS,iGAAiG;SACnJ,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
|