Extensions
Antinote (v2.0.4+ Beta) allows you to write and use extensions in JavaScript that enable commands that can be invoked with ::. With over 100 official commands, and a growing community of contributors, the possibilities are endless.
Command Types
There are different types of commands, each with different capabilities:
Insert
These commands simply insert something at your cursor position. Perfect for quickly adding dates, templates, random values, UUIDs, and more.
- Insert today's date or calculate business days
- Insert templates like to-do lists or meeting notes
- Generate random numbers, dice rolls, or quotes
- Create UUIDs or random strings
Replace Line
These commands modify the content of your current line only. Great for formatting or transforming a single line of text.
- Convert text to UPPERCASE, lowercase, or Title Case
- Transform to camelCase, snake_case, or kebab-case
- Trim whitespace or remove quotes
Replace All
These commands modify the content of your entire document. Powerful for bulk operations and text manipulation.
- Find and replace text throughout the document
- Sort lines alphabetically or numerically
- Filter, deduplicate, or remove lines
- Convert formats (CSV to JSON, lists to comma-separated)
- AI-powered: polish text, translate, or create lists
Open URL
These commands can open URLs or use URL schemes to trigger actions in other apps on your Mac.
- Open a random Wikipedia page
- Launch other apps via URL schemes
- Trigger automations in apps like Shortcuts or Raycast
LLM Extensions
Extensions can leverage LLMs (Large Language Models) as well, allowing you to quickly take advantage of AI for inserting or modifying text. Just configure your LLM key, and all LLM extensions will be able to leverage it.
Supported providers include:
- OpenAI (ChatGPT)
- Anthropic (Claude)
- Google AI
- OpenRouter (access multiple models)
- Ollama (local models)
For more details, see the AI Extensions documentation on GitHub.
API Calls
Extensions can also call custom APIs with API keys stored safely in your macOS Keychain. This allows you to build powerful integrations while keeping your credentials secure.
Key features:
- Secure credential storage using macOS Keychain
- Make HTTP requests to any API endpoint
- Process responses and insert results into your notes
- Build custom integrations with your favorite services
For more details, see the Network Extensions documentation on GitHub.
Math Functions
Extensions can also leverage the math feature in Antinote to make calculations based on natural language. This makes it easy to perform complex calculations without leaving your notes.
Examples of what you can do:
- Calculate loan payments and amortization schedules
- Compute investment growth with compound interest
- Perform financial analysis (NPV, IRR, etc.)
- Use math expressions in parameters (e.g.,
0.05/12,30*12)
For more details, see the Extensions documentation on GitHub.
Installing Extensions
Make sure you've downloaded the 2.0.4+ Beta version of Antinote to use extensions.
Steps to install extensions:
- Open Antinote and go to Settings
- Navigate to the Extensions tab
- Browse the official and community extensions available
- Click on any extension to add it
- The extension will be immediately available for use
You can quickly browse official and community extensions, but any extension you put in the extensions folder can be added. This makes it easy to install custom extensions or ones shared by others.
Tip: Extensions are stored in your extensions folder. You can access this folder from Settings > Extensions > Open Extensions Folder.
Using Commands
In Antinote, simply type :: and the extensions palette will pop up.
How it works:
- Type
::anywhere in your note - The extensions palette appears with available commands
- As you type, it filters to match your search
- Select a command with arrow keys and press Enter
- The command shows instructions, required and optional parameters
- Fill in the parameters and execute the command
Pro tip: You can type the command name directly after :: to quickly filter, like ::today or ::ai.
Making Your Own
The GitHub repository has everything you need to make your own extensions. Feel free to submit a PR if you want to add an extension to the community collection.
Don't code? No problem.
Use our AI Extension Builder to describe what you want, and we'll generate a prompt you can paste into ChatGPT, Claude, or any coding assistant.
Open AI Extension BuilderInstalling Custom Extensions
Once you have the files for your extension:
- Go to Settings > Extensions > Open Extensions Folder
- Paste your extension's folder into this directory
- Go back to Settings and click Reload Extensions
- Test your extension by typing
::and searching for your command
Debugging
There is a logging panel in the Extensions settings that shows logs from your extensions. This helps you debug errors and see what's happening when your extension runs.
Extension Structure
Each extension needs at minimum:
manifest.json- Extension metadata and configurationindex.js- The extension code
AI & ML Extensions
Extensions that leverage artificial intelligence and machine learning to enhance your notes.
AI Providers
Version 1.0.5 | Service Extension
A service extension that provides AI backends to other extensions. This extension has no user-facing commands but enables all AI-powered features in Antinote.
Supported Providers
- OpenAI - ChatGPT models (GPT-4, GPT-3.5)
- Anthropic - Claude models
- Google AI - Gemini models
- OpenRouter - Access to multiple model providers
- Ollama - Run local models on your machine
LLM
Version 3.0.5
Generate AI responses to prompts directly in your notes. Use this for brainstorming, writing assistance, answering questions, and more.
::ai insertGenerate an AI response to your prompt
Example: ::ai(What is the capital of France?)
AI Process
Version 1.0.6
Process and transform text using AI. Polish your writing, translate to other languages, or convert text into structured lists.
::polish replaceAllImprove text professionalism. Level 1 = typos/grammar, 2 = professional email, 3 = formal speech
Example: ::polish or ::polish(2)
::translate replaceAllTranslate text to another language
Example: ::translate or ::translate(French)
::create_list replaceAllConvert text into a structured list
Example: ::create_list
Date & Time Extensions
Extensions for inserting and working with dates.
Date
Version 1.0.6
Insert dates with optional offsets. Perfect for journaling, planning, and timestamping notes.
::today insertInsert today's date with optional day offset
Example: ::today or ::today(7) for 7 days from now
::tomorrow insertInsert tomorrow's date with optional additional offset
Example: ::tomorrow or ::tomorrow(7) for 8 days from now
::yesterday insertInsert yesterday's date with optional additional offset
Example: ::yesterday or ::yesterday(-7) for 8 days ago
::business_day insertInsert date offset by business days (excludes weekends)
Example: ::business_day(5) for 5 business days from now
Random Generators
Extensions for generating random values, great for games, writing prompts, decision making, and more.
Random
Version 1.0.6
Generate random numbers, letters, quotes, or open random Wikipedia pages.
::random_number insertGenerate a random number between two values
Example: ::random_number or ::random_number(1, 100)
::random_letters insertGenerate random letter(s)
Example: ::random_letters or ::random_letters(5)
::random_quote insertInsert a random inspirational quote
Example: ::random_quote
::random_wiki openURLOpen a random Wikipedia page in your browser
Example: ::random_wiki
Dice
Version 1.0.6 | Optional Extension
Roll dice of various types. Perfect for tabletop gaming, random decisions, or probability exercises.
::roll insertRoll dice. Accepts number (20), die notation (d20), or multiple dice (4d6)
Example: ::roll or ::roll(d20) or ::roll(4d6)
Text Formatting Extensions
Extensions for formatting and transforming text case and style.
Text Format
Version 2.0.1 | Operates on entire document
Transform the entire document's text with various formatting options.
::replace replaceAllFind and replace text throughout the document
Example: ::replace(old, new)
::append replaceAllAdd text to the end of every line in the document
Example: ::append(;) adds semicolon to each line
::prepend replaceAllAdd text to the beginning of every line in the document
Example: ::prepend(- ) adds dash bullet to each line
::uppercase replaceAllConvert entire document to UPPERCASE
Example: ::uppercase
::lowercase replaceAllConvert entire document to lowercase
Example: ::lowercase
::sentence_case replaceAllConvert document to Sentence case
Example: ::sentence_case
::title_case replaceAllConvert Document To Title Case
Example: ::title_case
::capitalize_first replaceAllCapitalize the first letter of the document
Example: ::capitalize_first
::remove_quotes replaceAllStrip surrounding quotes from the document
Example: ::remove_quotes
Line Format
Version 2.0.0 | Operates on current line only
Transform just the current line with various case and naming convention options.
::uppercase_line replaceLineConvert current line to UPPERCASE
Example: ::uppercase_line
::lowercase_line replaceLineConvert current line to lowercase
Example: ::lowercase_line
::sentence_case_line replaceLineConvert current line to Sentence case
Example: ::sentence_case_line
::title_case_line replaceLineConvert Current Line To Title Case
Example: ::title_case_line
::camel_case replaceLineConvert current line to camelCase
Example: ::camel_case (hello world -> helloWorld)
::snake_case replaceLineConvert current line to snake_case
Example: ::snake_case (Hello World -> hello_world)
::kebab_case replaceLineConvert current line to kebab-case
Example: ::kebab_case (Hello World -> hello-world)
::remove_quotes_line replaceLineStrip quotes from the current line
Example: ::remove_quotes_line
Clean Line
Version 1.0.0 | Operates on current line only
Clean up whitespace on the current line.
::remove_all_whitespace replaceLineStrip all whitespace from the current line
Example: ::remove_all_whitespace
::trim_whitespace replaceLineRemove leading and trailing whitespace from the current line
Example: ::trim_whitespace
Text Manipulation Extensions
Extensions for sorting, filtering, and manipulating lines of text.
Line Sort
Version 2.0.3
Sort lines in your document alphabetically or numerically.
::sort_lines_alpha replaceAllSort lines alphabetically. Options for reverse and skip lines
Example: ::sort_lines_alpha or ::sort_lines_alpha(true) for reverse
::sort_lines_number replaceAllSort lines by the first number in each line
Example: ::sort_lines_number
::sort_lines_number_last replaceAllSort lines by the last number in each line
Example: ::sort_lines_number_last
::sort_lines_reverse replaceAllReverse the order of all lines
Example: ::sort_lines_reverse
Filter Lines
Version 1.0.2
Filter, remove, and manipulate lines based on content or position.
::remove_lines_with replaceAllRemove all lines containing specific text
Example: ::remove_lines_with(TODO)
::remove_lines_without replaceAllRemove all lines NOT containing specific text
Example: ::remove_lines_without(important)
::remove_lines_empty replaceAllRemove all empty lines from the document
Example: ::remove_lines_empty
::keep_lines_with replaceAllKeep only lines containing specific text
Example: ::keep_lines_with(@mention)
::keep_lines_without replaceAllKeep only lines NOT containing specific text
Example: ::keep_lines_without(draft)
::trim_each_whitespace replaceAllRemove leading/trailing whitespace from all lines
Example: ::trim_each_whitespace
::remove_each_after replaceAllRemove content after a delimiter on each line
Example: ::remove_each_after(:)
::remove_each_before replaceAllRemove content before a delimiter on each line
Example: ::remove_each_before(:)
::keep_between replaceAllKeep only content between two delimiters on each line
Example: ::keep_between([, ])
::remove_between replaceAllRemove content between two delimiters on each line
Example: ::remove_between((, ))
::dedupe_lines replaceAllRemove duplicate lines, keeping first occurrence
Example: ::dedupe_lines or ::dedupe_lines(false) to keep last
::get_dupes insertFind and display duplicate lines grouped together
Example: ::get_dupes
List Tools
Version 1.0.1
Convert between different list formats.
::commas_to_list replaceAllConvert comma-separated items to lines
Example: ::commas_to_list
::commas_to replaceAllConvert comma-separated items to custom delimiter
Example: ::commas_to(|)
::lines_to_commas replaceAllConvert lines to comma-separated
Example: ::lines_to_commas
::lines_to replaceAllConvert lines to custom delimiter
Example: ::lines_to(;)
Checklists
Version 1.0.1
Manage markdown checklists in your notes.
::checked_to_bottom replaceAllMove all checked items to the bottom of the list
Example: ::checked_to_bottom
::remove_checked replaceAllRemove all checked items from the document
Example: ::remove_checked
Data Tools Extensions
Extensions for working with structured data like JSON and regular expressions.
JSON Tools
Version 2.0.1 | 15 commands
Powerful tools for manipulating JSON data. Supports smart JSON extraction with dot notation.
Conversion
::csv_to_json replaceAllConvert CSV data to a JSON array using first row as keys
Example: ::csv_to_json
::json_format replaceAllReformat JSON (pretty, compact, or minified)
Example: ::json_format or ::json_format(pretty)
Sorting & Filtering
::json_sort replaceAllSort array of objects by a key value
Example: ::json_sort(name) or ::json_sort(age, true) for reverse
::json_sort_array replaceAllSort primitive arrays (strings/numbers)
Example: ::json_sort_array or ::json_sort_array(true) for reverse
::json_filter replaceAllKeep only items matching a condition
Example: ::json_filter(status, =, active)
::json_filter_out replaceAllRemove items matching a condition
Example: ::json_filter_out(status, =, inactive)
Key Manipulation
::json_add_key replaceAllAdd a key-value pair to all objects in array
Example: ::json_add_key(status, active)
::json_remove_key replaceAllRemove a key from all objects in array
Example: ::json_remove_key(temp_field)
::json_set_key replaceAllSet a key to a specific value in all objects
Example: ::json_set_key(version, 2.0)
::json_append_key replaceAllAppend value to the end of existing key values
Example: ::json_append_key(name, _suffix)
::json_prepend_key replaceAllPrepend value to the beginning of existing key values
Example: ::json_prepend_key(name, prefix_)
Deduplication
::json_get_dupes insertFind duplicate objects by key or duplicate primitives
Example: ::json_get_dupes or ::json_get_dupes(email)
::json_dedupe replaceAllRemove exact duplicate objects from array
Example: ::json_dedupe
Path Access (Dot Notation)
::json_get insertGet value at dot notation path
Example: ::json_get(user.profile.name)
::json_set replaceAllSet value at dot notation path
Example: ::json_set(user.status, online)
Regex
Version 1.0.1
Use regular expressions to find, remove, or extract text patterns.
::regex_remove replaceAllRemove all text matching a regex pattern
Example: ::regex_remove(\\d+) removes all numbers
::regex_keep replaceAllKeep only text matching a regex pattern
Example: ::regex_keep([A-Z]+) keeps only uppercase words
::regex_insert insertExtract all matches and insert with delimiter
Example: ::regex_insert(\\w+@\\w+\\.\\w+, ,) extracts emails
Finance & Math Extensions
Extensions for financial calculations and analysis. All commands support math expressions in parameters (e.g., 0.05/12, 30*12).
Finance
Version 1.0.5 | 12 commands
Comprehensive financial calculators for loans, investments, and personal finance planning.
Loans & Mortgages
::loan insertCalculate loan payment and amortization schedule
Example: ::loan(10000, 60, 4) for $10k, 60 months, 4% interest
::mortgage insertCalculate mortgage payment and schedule
Example: ::mortgage(500000, 20, 6.5, 30) for $500k, 20% down, 6.5%, 30 years
Investment Calculations
::investment insertCalculate investment growth with contributions, taxes, and inflation
Example: ::investment(10000, 5000, 500, 7, 30) for initial, annual, monthly, rate, years
::pv insertPresent value calculator
Example: ::pv(100000, 10) for future value $100k in 10 years
::fv_simple insertFuture value (simple calculation)
Example: ::fv_simple(10000, 10) for $10k in 10 years
::fv insertFuture value (Excel FV function style)
Example: ::fv(0.05/12, 120, -100, -10000) for rate, nper, pmt, pv
::pmt insertPayment per period (Excel PMT function)
Example: ::pmt(0.05/12, 360, 500000) for monthly payment on $500k
::npv replaceLineNet present value from cash flows
Example: ::npv(10, -1000,500,500,500) for 10% rate with cash flows
::irr replaceLineInternal rate of return
Example: ::irr(-1000,300,400,500) calculates IRR from cash flows
FIRE & Tax Planning
::fire_amount insertCalculate annual income from investments using safe withdrawal rate
Example: ::fire_amount(1000000) for income from $1M at 4%
::fire_plan insertCalculate path to financial independence
Example: ::fire_plan(100000, 3000, 5000) for savings, monthly additions, target expenses
::tax insertCalculate tax and after-tax income
Example: ::tax(100000, 25) for $100k income at 25% rate
Business & Analytics Extensions
Extensions for business metrics, analytics, and startup calculations. Numbers in your note can be comma-separated, space-separated, or line-separated.
Business
Version 1.0.3 | 11 commands
Essential business calculators for growth analysis, SaaS metrics, and decision making.
Growth & Forecasting
::growth insertAnalyze percentage growth between consecutive numbers in your note
Example: ::growth analyzes numbers like: 10, 30, 80
::forecast insertForecast future values using linear regression and variance analysis
Example: ::forecast(3) predicts next 3 periods from numbers in note
Marketing & Acquisition
::cac insertCustomer Acquisition Cost calculator template
Example: ::cac inserts a CAC calculation template
::ab_test insertA/B test statistical significance calculator
Example: ::ab_test inserts an A/B test template
::sample_size insertCalculate required sample size for A/B tests
Example: ::sample_size inserts a sample size template
Customer Metrics
::retention_churn insertRetention and churn analysis template
Example: ::retention_churn inserts retention analysis template
::ltv insertCustomer Lifetime Value calculator template
Example: ::ltv inserts an LTV calculation template
::arpu insertAverage Revenue Per User calculator template
Example: ::arpu inserts an ARPU calculation template
::arppu insertAverage Revenue Per Paying User calculator template
Example: ::arppu inserts an ARPPU calculation template
Startup Planning
::runway insertCash runway calculator template
Example: ::runway inserts a runway calculation template
::saas_pricing insertSaaS pricing strategy helper template
Example: ::saas_pricing inserts a pricing strategy template
Productivity Extensions
Extensions for templates and productivity workflows.
Templates
Version 2.0.0 | 16 commands
Insert pre-built templates for common note-taking scenarios. Includes 6 built-in templates plus 10 customizable slots.
Built-in Templates
::todo insertDaily to-do list with GSD (Getting Stuff Done) framework
Example: ::todo
::bullet insertBullet journal template for daily logging
Example: ::bullet
::sorry insertApology template for crafting sincere apologies
Example: ::sorry
::reflect insertDaily reflection template for end-of-day review
Example: ::reflect
::standup insertStandup meeting template (yesterday, today, blockers)
Example: ::standup
::one_on_one insert1:1 meeting template with talking points
Example: ::one_on_one
Custom Templates
You can configure up to 10 custom templates in the extension settings. Once configured, they'll be available as:
::custom_template_1::custom_template_2::custom_template_3- ... through
::custom_template_10
Custom templates support variables like {date}, {time}, and {cursor} to place your cursor after insertion.
Missing an extension? Contribute on GitHub or request one on Discord.