Back to list
clawdbot

clinkding

by clawdbot

All versions of all skills that are on clawdhub.com archived

7🍴 6📅 Jan 24, 2026

SKILL.md


clinkding - Linkding Bookmark Manager CLI

A modern Go-based CLI for managing bookmarks in 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

# 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

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

defaults:
  bookmark_limit: 100
  output_format: auto

Environment Variables

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

Core Commands

Bookmarks

List & Search

# 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

# 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

# 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

# Full details
clinkding bookmarks get 42

# JSON output
clinkding bookmarks get 42 --json

Archive & Delete

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

# Unarchive
clinkding bookmarks unarchive 42

# Delete permanently
clinkding bookmarks delete 42

Tags

# 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.

# 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.

# 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

# Get user profile info
clinkding user profile

Agent Usage Patterns

Save URL from Conversation

# 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

# 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

# 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

# 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

clinkding bookmarks list --json

Machine-readable for scripting and agent parsing.

Plain Text

clinkding bookmarks list --plain

Tab-separated values for pipe-friendly parsing.

Relative Date Filtering

Supports human-friendly time ranges:

# 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

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

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

Save from Clipboard

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

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

Batch Operations

# 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

# 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:

FlagDescription
-c, --config <file>Config file path
-u, --url <url>Linkding instance URL
-t, --token <token>API token
--jsonOutput as JSON
--plainOutput as plain text
--no-colorDisable colors
-q, --quietMinimal output
-v, --verboseVerbose output

Exit Codes

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

Troubleshooting

Test Configuration

# 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:

clinkding bookmarks --help
clinkding bookmarks create --help

Installation

Homebrew (macOS/Linux)

brew install daveonkels/tap/clinkding

Go Install

go install github.com/daveonkels/clinkding@latest

Binary Download

Download from releases for your platform.

Shell Completion

# 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
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:

# 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, messaging, slack
  • Education: education, guide, howto, research, testing
  • Locations: texas, seattle, dallas (use sparingly)

Tag Selection Rules:

  • Use 2-5 tags maximum
  • Choose the most specific applicable tags
  • If unsure, default to broader categories (e.g., tools over generator)
  • Check existing tags first: clinkding tags list --plain | grep -i <keyword>
  • Never create tags like: awesome, cool, interesting, resources, tips

3. Create the bookmark with metadata

clinkding bookmarks create "https://example.com" \
  --title "Title from summarize" \
  --description "Summary from summarize (1-2 sentences)" \
  --tags "webdev,tools,reference"

Example Workflow

User: "Save this to linkding: https://github.com/awesome/project"

Agent Actions:

# 1. Check if already bookmarked
clinkding bookmarks check https://github.com/awesome/project

# 2. Get metadata (use summarize skill)
summarize url https://github.com/awesome/project --format json

# 3. Analyze content and infer tags
# From summary: "A CLI tool for Docker container management"
# Canonical tags: docker, devops, cli, tools

# 4. Create bookmark
clinkding bookmarks create https://github.com/awesome/project \
  --title "Awesome Project - Docker Container CLI" \
  --description "Command-line tool for managing Docker containers with enhanced features" \
  --tags "docker,devops,cli"

Tag Mapping Heuristics

Use these rules to map content → canonical tags:

Content TypeCanonical Tags
Web development, HTML, CSS, JavaScriptwebdev, css, javascript
React, frameworks, frontendwebdev, react
Design, UI/UX, mockupsdesign
Python, Go, Ruby codeprogramming, python/ruby
Docker, K8s, DevOpsdocker, devops, cloud
Home automation, ESP32, sensorssmart-home, esphome, iot
AI, ML, LLMsai, llm
Productivity tools, workflowsproductivity, tools
Finance, investing, cryptofinance
Marketing, SEO, adsmarketing
Shopping, deals, storesecommerce
Tutorials, guides, docsguide, howto, documentation
Security, privacy, encryptionsecurity, privacy
Local (DFW/Seattle)texas, seattle

Validation Before Creating

Always run these checks:

# 1. Does URL already exist?
clinkding bookmarks check <url>

# 2. Do the tags exist?
clinkding tags list --plain | grep -iE "^(tag1|tag2|tag3)$"

# 3. Are we using canonical tags?
# Cross-reference against the 263 canonical tags
# Never create new tags without explicit user request

If user provides multiple URLs:

# Process each URL separately with metadata extraction
for url in url1 url2 url3; do
  # Get metadata
  # Infer tags
  # Create bookmark
done

Updating Existing Bookmarks

If user says "Update that bookmark" or "Add tags to my last save":

# Get most recent bookmark
recent_id=$(clinkding bookmarks list --limit 1 --plain | cut -f1)

# Add tags (don't remove existing ones unless asked)
clinkding bookmarks update $recent_id --add-tags "new-tag"

# Update description
clinkding bookmarks update $recent_id --description "Updated notes"

Key Principles

  1. Always fetch metadata - Use summarize to get good titles/descriptions
  2. Use existing tags - Never create new tags without checking canonical list
  3. Be selective - 2-5 tags max, choose the most specific applicable
  4. Validate first - Check for duplicates before creating
  5. Provide context - Include brief description explaining why it's useful

Current Canonical Tag Structure

Dave's linkding instance has 263 canonical tags after consolidation from 17,189 duplicates.

Top categories (by bookmark count):

  • pinboard (4,987) - Legacy import tag
  • ifttt (2,639) - Legacy import tag
  • webdev (1,679) - Web development
  • design (561) - Design/UI/UX
  • content (416) - Content/writing
  • cloud (383) - Cloud/hosting/SaaS
  • business (364) - Business/strategy
  • ecommerce (308) - Shopping/marketplace
  • smart-home (295) - Home automation
  • productivity (291) - Productivity tools

Golden Rule: When in doubt, use broader existing tags rather than creating new specific ones.

Score

Total Score

65/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon