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

@future-scholars/paperlib-format-pubname-extension

v0.0.6

Published

This extension helps you automatically format the publication name. For example: 2017 ABC Conference -> ABC Conference.

Readme

Paperlib Format Publication Name Extension

Paperlib Format Publication Name Extension

This extension helps you automatically format the publication name when you import a paper into your library. For example: 2017 ABC Conference -> ABC Conference. It also supports define your custom formats.

For existing papers in your library, it provides a command \format_pubnames. Run it and boom!

Features

  • Multi-domain Presets: Built-in presets for CV, ML, AI, NLP, Data Mining, and Journals
  • Custom Formats: Define your own publication name formats with highest priority
  • Flexible Matching: Support for exact match or fuzzy match
  • Year Removal: Automatically remove year strings from publication names

Installation

Local Installation

  1. Clone or download this repository
  2. Install dependencies:
    pnpm install
  3. Build the extension:
    pnpm build
  4. In Paperlib, go to Settings → Extensions → Install from local folder
  5. Select the project root directory (the folder containing package.json)

Usage

Presets

Enable the presets you need in the extension preferences. Each preset covers a specific domain:

| Preset | Conferences/Journals | |--------|---------------------| | CV Preset | CVPR, ICCV, ECCV | | ML Preset | NeurIPS, ICLR, ICML, AISTATS, COLT | | AI Preset | AAAI, IJCAI, ECAI, UAI, HRI | | NLP Preset | ACL, EMNLP, NAACL, COLING, CL Journal | | DM Preset | KDD, ICDM, WWW, WSDM, SIGIR | | Journal Preset | T-PAMI, T-IP, T-NNLS, JMLR, TMLR, JAIR, etc. |

Matching Priority

Custom format → Presets (merged) → Original name
  1. Custom format is matched first (highest priority)
  2. If no match, enabled presets are merged and matched
  3. Keys are sorted by length (longest first) for precise matching

Preferences

| Option | Type | Default | Description | |--------|------|---------|-------------| | Remove year | boolean | true | Remove year string from publication names | | CV Preset | boolean | false | Computer Vision conferences | | ML Preset | boolean | false | Machine Learning conferences | | AI Preset | boolean | false | Artificial Intelligence conferences | | NLP Preset | boolean | false | NLP conferences | | DM Preset | boolean | false | Data Mining & IR conferences | | Journal Preset | boolean | false | Journals | | Custom format | string | "" | Custom format JSON (highest priority) | | Exact match | boolean | false | Exact match for both presets and custom format |

Custom Formats

Define custom formats in JSON. Custom formats have the highest priority and will override presets:

{"CVPR": "CVPR", "NeurIPS": "NeurIPS"}

Command

Use \format_pubnames command to format publication names for all existing papers in your library.


Developer Guide

Project Structure

paperlib-formatX-pubname-extension/
├── src/
│   └── main.ts          # Main extension code
├── dist/                # Built extension (generated)
├── package.json         # Package configuration
├── tsconfig.json        # TypeScript configuration
├── vite.config.ts       # Vite build configuration
└── readme.md            # This file

Code Architecture

// Presets are organized by domain
const PRESETS = {
  cv: { /* CVPR, ICCV, ECCV */ },
  ml: { /* NeurIPS, ICLR, ICML, ... */ },
  ai: { /* AAAI, IJCAI, ECAI, UAI, HRI */ },
  nlp: { /* ACL, EMNLP, NAACL, COLING */ },
  dm: { /* KDD, ICDM, WWW, WSDM, SIGIR */ },
  journal: { /* T-PAMI, JMLR, ... */ },
};

Matching Flow

┌─────────────────────────────────────────────────────────────┐
│                    Input: publication                        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│              removeYear enabled? ──No──→ Skip                │
│                    │Yes                                      │
│                    ▼                                         │
│              Remove year (e.g., "2023 CVPR" → "CVPR")        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│        customFormat exists? ──No──→ Go to Step B             │
│                    │Yes                                      │
│                    ▼                                         │
│    Step A: Match in customFormat (sorted by key length)     │
│    ┌─────────────────────────────────────────────┐          │
│    │ exactMatch?                                 │          │
│    │   Yes: publication === key?                 │          │
│    │   No:  publication.includes(key)?           │          │
│    │        && !includes("workshop")             │          │
│    └─────────────────────────────────────────────┘          │
│                    │                                         │
│            ┌───────┴───────┐                                 │
│            ▼               ▼                                 │
│        Match found      No match                             │
│            │               │                                 │
│            ▼               ▼                                 │
│     Return custom      Continue to Step B                    │
│        result                                                │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│    Step B: Check if any preset is enabled                    │
│                                                              │
│    All presets disabled? ──Yes──→ Return original           │
│                    │No                                       │
│                    ▼                                         │
│    Merge all enabled presets → presetMap                    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│    Step C: Match in presetMap (sorted by key length)        │
│    ┌─────────────────────────────────────────────┐          │
│    │ exactMatch?                                 │          │
│    │   Yes: publication === key?                 │          │
│    │   No:  publication.includes(key)?           │          │
│    │        && !includes("workshop")             │          │
│    └─────────────────────────────────────────────┘          │
│                    │                                         │
│            ┌───────┴───────┐                                 │
│            ▼               ▼                                 │
│        Match found      No match                             │
│            │               │                                 │
│            ▼               ▼                                 │
│     Return preset      Return original                       │
│        result          publication                           │
└─────────────────────────────────────────────────────────────┘

Adding New Presets

To add a new preset:

  1. Add a new key to PRESETS object in src/main.ts:

    const PRESETS = {
      // ... existing presets
      newDomain: {
        "Full Conference Name": "Formatted Name (Abbreviation)",
        "Abbreviation": "Formatted Name (Abbreviation)",
      },
    };
  2. Add corresponding preference in defaultPreference:

    newDomainPreset: {
      type: "boolean",
      name: "New Domain Preset",
      description: "Description of the preset",
      value: false,
      order: X,  // appropriate order number
    },
  3. Update _getPresetMap() to include the new preset:

    if (prefs.newDomainPreset) Object.assign(merged, PRESETS.newDomain);
  4. Update the preference reading in modifyPubnameHook() and formatLibrary()

  5. Rebuild: pnpm build

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/new-feature
  3. Make your changes
  4. Build and test: pnpm build
  5. Submit a pull request

Preset Details

Computer Vision (CV Preset)

| Key | Formatted Name | |-----|----------------| | CVPR | IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) | | ICCV | IEEE/CVF International Conference on Computer Vision (ICCV) | | ECCV | European Conference on Computer Vision (ECCV) |

Machine Learning (ML Preset)

| Key | Formatted Name | |-----|----------------| | NeurIPS/NIPS | Advances in Neural Information Processing Systems (NeurIPS) | | ICLR | International Conference on Learning Representations (ICLR) | | ICML | International Conference on Machine Learning (ICML) | | AISTATS | International Conference on Artificial Intelligence and Statistics (AISTATS) | | COLT | Conference on Learning Theory (COLT) |

Artificial Intelligence (AI Preset)

| Key | Formatted Name | |-----|----------------| | AAAI | AAAI Conference on Artificial Intelligence (AAAI) | | IJCAI | International Joint Conference on Artificial Intelligence (IJCAI) | | ECAI | European Conference on Artificial Intelligence (ECAI) | | UAI | Conference on Uncertainty in Artificial Intelligence (UAI) | | HRI | ACM/IEEE International Conference on Human-Robot Interaction (HRI) |

Natural Language Processing (NLP Preset)

| Key | Formatted Name | |-----|----------------| | ACL | Association for Computational Linguistics (ACL) | | NAACL | Annual Conference of the North American Chapter of the Association for Computational Linguistics (NAACL) | | EMNLP | Conference on Empirical Methods in Natural Language Processing (EMNLP) | | COLING | International Conference on Computational Linguistics (COLING) |

Data Mining & Information Retrieval (DM Preset)

| Key | Formatted Name | |-----|----------------| | KDD | ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD) | | ICDM | IEEE International Conference on Data Mining (ICDM) | | WWW | International World Wide Web Conference (WWW) | | WSDM | ACM International Conference on Web Search and Data Mining (WSDM) | | SIGIR | ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR) |

Journals (Journal Preset)

| Key | Formatted Name | |-----|----------------| | T-PAMI | IEEE Transactions on Pattern Analysis and Machine Intelligence (T-PAMI) | | T-IP | IEEE Transactions on Image Processing (T-IP) | | T-NNLS | IEEE Transactions on Neural Networks and Learning Systems (T-NNLS) | | JMLR | Journal of Machine Learning Research (JMLR) | | TMLR | Transactions on Machine Learning Research (TMLR) | | JAIR | Journal of Artificial Intelligence Research (JAIR) |