Pickoo: skill for saving links into a local library

Pickoo

Pickoo is a local workspace with the save-to-favorites skill that lets an agent build a link collection in your folder

  • 20 ★ on the repository
  • Last commit
  • MIT
Skill

Broad access

Why this level

  • The app copies skills into agent directories and runs scripts, ffmpeg and yt-dlp
  • The agent downloads third-party content from the internet, and it may contain instructions that must not be followed
All reasons and checks

kristenpan/pickoo-your-favorites

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/pickoo

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The app copies skills into agent directories and runs scripts, ffmpeg and yt-dlp
  • The agent downloads third-party content from the internet, and it may contain instructions that must not be followed

This is third-party code. Review the repository files before installing.

What it does

Pickoo is a local workspace for a collection of links and inspiration. You give the agent a link or share text, and the save-to-favorites skill identifies the source, checks for a duplicate, fetches the material and stores it in your folder as editable Markdown with an evidence package: original text, images, audio and video. It supports Chinese social networks and podcasts, WeChat articles and ordinary web pages. Video and podcasts get a timestamped transcript and semantic chapters, and images get text recognition. From each source you can then extract six kinds of reusable material, and only items confirmed by the source enter the library. The repository holds three skills: save-to-favorites, creator-content-ingest and asset-review-agent. A Node.js app connects them to Codex, WorkBuddy, Hermes and Claude with one click on the agent card. All agents work with one folder and a shared task queue.

Who it is for. For creators and anyone collecting links from Chinese social networks, articles and podcasts who wants an agent to turn them into verifiable notes in their own folder.

Good fit when

  • Save a Xiaohongshu post with images and get Markdown with recognized text
  • Transcribe a Xiaoyuzhou podcast or a Bilibili video with timestamps and chapters
  • Avoid saving twice: Pickoo detects that a link is already saved and warns you
  • Build a personal library of quotes, hooks and structures by source for content work
  • Continue analysis in different agents (Codex, Claude, Hermes) from one shared folder and queue

Not a fit when

  • You want an ordinary browser bookmark manager: Pickoo is built for agent-processed content
  • Content sits behind a paywall, DRM or login: Pickoo does not bypass such limits
  • You want to work without Python, ffmpeg and yt-dlp: full media processing needs those tools

Example request

Save this Xiaohongshu post link into the Pickoo library, recognize the text on the images and extract the quotes.

Limitations

The interface, documentation and skill texts are mostly in Chinese. Running it needs Node.js 20, and full media processing also needs Python 3.10, ffmpeg, ffprobe and yt-dlp. Transcription and text recognition use tools already on the machine, and the app installs isolated environments when they are missing.

Pickoo does not bypass paid access, DRM, region or login limits. The NetEase Cloud Music sign-in is stored only locally in a file with 0600 permissions under ~/.config/pickoo/. Local-first does not mean offline: capturing public links downloads material from the internet.

The license is MIT.

How to disable. In the app, click the connected agent card and the skills move to ~/.config/pickoo/disconnected-skills/. Or delete the save-to-favorites directory from ~/.claude/skills/ by hand. The collection folder stays untouched.

FAQ

How do I install Pickoo and connect it to Claude Code?

Run `npm ci`, install the Python dependencies from skill-source/creator-content-ingest/requirements.txt and start `npm start`. The browser opens http://127.0.0.1:4324: clicking the Claude card in settings copies the skill to ~/.claude/skills/save-to-favorites.

Which sources does Pickoo support?

Xiaohongshu (posts, videos and public collections), WeChat articles, Douyin, Bilibili, ordinary web pages, Xiaoyuzhou podcasts and NetEase Cloud Music song metadata. Content that cannot be fetched gets a pending-review, partial or failed status.

Which six kinds of material does Pickoo extract?

Quotes, views, hooks, structure, images and shots. Only candidates that pass a check against the source and reach the quality bar enter the library. Each record keeps a link to the place in the text, image or timecode.

Where is my data stored?

New items are written to a folder you choose, ~/Documents/Pickoo Library by default. Settings sit in ~/.config/pickoo/settings.json, and the queue and interface on macOS in ~/Library/Application Support/Pickoo. The local server listens on 127.0.0.1 only.

Do I need a separate AI service for Pickoo?

No. Pickoo works through your own agents, Codex, WorkBuddy, Hermes or Claude, and costs depend on the model you pick.

Discussion

No questions or reviews yet.

Skills

A set of everyday agent skills: web search, browser automation, Gmail, Google Calendar and Drive, speech transcription and YouTube transcripts

SkillExtended access2.6KRepository stars

A Go CLI that keeps skills, agents and rules in one place and syncs them into every AI agent with one command

CLIExtended access2.9KRepository stars

A Claude Code plugin that builds a knowledge system of markdown files from a conversation with you: folder structure, note templates, a processing pipeline and

PluginExtended access3.5KRepository stars

A skill set that lets an agent run a personal Obsidian wiki: it compiles knowledge from documents and past sessions and answers with citations

SkillExtended access3.6KRepository stars

Obsidian skills

Obsidian Skills

Skills for agents working with Obsidian: Markdown with wikilinks, Bases, JSON Canvas, Obsidian CLI, Defuddle and Knap

SkillExtended access50.4KRepository stars

A skill and MCP server for Claude Code that drives Google NotebookLM: notebooks from links and files, cited answers, podcasts, slides and quizzes

SkillBroad access486Repository stars

Comparison with similar tools

Entries that share the main search query, and how they differ.

EntryOfficialAuthenticationRepository starsMain difference
Pickoo: skill for saving links into a local library (this entry)no20
xiaohongshu-mcpnonot required16,650an MCP server for publishing and searching on Xiaohongshu as the agent, while Pickoo saves and analyzes third-party material
OpenContextno1,270a local project context store for coding agents, with no link capture or transcription

README in short

Pickoo is described as a local collection in a take-apart-and-save spirit: one result shared across agents, sources next to conclusions and achievements for exploring the collection. Separate sections explain the speech recognition vocabulary, data boundaries and permissions.

README badge

Original SKILL.md

---
name: save-to-favorites
description: The single complete Pickoo workflow for new Xiaohongshu, WeChat, Douyin, Bilibili, Xiaoyuzhou, podcast, music, article/blog, or general web links. Use for 收藏、保存、收录、抓取、归档、拆解、分析、OCR、ASR or 完整处理 from Codex, WorkBuddy, Hermes, Claude, or Claudian. It owns intake and the complete downstream workflow; obsolete standalone capture or link-intake skills must not be selected.
---

# Save to favorites

Write every Agent's result into the same local library. The frontend is a reader for that library, not a separate database.

## Routing boundary

This is the only automatically selected skill for a new link entering Pickoo. One request gets one intake owner and one shared task; the source platform does not select another top-level skill. Platform capture, OCR, ASR, chaptering, analysis, and asset review are downstream capabilities of this task, not competing entry points.

Do not invoke `creator-content-ingest` or `asset-review-agent` as another route, including as a user-facing downstream Skill. They are internal implementation contracts owned and scheduled by this workflow after the Pickoo package exists. Obsolete standalone platform-capture and link-intake Skills are not part of Pickoo's runtime, including as an explicit alternative or fallback. All platform capture, OCR, ASR, chaptering, analysis, and archive work stays inside this managed workflow.

## Shared contract

Read [references/library-contract.md](references/library-contract.md) before writing. Use the bundled `scripts/save_link.py` as the single entry point so duplicate detection and Markdown output stay identical across Agents.

For podcast shownote timestamps, use the internal shownote-timeline contract supplied by the current Pickoo execution manifest or bundled runtime. Do not discover another Skill to find it. Capture owns the canonical structured timeline; chapter rebuilding may parse body text only as a legacy fallback and must never override valid structured evidence.

For NetEase Cloud Music share links or `music.163.com/song?id=...`, also read [references/netease-music.md](references/netease-music.md). Short and standard links are canonicalized by song ID without login or user cookies. Capture public lyrics and attempt only the platform's no-login public playback response; never reconstruct signed URLs or bypass membership, region, or DRM controls.

Default library root: `~/Documents/Pickoo Library/`.

Resolve the library from an explicit `--library-root`, `PICKOO_LIBRARY_ROOT`, or Pickoo settings before using that default. Never infer a personal vault path or another project's directory. Users who keep Pickoo inside Obsidian should select that folder in Pickoo settings or set `PICKOO_LIBRARY_ROOT` explicitly.

Before selecting a root, Markdown view, processing depth, ASR model, OCR path, podcast diarization, or collection capture, read `$PICKOO_SETTINGS_FILE` when set and otherwise `~/.config/pickoo/settings.json`. This `favorites-runtime-settings/v1` file is the cross-Agent user preference source shared with the frontend. Explicit CLI arguments and explicit environment variables override it. A frontend change applies to the next invocation from Codex, Hermes, WorkBuddy, or Claude without copying configuration into each Skill directory.

`storage.markdown_view_mode` controls only the Obsidian reading layout. Every package's one canonical document is recorded at `manifest.document.path` and named `内容形态-来源渠道-最多10字标题-最多10字作者-YYYYMMDD.md` (for example `图文-小红书-好的呀-胖虎超爱玩-20260825.md`), with a numeric suffix only when names collide. `package` exposes that file in place. `centralized` additionally exposes a flat view under `storage.markdown_view_root` using the exact same assigned basename. Pickoo identifies both sides by `favorite_id`, rewrites relative media paths for the central location, and reconciles edits by revisions rather than paths. The package document remains the canonical commit target for wrappers and Agent pipelines. Do not create another ad-hoc copy, rename either assigned file, or resolve a conflict by overwriting either side; Pickoo keeps the basename stable and saves the losing version under `.pickoo-conflicts/` before merging. Legacy `收藏.md` is only a migration input. When Pickoo is running, its background poll projects an Agent commit automatically. When it is not running, leave the canonical package correct and let the next Pickoo launch reconcile it.

For a Xiaohongshu board/collection URL, honor `collection.enabled`. When enabled, use the bundled collection adapter shipped with the installed Pickoo skill/runtime to enumerate public child items, then submit each child through this wrapper with the original board share text retained as context. Never accept a user-configured adapter path or a stale path from shared settings. If the bundled adapter is missing, disabled, blocked by login, or returns only a listing fallback, report that state honestly; do not treat a board cover/title list as completed child captures.

For a single Xiaohongshu note, accept both `xhslink` short links and webpage `explore` / `discovery/item` share links. When several links in one share text identify the same note, keep one task and prefer the detail carrier that still has an `xsec_token`; do not reject the whole input merely because it contains a long URL. Use the full share carrier only for initial acquisition, then persist the query-free canonical note URL and never archive the token in the source package. A tokenless or expired carrier may fail honestly and ask for a fresh share link without blocking unrelated links from the same batch.

Settings are a runtime contract, not package content. Never archive the settings file, API secrets, cookies, local virtual environments, downloaded Whisper/voiceprint/OCR models, or browser profiles inside a source package or an exported Skill. Only present an API/provider control after a real adapter consumes it; store secret values exclusively in environment variables and expose only configured/unconfigured status. Optional missing capabilities must degrade honestly (for example timestamp-only podcast paragraphs without diarization), never trigger an unrequested install during capture.

## Save links

Preserve the user's full share text. When Pickoo is running, submit through its shared task center and wait for the honest terminal state:

```bash
python3 scripts/save_link.py submit --wait --input '<完整分享文字>' --note '<用户附言,可为空>' --source-agent '<codex|hermes|workbuddy|claude|claudian>' --input-channel '<agent-direct|wechat-im|feishu-im|obsidian>'
```

Use `wechat-im` when the request arrived through WeChat, `feishu-im` when it arrived through Feishu/Lark, and `obsidian` when Claudian received it inside Obsidian. Otherwise use `agent-direct`. `submit` registers the intake in Pickoo's shared task journal so the frontend can show its queue, stage, heartbeat, package, and final Markdown path. If Pickoo is offline it falls back to the same direct local save contract unless `--require-shared-task` was explicitly requested; report that the task was saved directly and therefore had no live frontend progress.

Always pass the executing intake Agent's stable lowercase identity through `--source-agent`. Use `--input-channel favorites-frontend` only for the built-in frontend; Agent calls default to `agent-direct`. The wrapper writes this once to `manifest.json` as `intake.source_agent` and `intake.input_channel`. Do not infer ownership from the content platform, capture adapter, or the Agent that later analyzes/transcribes the package. Missing legacy attribution remains `unknown` and is not categorized as another-Agent input.

The default is `--mode full`: acquire evidence, normalize chapter-led readable content, analyze it, and create only source-located reusable assets that pass the shared admission contract. All human-readable layers are consolidated into stable sections of the `manifest.document.path` document. If analysis cannot be completed, keep the `内容拆解` and asset state visibly pending instead of presenting them as finished.

Report a problem

Foxx AIPickoo: skill for saving links into a local library
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.