npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

awesome-emoji-cli

v0.2.0

Published

CLI tool for automatic emoji pack generation

Readme

Version License Build Tests

Node TypeScript Gemini AI Sharp


Selling emoji and sticker packs on KakaoTalk, LINE, Telegram, and OGQ is a real business — creators earn thousands monthly from packs that resonate. But the pipeline from idea to store-ready ZIP is brutal: character design, 45+ sticker variations, background removal, platform-specific resizing, localized metadata, and separate bundles for every marketplace. awesome-emoji collapses that entire workflow into a single CLI command powered by Gemini AI.


:sparkles: Features

:brain: AI Expert Panel

Three specialized AI personas — Market Analyst, Art Director, and Cultural Expert — independently evaluate your concept before a Chief Creative Director synthesizes their insights into a unified creative strategy. This isn't a single prompt — it's a structured debate.

:art: 5 Visual Styles

Choose from Chibi/Meme, Clean Cartoon, Pixel/Retro, Expressive Anime, or Original/Balanced — or let the AI pick the best fit for your concept and target market.

:package: 6 Platform Targets

Export submission-ready packs for KakaoTalk, LINE, Telegram, and OGQ with correct dimensions, formats, thumbnails, and tab images — all from one command.

:scissors: ML-Free Background Removal

Custom Sobel edge detection + flood-fill algorithm removes backgrounds cleanly with zero ML dependencies. Includes automatic defringing to eliminate color halos around edges.

:globe_with_meridians: AI Metadata with SEO

Auto-generates 3 metadata variants per pack with localized titles, descriptions, and 20 SEO tags in Korean, Japanese, and Traditional Chinese — each self-scored so you can pick the strongest option.

:robot: Machine-Readable Output

Pass --json for structured NDJSON on stdout — every pipeline stage, progress event, and result streamed as machine-readable records. Built for AI agent integration and CI/CD workflows.

:gear: Auto Decision Engine

Intelligent defaults resolve optimal platforms, language, and visual style from your target market. Specify --market kakaotalk and it handles the rest.

:test_tube: Battle-Tested

2,184 lines of tests covering 145+ edge cases including integration tests, service validation, and full pipeline reliability checks.


:computer: Demo

$ awesome-emoji generate -c "a cheerful capybara wearing a tiny hat"

  awesome-emoji-cli v0.1.0

  Concept:   a cheerful capybara wearing a tiny hat
  Style:     auto (AI will decide)
  Platforms: auto (market analysis)

  [1/8] Analyzing concept...
    ├─ Market Analyst:   High demand for animal characters in KR/JP markets
    ├─ Art Director:     Recommending "Clean Cartoon" style for broad appeal
    └─ Cultural Expert:  Capybara trending across all target regions ✓

  [2/8] Generating character sheet...          done (4.2s)
  [3/8] Selecting visual style... Clean Cartoon
  [4/8] Ideating emote expressions...          done (3.1s)
    └─ 24 expressions generated (happy, sad, angry, love, sleeping...)

  [5/8] Generating sticker images...           done (28.6s)
    └─ 24/24 stickers rendered

  [6/8] Post-processing images...              done (6.3s)
    ├─ Background removal (Sobel + flood-fill)
    ├─ Resized for 6 platform targets
    └─ Quality check passed

  [7/8] Generating metadata...                 done (5.1s)
    ├─ 3 title variants per locale (ko, ja, zh-TW)
    ├─ SEO tags generated
    └─ Best variant auto-selected (score: 0.94)

  [8/8] Exporting platform bundles...          done (1.8s)

  ✔ Complete! Generated 6 submission-ready packs:

  output/
  ├── ogq-sticker-740x640/           24 images + metadata.json
  ├── line-sticker-370x320/          24 images + metadata.json
  ├── line-emoji-180x180/            24 images + metadata.json
  ├── kakaotalk-emoticon-360x360/    24 images + metadata.json
  ├── kakaotalk-mini-180x180/        24 images + metadata.json
  └── telegram-static-512x512/       24 images + metadata.json

  Total: 144 images | 6 ZIPs | 3 locales | 49.3s elapsed

:rocket: Quick Start

1. Install

npm install -g awesome-emoji-cli

2. Set your Gemini API key

awesome-emoji config set-key YOUR_GEMINI_API_KEY
# Persists to ~/.awesome-emoji/config.json — you only do this once

3. Generate your first emoji pack

awesome-emoji generate -c "a cheerful orange cat who loves coffee"

4. Find your output

ls ./output/
# main_character.png  stickers/  processed/  metadata.json  session.json
# Plus submission-ready ZIPs for every target platform

:bulb: Usage

Basic — just describe your concept:

awesome-emoji generate -c "a sleepy panda studying for exams"

Target a specific market and language:

awesome-emoji generate \
  -c "cute bread character with expressive reactions" \
  --market kakaotalk \
  --language ko \
  --platforms kakaotalk_emoticon,kakaotalk_mini

Advanced — reference image, custom outline, JSON output:

awesome-emoji generate \
  -c "my existing mascot as a sticker pack" \
  --reference-image ./mascot.png \
  --outline black \
  --outline-thickness 5 \
  --outline-opacity 80 \
  --json \
  -o ./release/v2

Post-process existing images:

awesome-emoji postprocess -s ./my-stickers/ --market kakaotalk

Dry run (no API key needed):

awesome-emoji generate -c "test concept" --dry-run

:earth_asia: Platforms

| Platform | Target | Dimensions | Format | Sticker Count | |:---:|:---:|:---:|:---:|:---:| | OGQ | Sticker | 740 x 640 | PNG | 16–40 | | LINE | Sticker | 370 x 320 | PNG | 8–40 | | LINE | Emoji | 180 x 180 | PNG | 40 | | KakaoTalk | Emoticon | 360 x 360 | PNG | 16–40 | | KakaoTalk | Mini Emoticon | 180 x 180 | PNG | 16–40 | | Telegram | Static Sticker | 512 x 512 | PNG/WEBP | up to 120 |

  • OGQ Sticker — 740x640px, transparent PNG, metadata in Korean
  • LINE Sticker — 370x320px (with surrounding margin), transparent PNG
  • LINE Emoji — 180x180px, transparent PNG, strict sizing requirements
  • KakaoTalk Emoticon — 360x360px, transparent PNG, Korean metadata required
  • KakaoTalk Mini — 180x180px, same as above but smaller format
  • Telegram Static — 512x512px, PNG or WEBP, one side must be exactly 512px

All exports include correctly structured metadata files ready for direct submission to each platform's creator portal.


:building_construction: Architecture

Your text concept enters the Expert Panel, where three Gemini-powered AI personas — a Market Analyst, Art Director, and Cultural Expert — independently evaluate your idea against target market dynamics, then a Chief Creative Director synthesizes their recommendations into a unified strategy with a chosen visual style. That strategy drives the Generation Pipeline: character creation, 45+ emote variations rendered in one of five visual styles (Chibi/Meme, Clean Cartoon, Pixel/Retro, Expressive Anime, or Original/Balanced), each processed through Sharp-based background removal (Sobel edge detection + flood-fill, no ML) and configurable outline generation. The pipeline then generates three self-scored metadata variants with localized titles, descriptions, and SEO tags. Finally, the Export Bundler resizes every sticker to each platform's exact spec, packages thumbnails and tab images, and writes submission-ready ZIPs — one per platform format.

flowchart LR
    A["fa:fa-keyboard Text Concept"] --> B["1. Concept\nAnalysis"]
    B --> C["2. Character\nGeneration"]
    C --> D["3. Style\nSelection"]
    D --> E["4. Emote\nIdeation"]
    E --> F["5. Sticker\nGeneration"]
    F --> G["6. Post-Processing"]
    G --> H["7. Metadata\nGeneration"]
    H --> I["8. Platform\nExport"]

    I --> J["fa:fa-file-zipper OGQ\n740x640"]
    I --> K["fa:fa-file-zipper LINE Sticker\n370x320"]
    I --> L["fa:fa-file-zipper LINE Emoji\n180x180"]
    I --> M["fa:fa-file-zipper KakaoTalk\n360x360"]
    I --> N["fa:fa-file-zipper KakaoTalk Mini\n180x180"]
    I --> O["fa:fa-file-zipper Telegram\n512x512"]

    subgraph ai ["Gemini AI"]
        B
        C
        D
        E
        F
        H
    end

    subgraph processing ["Sharp Pipeline"]
        G
    end

    style ai fill:#E8D5F5,stroke:#8E75B2,stroke-width:2px
    style processing fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px
    style A fill:#FFF3E0,stroke:#FF9800,stroke-width:2px
    style I fill:#E3F2FD,stroke:#2196F3,stroke-width:2px

:wrench: Configuration

awesome-emoji resolves your Gemini API key from three sources, checked in order:

  1. CLI flag--api-key YOUR_KEY (highest priority, useful for CI)
  2. Environment variableGEMINI_API_KEY
  3. Config file~/.awesome-emoji/config.json (set once with awesome-emoji config set-key)
# Save your key persistently
awesome-emoji config set-key YOUR_KEY

# Check which key is active (masked output)
awesome-emoji config get-key

# Remove a stored key
awesome-emoji config delete-key

Model Fallback: The CLI targets gemini-3.1-pro-preview for text reasoning and gemini-2.5-flash-image for image generation. If a primary model is unavailable or rate-limited, the fallback chain automatically retries with gemini-2.5-flash — no configuration needed.


:test_tube: Testing

npm test

The test suite includes 145+ test cases across three categories:

  • CLI tests — End-to-end subprocess tests validating command parsing and output
  • Core tests — Direct module tests for market resolver, auto-decision engine, and constants
  • Edge case tests — Comprehensive service validation covering boundary conditions and error paths

:handshake: Contributing

Contributions are welcome and appreciated. Whether it's a bug fix, a new platform format, or a better background removal algorithm — open an issue or submit a pull request. All skill levels belong here.


:scroll: License

Released under the MIT License. Use it, modify it, ship it.