
Product
Socket Threat Intel Now Shows Which Malware Campaigns Were Blocked or Detected
Socket Threat Intel now shows which malware campaigns were blocked or detected in your organization, with links to scans and Firewall events.
Free, local-first App Store Optimization CLI + agent skills. Keyword popularity, difficulty, ranks and history in SQLite.
Free, local App Store Optimization for you and your AI agent.
npm i -g aso-kit && aso setup
~/.aso/aso.db). Track ranks daily and see what moved.No account, no server, no telemetry. MIT.
Needs Node.js 22.13+.
npm i -g aso-kit # installs the `aso` command
npx skills add hristo2612/aso-cli # optional: the agent skills
aso setup # Apple ID → Keychain, your app, sign in
Just want to try it? npx aso-kit search "habit tracker" runs without installing anything.
Prefer one line that does all of the above, including a Node check?
curl -fsSL https://raw.githubusercontent.com/hristo2612/aso-cli/main/install.sh | bash
aso keywords "white noise,sleep sounds,rain sounds" # popularity, difficulty, rank
aso suggest meditation # keyword ideas
aso search "habit tracker" # who ranks right now
aso app 1083248251 # any app's public listing
aso lint --title "Lumen: Sleep Sounds" --subtitle "White noise & rain" --keywords "fan,ocean,storm"
Track rankings over time:
aso track add 1234567890 "white noise,sleep sounds"
aso track run # add to cron: 0 9 * * * aso track run --json >> ~/.aso/track.log 2>&1
aso ranks 1234567890 # rank, change since last check, popularity, difficulty
aso history "white noise" --app 1234567890
With the skills installed, just ask your agent: "Do a full ASO audit of my app 1234567890 and propose a new subtitle and keyword field."
Popularity scores come from Apple Search Ads. You need an Apple ID that can open app-ads.apple.com:
aso setup.If your Apple Ads account has several orgs (campaign groups), pick the one that owns your app: aso config orgId <id>. The id is the number in app-ads.apple.com/cm/app/<id>/….
Everything except popularity (search, ranks, difficulty, lint, history) works without Apple Ads.
How sign-in works: aso login opens your installed Chrome with a dedicated profile (~/.aso/browser). It fills your Apple ID from the Keychain and, on macOS, reads the verification code from the system "Apple Account Verification" prompt. That needs Accessibility permission for your terminal; otherwise you type the code yourself. Only the Apple Ads session cookies are saved, to ~/.aso/session.json (mode 600). When the session expires, aso signs in again on its own (aso config autoLogin false turns that off). On Linux, set ASO_APPLE_PASSWORD instead of using the Keychain.
| Field | Meaning |
|---|---|
popularity | Apple Search Ads popularity, 5–100. Apple reports low-volume terms as 5; aso re-checks those through recommendations, which often return the real value. |
difficulty | 1–100 estimate from the top 5 apps (ratings, rating velocity, quality, recency, keyword in title/subtitle) and the number of competing apps. |
opportunity | popularity × (100 − difficulty) / 100: a sort key, not a forecast. |
rank | Your position in App Store search. The top ~10 come from the App Store web page, deeper positions from the iTunes Search API. null means not in the top 200. |
All commands print JSON when piped (for agents) and tables in a terminal. See docs/COMMANDS.md for the full reference.
| Skill | Use it for |
|---|---|
aso | Entry point: preflight, Apple search rules, routing |
aso-keyword-research | Seed → ideas → scored shortlist |
aso-metadata | Title, subtitle, keyword field drafts, linted and logged |
aso-competitors | Who you're up against, keyword gaps |
aso-audit | A–F health check of a listing |
aso-tracking | Rank tracking and before/after measurement |
aso-localization | New markets, native keywords, cross-locale indexing |
aso never uploads metadata. Ship changes with fastlane deliver or App Store Connect.
aso limits itself to about one request per second.git clone https://github.com/hristo2612/aso-cli && cd aso-cli && npm install
npm test
node bin/aso.js --help
ASO_HOME=/tmp/aso-dev node bin/aso.js status # isolated config/db
Releasing: bump version in package.json (npm version patch) and push to main. GitHub Actions publishes to npm via trusted publishing and creates the GitHub release.
No build step: plain Node ESM, SQLite via the built-in node:sqlite, and one dependency (playwright-core, used only for sign-in).
FAQs
Free, local-first App Store Optimization CLI + agent skills. Keyword popularity, difficulty, ranks and history in SQLite.
The npm package aso-kit receives a total of 14 weekly downloads. As such, aso-kit popularity was classified as not popular.
We found that aso-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Product
Socket Threat Intel now shows which malware campaigns were blocked or detected in your organization, with links to scans and Firewall events.

Security News
Fixes for eMudhra and Brotli are out. Getting them everywhere they’re needed means tracking down bundled libraries, runtimes, and certificate stores.

Threat Research
/Security News
Socket uncovered secret-stealing workflows that ran in LiteLLM’s GitHub repository 11 days before the supply chain attack on PyPI and Docker.