- amplitude: mask api_key in dry-run body output - livestorm: add missing Bearer prefix to Authorization header - mixpanel: mask token/$token in dry-run ingestion body output - onesignal: change auth from 'Key' to 'Basic' per OneSignal REST API docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| activecampaign.js | ||
| adobe-analytics.js | ||
| ahrefs.js | ||
| amplitude.js | ||
| apollo.js | ||
| beehiiv.js | ||
| brevo.js | ||
| buffer.js | ||
| calendly.js | ||
| clearbit.js | ||
| customer-io.js | ||
| dataforseo.js | ||
| demio.js | ||
| dub.js | ||
| g2.js | ||
| ga4.js | ||
| google-ads.js | ||
| google-search-console.js | ||
| hotjar.js | ||
| hunter.js | ||
| instantly.js | ||
| intercom.js | ||
| keywords-everywhere.js | ||
| kit.js | ||
| klaviyo.js | ||
| lemlist.js | ||
| linkedin-ads.js | ||
| livestorm.js | ||
| mailchimp.js | ||
| mention-me.js | ||
| meta-ads.js | ||
| mixpanel.js | ||
| onesignal.js | ||
| optimizely.js | ||
| paddle.js | ||
| partnerstack.js | ||
| plausible.js | ||
| postmark.js | ||
| README.md | ||
| resend.js | ||
| rewardful.js | ||
| savvycal.js | ||
| segment.js | ||
| semrush.js | ||
| sendgrid.js | ||
| snov.js | ||
| tiktok-ads.js | ||
| tolt.js | ||
| trustpilot.js | ||
| typeform.js | ||
| wistia.js | ||
| zapier.js | ||
Marketing CLIs
Zero-dependency, single-file CLI tools for marketing platforms that don't ship their own.
Every CLI is a standalone Node.js script (Node 18+) with no npm install required — just chmod +x and go.
Install
Option 1: Run directly
node tools/clis/ahrefs.js backlinks list --target example.com
Option 2: Symlink for global access
# Symlink any CLI you want available globally
ln -sf "$(pwd)/tools/clis/ahrefs.js" ~/.local/bin/ahrefs
ln -sf "$(pwd)/tools/clis/resend.js" ~/.local/bin/resend
# Then use directly
ahrefs backlinks list --target example.com
resend send --from you@example.com --to them@example.com --subject "Hello" --html "<p>Hi</p>"
Option 3: Add the whole directory to PATH
export PATH="$PATH:/path/to/marketingskills/tools/clis"
Authentication
Every CLI reads credentials from environment variables:
| CLI | Environment Variable |
|---|---|
activecampaign |
ACTIVECAMPAIGN_API_KEY, ACTIVECAMPAIGN_API_URL |
adobe-analytics |
ADOBE_ACCESS_TOKEN, ADOBE_CLIENT_ID, ADOBE_COMPANY_ID |
ahrefs |
AHREFS_API_KEY |
amplitude |
AMPLITUDE_API_KEY, AMPLITUDE_SECRET_KEY |
apollo |
APOLLO_API_KEY |
beehiiv |
BEEHIIV_API_KEY |
brevo |
BREVO_API_KEY |
buffer |
BUFFER_API_KEY |
calendly |
CALENDLY_API_KEY |
clearbit |
CLEARBIT_API_KEY |
customer-io |
CUSTOMERIO_APP_KEY (App API), CUSTOMERIO_SITE_ID + CUSTOMERIO_API_KEY (Track API) |
dataforseo |
DATAFORSEO_LOGIN, DATAFORSEO_PASSWORD |
demio |
DEMIO_API_KEY, DEMIO_API_SECRET |
dub |
DUB_API_KEY |
g2 |
G2_API_TOKEN |
ga4 |
GA4_ACCESS_TOKEN |
google-ads |
GOOGLE_ADS_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_CUSTOMER_ID |
google-search-console |
GSC_ACCESS_TOKEN |
hotjar |
HOTJAR_CLIENT_ID, HOTJAR_CLIENT_SECRET |
intercom |
INTERCOM_API_KEY |
keywords-everywhere |
KEYWORDS_EVERYWHERE_API_KEY |
kit |
KIT_API_KEY, KIT_API_SECRET |
klaviyo |
KLAVIYO_API_KEY |
linkedin-ads |
LINKEDIN_ACCESS_TOKEN |
livestorm |
LIVESTORM_API_TOKEN |
mailchimp |
MAILCHIMP_API_KEY |
mention-me |
MENTIONME_API_KEY |
meta-ads |
META_ACCESS_TOKEN, META_AD_ACCOUNT_ID |
mixpanel |
MIXPANEL_TOKEN (ingestion), MIXPANEL_API_KEY + MIXPANEL_SECRET (query) |
onesignal |
ONESIGNAL_REST_API_KEY, ONESIGNAL_APP_ID |
optimizely |
OPTIMIZELY_API_KEY |
paddle |
PADDLE_API_KEY, PADDLE_SANDBOX (optional) |
partnerstack |
PARTNERSTACK_PUBLIC_KEY, PARTNERSTACK_SECRET_KEY |
plausible |
PLAUSIBLE_API_KEY, PLAUSIBLE_BASE_URL (optional, for self-hosted) |
postmark |
POSTMARK_API_KEY |
resend |
RESEND_API_KEY |
rewardful |
REWARDFUL_API_KEY |
savvycal |
SAVVYCAL_API_KEY |
segment |
SEGMENT_WRITE_KEY (tracking), SEGMENT_ACCESS_TOKEN (profile) |
semrush |
SEMRUSH_API_KEY |
sendgrid |
SENDGRID_API_KEY |
tiktok-ads |
TIKTOK_ACCESS_TOKEN, TIKTOK_ADVERTISER_ID |
tolt |
TOLT_API_KEY |
trustpilot |
TRUSTPILOT_API_KEY, TRUSTPILOT_API_SECRET, TRUSTPILOT_BUSINESS_UNIT_ID |
typeform |
TYPEFORM_API_KEY |
hunter |
HUNTER_API_KEY |
instantly |
INSTANTLY_API_KEY |
lemlist |
LEMLIST_API_KEY |
snov |
SNOV_CLIENT_ID, SNOV_CLIENT_SECRET |
wistia |
WISTIA_API_KEY |
zapier |
ZAPIER_API_KEY |
Security
Never hardcode API keys or tokens in scripts. All CLIs read credentials exclusively from environment variables.
- Store keys in your shell profile (
~/.zshrc,~/.bashrc) or a.envfile - The
.envfile is gitignored — but double-check before committing - Use
--dry-runon any command to preview the request without sending it (credentials are masked as***) - If you fork this repo, audit your commits to ensure no secrets are included
Command Pattern
All CLIs follow the same structure:
{tool} <resource> <action> [options]
Examples:
ahrefs backlinks list --target example.com --limit 50
semrush keywords overview --phrase "marketing automation" --database us
mailchimp campaigns list --limit 20
resend send --from you@example.com --to them@example.com --subject "Hello" --html "<p>Hi</p>"
dub links create --url https://example.com/landing --key summer-sale
Output
All CLIs output JSON to stdout for easy piping:
# Pipe to jq
ahrefs backlinks list --target example.com | jq '.backlinks[].url_from'
# Save to file
semrush keywords overview --phrase "saas marketing" --database us > keywords.json
# Use in scripts
DOMAINS=$(rewardful affiliates list | jq -r '.data[].email')
Available CLIs
| CLI | Category | Tool |
|---|---|---|
activecampaign.js |
Email/CRM | ActiveCampaign |
adobe-analytics.js |
Analytics | Adobe Analytics |
ahrefs.js |
SEO | Ahrefs |
amplitude.js |
Analytics | Amplitude |
apollo.js |
Data Enrichment | Apollo.io |
beehiiv.js |
Newsletter | Beehiiv |
brevo.js |
Email/SMS | Brevo |
buffer.js |
Social | Buffer |
calendly.js |
Scheduling | Calendly |
clearbit.js |
Data Enrichment | Clearbit |
customer-io.js |
Customer.io | |
dataforseo.js |
SEO | DataForSEO |
demio.js |
Webinar | Demio |
dub.js |
Links | Dub.co |
g2.js |
Reviews | G2 |
ga4.js |
Analytics | Google Analytics 4 |
google-ads.js |
Ads | Google Ads |
google-search-console.js |
SEO | Google Search Console |
hotjar.js |
CRO | Hotjar |
hunter.js |
Email Outreach | Hunter.io |
instantly.js |
Email Outreach | Instantly.ai |
intercom.js |
Messaging | Intercom |
keywords-everywhere.js |
SEO | Keywords Everywhere |
kit.js |
Kit | |
klaviyo.js |
Email/SMS | Klaviyo |
lemlist.js |
Email Outreach | Lemlist |
linkedin-ads.js |
Ads | LinkedIn Ads |
livestorm.js |
Webinar | Livestorm |
mailchimp.js |
Mailchimp | |
mention-me.js |
Referral | Mention Me |
meta-ads.js |
Ads | Meta Ads |
mixpanel.js |
Analytics | Mixpanel |
onesignal.js |
Push | OneSignal |
optimizely.js |
A/B Testing | Optimizely |
paddle.js |
Payments | Paddle |
partnerstack.js |
Affiliate | PartnerStack |
plausible.js |
Analytics | Plausible |
postmark.js |
Postmark | |
resend.js |
Resend | |
rewardful.js |
Referral | Rewardful |
savvycal.js |
Scheduling | SavvyCal |
segment.js |
Analytics | Segment |
semrush.js |
SEO | SEMrush |
sendgrid.js |
SendGrid | |
snov.js |
Email Outreach | Snov.io |
tiktok-ads.js |
Ads | TikTok Ads |
tolt.js |
Referral | Tolt |
trustpilot.js |
Reviews | Trustpilot |
typeform.js |
Forms | Typeform |
wistia.js |
Video | Wistia |
zapier.js |
Automation | Zapier |