Skip to content
Back to skills

Algolia Hello World

ASecurity

"Create a minimal working Algolia example \u2014 index records and search\

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
developmentjavascripttypescriptgojavabashnodetestingapi

Works with

  • claude code
  • cursor
  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned November 11, 2026

npx -y skills add pauldx/claudifying --skill algolia-hello-world --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Algolia Hello World?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Algolia Hello World
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pauldx-algolia-hello-world/badge)](https://www.skillsdirectory.com/skills/pauldx-algolia-hello-world)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: algolia-hello-world
description: "Create a minimal working Algolia example \u2014 index records and search\
  \ them.\nUse when starting a new Algolia integration, testing your setup,\nor learning\
  \ the saveObjects/searchSingleIndex pattern.\nTrigger: \"algolia hello world\",\
  \ \"algolia example\", \"algolia quick start\", \"first algolia search\".\n"
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(node:*), Bash(npx:*)
version: 1.0.0
license: MIT
tags:
- saas
- search
- algolia
compatibility: Designed for Claude Code
---
# Algolia Hello World

## Overview

Index records into Algolia and search them back — the two fundamental operations. Uses the `algoliasearch` v5 client where all methods live on the client directly (no `initIndex`).

## Prerequisites

- `algoliasearch` v5 installed (`npm install algoliasearch`)
- `ALGOLIA_APP_ID` and `ALGOLIA_ADMIN_KEY` environment variables set
- See `algolia-install-auth` for setup

## Instructions

### Step 1: Index Records with saveObjects

```typescript
import { algoliasearch } from 'algoliasearch';

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID!,
  process.env.ALGOLIA_ADMIN_KEY!
);

// saveObjects adds or replaces records. Each must have objectID
// (or Algolia auto-generates one).
const { taskID } = await client.saveObjects({
  indexName: 'movies',
  objects: [
    { objectID: '1', title: 'The Matrix', year: 1999, genre: 'sci-fi' },
    { objectID: '2', title: 'Inception', year: 2010, genre: 'sci-fi' },
    { objectID: '3', title: 'Pulp Fiction', year: 1994, genre: 'crime' },
  ],
});

// Wait for indexing to complete before searching
await client.waitForTask({ indexName: 'movies', taskID });
console.log('Indexing complete.');
```

### Step 2: Search with searchSingleIndex

```typescript
// Basic search — Algolia searches all searchableAttributes by default
const { hits } = await client.searchSingleIndex({
  indexName: 'movies',
  searchParams: { query: 'matrix' },
});

console.log(`Found ${hits.length} results:`);
hits.forEach(hit => {
  // _highlightResult shows which parts matched
  console.log(`  ${hit.title} (${hit.year})`);
});
```

### Step 3: Configure Index Settings

```typescript
// Settings define how Algolia ranks results
await client.setSettings({
  indexName: 'movies',
  indexSettings: {
    searchableAttributes: ['title', 'genre'],       // Fields to search
    attributesForFaceting: ['genre', 'year'],        // Filterable fields
    customRanking: ['desc(year)'],                   // Tie-breaker: newer first
    attributesToRetrieve: ['title', 'year', 'genre'],// Fields returned in hits
  },
});
```

## Output

```
Indexing complete.
Found 1 results:
  The Matrix (1999)
```

## Error Handling

| Error | Cause | Solution |
|-------|-------|----------|
| `Invalid Application-ID or API key` | Wrong credentials | Verify in dashboard > Settings > API Keys |
| `Record is too big` | Object > 10KB (free) or 100KB (paid) | Reduce record size or split into smaller records |
| `Index does not exist` (on search) | Index not created yet | `saveObjects` auto-creates the index |
| `taskID` never resolves | Indexing queue backlog | Check dashboard > Indices > Operations |

## Examples

### Multi-Index Search (federated)

```typescript
// Search multiple indices in one API call
const { results } = await client.search({
  requests: [
    { indexName: 'movies', query: 'inception' },
    { indexName: 'actors', query: 'inception' },
  ],
});

results.forEach(result => {
  if ('hits' in result) {
    console.log(`${result.index}: ${result.hits.length} hits`);
  }
});
```

### Browse All Records (no query, iterate everything)

```typescript
// browse returns up to 1000 records per call — use for data export
const { hits, cursor } = await client.browse({
  indexName: 'movies',
  browseParams: { hitsPerPage: 1000 },
});

console.log(`First page: ${hits.length} records`);
// Use cursor to fetch next pages
```

### Delete Records

```typescript
// Delete by objectID
await client.deleteObject({ indexName: 'movies', objectID: '3' });

// Delete by query match
await client.deleteBy({
  indexName: 'movies',
  deleteByParams: { filters: 'genre:crime' },
});
```

## Resources

- [saveObjects Reference](https://www.algolia.com/doc/libraries/javascript/v5/methods/search/save-object/)
- [searchSingleIndex Reference](https://www.algolia.com/doc/libraries/javascript/v5/methods/search/search-single-index/)
- [Index Settings](https://www.algolia.com/doc/api-reference/api-methods/set-settings/)
- [Algolia Quick Start](https://www.algolia.com/doc/guides/getting-started/quick-start/)

## Next Steps

Proceed to `algolia-local-dev-loop` for development workflow setup.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.