Back to skills
SKILL.md
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
Works with
Security analysis
92/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add pauldx/claudifying --skill algolia-hello-world --agent claude-codeAre you the author of Algolia Hello World?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/pauldx-algolia-hello-world)---
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
Related skills
View all in development →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.