← Back to Skills
Media

clinkding

daveonkels By daveonkels 👁 20 views ▲ 0 votes

Manage linkding bookmarks - save URLs, search, tag, organize

GitHub
---
name: clinkding
description: Manage linkding bookmarks - save URLs, search, tag, organize, and retrieve your personal bookmark collection. Use when the user wants to save links, search bookmarks, manage tags, or organize their reading list.
homepage: https://github.com/daveonkels/clinkding
metadata: {"clawdis":{"emoji":"🔖","requires":{"bins":["clinkding"]},"install":[{"id":"homebrew","kind":"brew","formula":"daveonkels/tap/clinkding","bins":["clinkding"],"label":"Install clinkding (Homebrew)"},{"id":"go","kind":"go","module":"github.com/daveonkels/clinkding@latest","bins":["clinkding"],"label":"Install clinkding (Go)"}]}}
---

# clinkding - Linkding Bookmark Manager CLI

A modern Go-based CLI for managing bookmarks in [linkding](https://github.com/sissbruecker/linkding), a self-hosted bookmark manager.

## What This Does

**Linkding** is a self-hosted bookmark manager (like Pocket, Instapaper). **clinkding** is the CLI that lets you manage your bookmarks from the terminal or via AI agents.

Think of it as:
- **Save for later** - Capture URLs you want to read
- **Searchable library** - Full-text search across titles, descriptions, tags
- **Organized collections** - Tag and bundle related bookmarks
- **Personal archive** - Keep important links with notes and metadata

## Quick Start

### Initial Setup

```bash
# Interactive configuration
clinkding config init

# Or manually configure
clinkding config set url https://your-linkding-instance.com
clinkding config set token YOUR_API_TOKEN

# Test connection
clinkding config test
```

### Configuration File

Location: `~/.config/clinkding/config.yaml`

```yaml
url: https://linkding.example.com
token: your-api-token-here

defaults:
  bookmark_limit: 100
  output_format: auto
```

### Environment Variables

```bash
export LINKDING_URL="https://linkding.example.com"
export LINKDING_TOKEN="your-api-token-here"
```

## Core Commands

### Bookmarks

#### List & Search

```bash
# List recent bookmarks
clinkding bookmarks list

# Search by keyword
clinkding bookmarks list --query "golang tutorial"

# Filter by tag
clinkding bookmarks list --query "tag:programming"

# Recent bookmarks (last 7 days)
clinkding bookmarks list --added-since "7d"

# Unread bookmarks
clinkding bookmarks list --query "unread:yes"

# JSON output for scripting
clinkding bookmarks list --json

# Plain text (tab-separated)
clinkding bookmarks list --plain
```

#### Create Bookmarks

```bash
# Simple bookmark
clinkding bookmarks create https://go.dev

# With metadata
clinkding bookmarks create https://go.dev \
  --title "Go Programming Language" \
  --tags "golang,programming,reference" \
  --description "Official Go website" \
  --unread

# Check if URL already exists before creating
clinkding bookmarks check https://go.dev
```

#### Update Bookmarks

```bash
# Update title
clinkding bookmarks update 42 --title "New Title"

# Add tags
clinkding bookmarks update 42 --add-tags "important,work"

# Remove tags
clinkding bookmarks update 42 --remove-tags "old-tag"

# Mark as read
clinkding bookmarks update 42 --read

# Update description
clinkding bookmarks update 42 --description "Updated notes"
```

#### Get Bookmark Details

```bash
# Full details
clinkding bookmarks get 42

# JSON output
clinkding bookmarks get 42 --json
```

#### Archive & Delete

```bash
# Archive (hide from main list)
clinkding bookmarks archive 42

# Unarchive
clinkding bookmarks unarchive 42

# Delete permanently
clinkding bookmarks delete 42
```

### Tags

```bash
# List all tags
clinkding tags list

# Create a tag
clinkding tags create "golang"

# Get tag details
clinkding tags get 1

# Plain text output
clinkding tags list --plain
```

### Bundles

Bundles are collections of related bookmarks.

```bash
# List bundles
clinkding bundles list

# Create a bundle
clinkding bundles create "Go Resources" \
  --description "Everything related to Go programming"

# Update a bundle
clinkding bundles update 1 --name "Go Lang Resources"

# Get bundle details
clinkding bundles get 1

# Delete a bundle
clinkding bundles delete 1
```

### Assets

Upload and manage file attachments for bookmarks.

```bash
# List assets for a bookmark
clinkding assets list 42

# Upload a file
clinkding assets upload 42 ~/Documents/screenshot.png

# Download an asset
clinkding assets download 42 1 -o ./downloaded-file.png

# Delete an asset
clinkding assets delete 42 1
```

### User Profile

```bash
# Get user profile info
clinkding user profile
```

## Agent Usage Patterns

### Save URL from Conversation

```bash
# User: "Save this for later: https://example.com"
clinkding bookmarks create https://example.com \
  --title "Article Title" \
  --description "Context from conversation" \
  --tags "topic,context"
```

### Search Bookmarks

```bash
# User: "Find my golang bookmarks"
clinkding bookmarks list --query "golang"

# User: "Show me unread programming articles"
clinkding bookmarks list --query "tag:programming unread:yes"

# User: "What did I save last week?"
clinkding bookmarks list --added-since "7d"
```

### Organize & Tag

```bash
# User: "Tag bookmark 42 as important"
clinkding bookmarks update 42 --add-tags "important"

# User: "Create a bundle for my AI research links"
clinkding bundles create "AI Research" \
  --description "Machine learning and AI papers"
```

### Retrieve for Reading

```bash
# User: "Give me something to read"
clinkding bookmarks list --query "unread:yes" --limit 5

# User: "Show me my golang tutorials"
clinkding bookmarks list --query "tag:golang tag:tutorial"
```

## Output Formats

### Auto (Default)
Human-friendly tables and colors for terminal display.

### JSON
```bash
clinkding bookmarks list --json
```
Machine-readable for scripting and agent parsing.

### Plain Text
```bash
clinkding bookmarks list --plain
```
Tab-separated values for pipe-friendly parsing.

## Relative Date Filtering

Supports human-friendly time ranges:

```bash
# Last 24 hours
clinkding bookmarks list --added-since "24h"

# Last 7 days
clinkding bookmarks list --added-since "7d"

# Last 6 months
clinkding bookmarks list --modified-since "180d"
```

**Supported units:** `h` (hours), `d` (days), `y` (years)

## Common Workflows

### Morning Reading Routine

```bash
# Check unread bookmarks
clinkding bookmarks list --query "unread:yes"

# Get top 5 most recent
clinkding bookmarks list --limit 5
```

### Save from Clipboard

```bash
# macOS
pbpaste | xargs -I {} clinkding bookmarks create {}

# Linux
xclip -o | xargs -I {} clinkding bookmarks create {}
```

### Batch Operations

```bash
# Tag multiple bookmarks
for id in 42 43 44; do
  clinkding bookmarks update $id --add-tags "important"
done

# Archive old unread bookmarks
clinkding bookmarks list --query "unread:yes" --added-since "30d" --plain | \
  while read id _; do
    clinkding bookmarks archive "$id"
  done
```

### Backup Bookmarks

```bash
# Export all bookmarks as JSON
clinkding bookmarks list --json > bookmarks-backup-$(date +%Y%m%d).json

# Export specific tag
clinkding bookmarks list --query "tag:important" --json > important.json
```

## Global Flags

Available on all commands:

| Flag | Description |
|------|-------------|
| `-c, --config <file>` | Config file path |
| `-u, --url <url>` | Linkding instance URL |
| `-t, --token <token>` | API token |
| `--json` | Output as JSON |
| `--plain` | Output as plain text |
| `--no-color` | Disable colors |
| `-q, --quiet` | Minimal output |
| `-v, --verbose` | Verbose output |

## Exit Codes

| Code | Meaning |
|------|---------|
| 0 | Success |
| 1 | General error (API/network) |
| 2 | Invalid usage (bad flags/args) |
| 3 | Authentication error |
| 4 | Not found |
| 130 | Interrupted (Ctrl-C) |

## Troubleshooting

### Test Configuration

```bash
# Verify settings
clinkding config show

# Test connection
clinkding config test
```

### Common Issues

**Authentication Error:**
- Verify API token in linkding web interface
- Check URL includes protocol (`https://`)
- Remove trailing slashes from URL

**Command-Specific Help:**
```bash
clinkding bookmarks --help
clinkding bookmarks create --help
```

## Links

- **GitHub:** https://github.com/daveonkels/clinkding
- **Linkding:** https://github.com/sissbruecker/linkding
- **Homebrew:** `brew install daveonkels/tap/clinkding`

## Installation

### Homebrew (macOS/Linux)

```bash
brew install daveonkels/tap/clinkding
```

### Go Install

```bash
go install github.com/daveonkels/clinkding@latest
```

### Binary Download

Download from [releases](https://github.com/daveonkels/clinkding/releases) for your platform.

## Shell Completion

```bash
# Bash
clinkding completion bash > /etc/bash_completion.d/clinkding

# Zsh
clinkding completion zsh > "${fpath[1]}/_clinkding"

# Fish
clinkding completion fish > ~/.config/fish/completions/clinkding.fish
```

---

**Built by:** [@daveonkels](https://github.com/daveonkels)  
**License:** MIT

## Agent Workflows for Smart Bookmark Creation

### Adding URLs with Automatic Metadata

When a user says "Add this to linkding" or "Save this URL", follow this workflow:

**1. Extract metadata from the URL**

Use the `summarize` skill to get title and description:

```bash
# Get page metadata
summarize url https://example.com --format json
```

This returns structured data with:
- Title
- Description/summary
- Main content

**2. Infer appropriate tags from content**

Map the content to **existing canonical tags only**. Do NOT create new tags.

Use this canonical tag list (263 tags total):
- **Tech:** webdev, design, programming, ai, cloud, devops, docker, linux, networking, security, privacy
- **Content:** content, media, photography, video, audio, books, podcasting
- **Business:** business, marketing, ecommerce, finance, career, productivity
- **Home:** smart-home, home-assistant, esphome, iot, home-improvement
- **Tools:** tools, cli, git, github, editor, reference, documentation
- **Data:** data, analytics, mysql, nosql
- **Communication:** communication, email, messagin

... (truncated)
media

Comments

Sign in to leave a comment

Loading comments...