thoughtleaders-cli 0.6.30__tar.gz → 0.6.32__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 (95) hide show
  1. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/.claude-plugin/plugin.json +1 -1
  2. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/PKG-INFO +1 -1
  3. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/pyproject.toml +1 -1
  4. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl/SKILL.md +2 -3
  5. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl/references/business-glossary.md +3 -3
  6. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl/references/postgres-schema.md +1 -1
  7. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/__init__.py +1 -1
  8. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/.claude-plugin/marketplace.json +0 -0
  9. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/.github/workflows/python-publish.yml +0 -0
  10. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/.gitignore +0 -0
  11. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/AGENTS.md +0 -0
  12. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/CLAUDE.md +0 -0
  13. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/LICENSE +0 -0
  14. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/README.md +0 -0
  15. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/agents/tl-analyst.md +0 -0
  16. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/commands/tl-balance.md +0 -0
  17. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/commands/tl-reports.md +0 -0
  18. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/commands/tl-sponsorships.md +0 -0
  19. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/commands/tl.md +0 -0
  20. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/docs/architecture.md +0 -0
  21. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/hooks/hooks.json +0 -0
  22. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/hooks/scripts/post-usage.sh +0 -0
  23. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/hooks/scripts/pre-check.sh +0 -0
  24. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl/references/elasticsearch-schema.md +0 -0
  25. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl/references/firebolt-schema.md +0 -0
  26. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-import/SKILL.md +0 -0
  27. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/SKILL.md +0 -0
  28. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/examples/e2e_findings.md +0 -0
  29. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/examples/golden_queries.md +0 -0
  30. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/columns_brands.md +0 -0
  31. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/columns_channels.md +0 -0
  32. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/columns_content.md +0 -0
  33. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/columns_sponsorships.md +0 -0
  34. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/intelligence_filterset_schema.json +0 -0
  35. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/intelligence_widget_schema.json +0 -0
  36. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/report_glossary.md +0 -0
  37. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/sortable_columns.json +0 -0
  38. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/sponsorship_filterset_schema.json +0 -0
  39. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/sponsorship_widget_schema.json +0 -0
  40. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/references/widgets.md +0 -0
  41. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/column_builder.md +0 -0
  42. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/database_query.md +0 -0
  43. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/keyword_research.md +0 -0
  44. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/name_resolver.md +0 -0
  45. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/sample_judge.md +0 -0
  46. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/similar_channels.md +0 -0
  47. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/topic_matcher.md +0 -0
  48. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/skills/tl-report-builder/tools/widget_builder.md +0 -0
  49. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/_completions.py +0 -0
  50. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/__init__.py +0 -0
  51. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/commands.py +0 -0
  52. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/finalize.py +0 -0
  53. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/login.py +0 -0
  54. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/pkce.py +0 -0
  55. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/auth/token_store.py +0 -0
  56. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/client/__init__.py +0 -0
  57. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/client/errors.py +0 -0
  58. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/client/http.py +0 -0
  59. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/__init__.py +0 -0
  60. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/_comments_common.py +0 -0
  61. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/ask.py +0 -0
  62. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/balance.py +0 -0
  63. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/brands.py +0 -0
  64. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/bulk_import.py +0 -0
  65. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/changelog.py +0 -0
  66. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/channels.py +0 -0
  67. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/credits.py +0 -0
  68. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/db.py +0 -0
  69. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/deals.py +0 -0
  70. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/describe.py +0 -0
  71. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/doctor.py +0 -0
  72. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/matches.py +0 -0
  73. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/proposals.py +0 -0
  74. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/recommender.py +0 -0
  75. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/reports.py +0 -0
  76. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/schema.py +0 -0
  77. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/setup.py +0 -0
  78. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/snapshots.py +0 -0
  79. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/sponsorships.py +0 -0
  80. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/uploads.py +0 -0
  81. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/commands/whoami.py +0 -0
  82. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/config.py +0 -0
  83. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/filters.py +0 -0
  84. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/hints.py +0 -0
  85. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/main.py +0 -0
  86. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/output/__init__.py +0 -0
  87. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/output/formatter.py +0 -0
  88. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/src/tl_cli/self_update.py +0 -0
  89. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/__init__.py +0 -0
  90. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/test_auth.py +0 -0
  91. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/test_filters.py +0 -0
  92. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/test_output.py +0 -0
  93. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/test_reports.py +0 -0
  94. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/tests/test_sponsorships.py +0 -0
  95. {thoughtleaders_cli-0.6.30 → thoughtleaders_cli-0.6.32}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tl-cli",
3
- "version": "0.6.30",
3
+ "version": "0.6.32",
4
4
  "description": "ThoughtLeaders CLI — query sponsorship deals, channels, brands, uploads, and intelligence from the terminal",
5
5
  "author": {
6
6
  "name": "ThoughtLeaders",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thoughtleaders-cli
3
- Version: 0.6.30
3
+ Version: 0.6.32
4
4
  Summary: ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence
5
5
  Project-URL: Homepage, https://thoughtleaders.io
6
6
  Project-URL: Repository, https://github.com/ThoughtLeaders-io/thoughtleaders-cli
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "thoughtleaders-cli"
7
- version = "0.6.30"
7
+ version = "0.6.32"
8
8
  description = "ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -77,7 +77,7 @@ Other key concepts:
77
77
  - Org scoping for sponsorships is profile-mediated: a sponsorship belongs to your org if **either** `creator_profile.organization` (brand side) **or** `ad_spot.channel.publication.profile.organization` (publisher side) matches yours.
78
78
  - **MSN** (Media Selling Network) — the ~11k YouTube channels that have opted in to receive sponsorship offers. A channels is in the MSN group if the `channel.media_selling_network_join_date` field is not null.
79
79
  - **MBN** (Media Buying Network) — the brand-side counterpart to MSN: brand profiles that have opted in to receive proposed sponsorships. A profile is in the MBN group if the `profile.media_buying_network_join_date` field is not null.
80
- - **TPP** (ThoughtLeaders Partner Program, a.k.a. "TL channels") — the smaller, exclusive ~169 channels TL manages directly. A channel is in the TPP group if the `channel.is_tl_channel` is True.
80
+ - **TPP** (ThoughtLeaders Partner Program, a.k.a. "TL channels") — the ~169 channels TL has the closest working relationship with. A channel is in the TPP group if `channel.is_tl_channel` is True. **Prefer TPP channels when booking**: they respond fastest, are the easiest to close, and don't need an outreach round-trip — treat them as immediately bookable. TPP is a strict subset of MSN, so the same booking rules (one active mention adspot, etc.) apply.
81
81
  - **`demographics_updated_at`** (on channel detail) — ISO timestamp of when demographic screenshots were last uploaded and processed via OCR. If non-null, the channel has demographics screenshots on file. If null, no screenshots have been uploaded. Use this to check whether a channel has demographics data from screenshots.
82
82
  - **`impression`** (on channels) — projected views per video on that channel. Forward-looking estimate. May be null when not yet computed.
83
83
  - **`views`** (on sponsorships) — actual view count of the sold and published sponsored video, accessible when `article_id` is set.
@@ -318,7 +318,7 @@ Always load the [references/business-glossary.md](references/business-glossary.m
318
318
 
319
319
  ### Key business concepts
320
320
 
321
- See [references/business-glossary.md](references/business-glossary.md) for revenue/pipeline definitions, performance grades, ownership fields, MSN/TPP, and team rosters.
321
+ See [references/business-glossary.md](references/business-glossary.md) for revenue/pipeline definitions, performance grades, ownership fields, channel quality and availability, MSN/TPP, and team rosters.
322
322
 
323
323
  ### Limitations of the `tl`-only data path
324
324
 
@@ -522,4 +522,3 @@ tl recommender inspect-brand Nike # Per-tag breakdo
522
522
  tl recommender similar-to-profile 842 --limit 30 # Channels closest to a brand profile's ideal profile
523
523
  ```
524
524
  Use `tl recommender top` for category/topic discovery (it's ranked) and `tl channels similar` / `tl brands similar` for 1:1 lookalike searches.
525
-
@@ -18,6 +18,7 @@ Maps business terms to database concepts.
18
18
  | **Weighted pipeline** | `SUM(weighted_price)` for open opps | Pre-calculated on save |
19
19
  | **Ad is live** | `publish_date IS NOT NULL` | Until publish_date is set, ad is not on YouTube |
20
20
  | **Cancellation risk** | Sold but `publish_date IS NULL` | Sold deals without publish_date can still be canceled |
21
+ | **Immediately bookable** | `is_tl_channel = true` | TPP channels — TL's closest partners. Fastest to respond, easiest to close, prefer when booking. |
21
22
 
22
23
  ## Performance Grade (`adlink.performance_grade`)
23
24
 
@@ -75,7 +76,7 @@ Maps business terms to database concepts.
75
76
  - Channels where TL has **≥80% confidence** they can buy an ad tomorrow
76
77
  - Key data: **who is the contact** to buy the ad from
77
78
  - `thoughtleaders_channel.media_selling_network_join_date` = when channel joined MSN
78
- - `thoughtleaders_channel.is_tl_channel` = TPP/VIP channel (subset of MSN)
79
+ - `thoughtleaders_channel.is_tl_channel` = TPP channel — TL's closest partners, a strict subset of MSN. **Prefer when booking**: fastest response, easiest to close. Not a gating flag; not a process barrier.
79
80
  - **Rule:** Only one active adspot with `integration=mention` per channel at any time
80
81
  - MSN quality depends on having current, accurate contact info
81
82
 
@@ -87,7 +88,7 @@ Vocabulary that AMs use about channels, mapped to the actual DB encoding. Most o
87
88
  |---------------|------------|-------|
88
89
  | **Subscribers** | `thoughtleaders_channel.reach` (bigint) | ⚠️ There is no `subscribers` column. The DB column is `reach`. |
89
90
  | **MSN member** | `media_selling_network_join_date IS NOT NULL` | Whole MSN pool. NOT `is_tl_channel = true` — that's the VIP subset only. |
90
- | **TPP / VIP channel** | `is_tl_channel = true` | The small VIP subset of MSN (~144 channels at 100k+ reach). Don't use as a general "MSN" proxy — silently drops ~98% of MSN. |
91
+ | **TPP / TL channel** | `is_tl_channel = true` | TL's closest-partner channels (~144 at 100k+ reach). Prefer when booking — fastest to respond, easiest to close. A strict subset of MSN; *don't* use as a general "MSN" proxy — silently drops ~98% of MSN. |
91
92
  | **Active channel** | `is_active = true AND last_published >= CURRENT_DATE - INTERVAL '120 days'` | Standard filter for "channel is live and posting." Always include `is_active = true` in channel queries. |
92
93
  | **Country / Geo of a deal** | `thoughtleaders_channel.country` (ISO 3166-1 alpha-2) | `thoughtleaders_adlink` has NO geo column. Geo for sponsorships almost always means the channel's country. |
93
94
  | **Language of a channel** | `thoughtleaders_channel.language` (short ISO 639 code) | ⚠️ Short ISO 639 codes — NOT BCP-47. Mostly 2-letter ISO 639-1 (`en`, `pt`, `hi`) for major languages; occasionally 3-letter ISO 639-2/3 (`arc`, `arz`, `ase`, `ceb`) for languages without a 2-letter code. Filtering with BCP-47 (`en-US`/`pt-BR`) returns zero. Don't assume `LENGTH(language) = 2`. |
@@ -240,4 +241,3 @@ WHERE al.owner_publisher_id IN (218, 5710, 873, 9011, 11361)
240
241
  SELECT ... FROM thoughtleaders_profile p
241
242
  WHERE p.owner_publisher_id IN (71, 9274, 18159, 5799, 5804, 10743, 11592)
242
243
  ```
243
-
@@ -197,7 +197,7 @@ A channel can have multiple adspots (different sellers: talent manager, direct,
197
197
  | `slug` | varchar | TL platform slug. Used to build the canonical TL channel URL: `https://app.thoughtleaders.io/youtube/<slug>`. Prefer this over `url` when linking to a channel from any AM-facing surface (reports, samples, Slack posts) — the TL URL keeps the user inside the platform and is the company's hyperlink contract. Falls back to an ID-based TL path if `slug` is NULL; never fall back to the external YouTube URL. |
198
198
  | `reach` | bigint | Subscriber count. ⚠️ There is NO `subscribers` column — `reach` is the subscriber count. Many internal docs and outputs use the word "subscribers"; in SQL, always query `reach`. |
199
199
  | `media_selling_network_join_date` | date/timestamptz | When channel joined MSN. **MSN membership = this column IS NOT NULL.** |
200
- | `is_tl_channel` | boolean | True = TPP/VIP channel (the small VIP subset, ~144 channels at 100k+ reach). ⚠️ **`is_tl_channel` is NOT the MSN flag.** Naive `WHERE is_tl_channel = true` as an "MSN filter" silently drops ~98% of the MSN pool (8,652 → 144 at 100k+). For MSN, use `media_selling_network_join_date IS NOT NULL`. |
200
+ | `is_tl_channel` | boolean | True = TPP channel TL's closest-partner channels (~144 at 100k+ reach), a strict subset of MSN. Prefer when booking: fastest response, easiest to close. ⚠️ **Not the MSN flag.** Naive `WHERE is_tl_channel = true` as an "MSN filter" silently drops ~98% of the MSN pool (8,652 → 144 at 100k+). For MSN, use `media_selling_network_join_date IS NOT NULL`. |
201
201
  | `content_category` | int | Content category code (1–22). See "`content_category` Constants" below for the code → label mapping. ⚠️ **Data-quality notes:** (1) per-row category assignments are often inconsistent with the official label (e.g. cat 15 = Technology, but many top-`reach` channels in cat 15 are clearly Entertainment). (2) Several codes are essentially unused in practice — codes 1, 2, 4, 6, 7, 8, 9, 11, 13 (Backend Development, Design, Frontend Development, Marketing, Mobile Development, Sales, Travel, Photography, Personal Finance) return ~0 active high-reach channels. Most travel creators land under Lifestyle (5), not Travel (9). The label table below is authoritative; the per-row assignment is best-effort. **For topic/category discovery, prefer `tl recommender top-channels "<tag>"` (ranked) over `WHERE content_category = <code>` (equality). |
202
202
  | `is_active` | boolean | Whether the channel is active. ⚠️ **Always include `is_active = true` in channel queries** unless explicitly looking for archived rows. |
203
203
  | `country` | varchar | Channel's primary country (ISO 3166-1 alpha-2 code, e.g. `US`, `GB`, `BR`). Often the cleanest answer to "geo" questions on sponsorships (since adlink itself has no geo). May be NULL or blank on ~10% of channels. |
@@ -1,3 +1,3 @@
1
1
  """ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence."""
2
2
 
3
- __version__ = "0.6.30"
3
+ __version__ = "0.6.32"