Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,26 @@
}
]
},
{
"tab": "Plugins",
"groups": [
{
"group": "Overview",
"pages": [
"plugins/index"
]
},
{
"group": "Available Plugins",
"pages": [
"plugins/platform",
"plugins/research",
"plugins/content",
"plugins/catalogs"
]
}
]
},
{
"tab": "Artists",
"groups": [
Expand Down Expand Up @@ -478,4 +498,4 @@
"og:site_name": "Recoup",
"twitter:card": "summary_large_image"
}
}
}
14 changes: 9 additions & 5 deletions index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ Keep your API key secure. Do not share it publicly or commit it to version contr
Get your API key and make your first request in minutes.
</Card>
<Card
title="CLI"
icon="terminal"
href="/cli"
title="Plugin Ecosystem"
icon="puzzle-piece"
href="/plugins/index"
>
Install and use the Recoup CLI to interact with the platform from your terminal.
Install music industry plugins for Claude, Cursor, Codex, and more. Research, content, catalog deals.
</Card>
<Card
title="MCP Server"
Expand Down Expand Up @@ -168,7 +168,11 @@ The API is organized into six main sections. Use these links to jump to the righ

## Quick Reference for LLMs

If you are an LLM navigating these docs, here is a summary of the endpoint structure:
If you are an LLM navigating these docs, here is what you need to know:

**Plugins (recommended for most tasks):** Install pre-built skill packages from `https://github.com/recoupable/marketplace`. See the [Plugin Ecosystem](/plugins/index) for the full catalog. Key plugins: `recoup-platform-plugin` (account setup, artist creation), `recoup-research-plugin` (10 research skills), `recoup-content-plugin` (video/image generation), `recoup-catalogs-plugin` (catalog deal lifecycle).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Plugin name inconsistency on the same page: the LLM Quick Reference at line 173 introduces recoup-catalogs-plugin while the Setup Note in the page header uses recoup-catalog-deals. An LLM or human reader following the Note's install instructions will look for recoup-catalog-deals, then see different names in the Quick Reference — or vice versa — creating confusion about which to install. Align the names to a single convention (matching the plugins/catalogs.mdx page or the existing recoup-catalog-deals name used above).

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At index.mdx, line 173:

<comment>Plugin name inconsistency on the same page: the LLM Quick Reference at line 173 introduces `recoup-catalogs-plugin` while the Setup Note in the page header uses `recoup-catalog-deals`. An LLM or human reader following the Note's install instructions will look for `recoup-catalog-deals`, then see different names in the Quick Reference — or vice versa — creating confusion about which to install. Align the names to a single convention (matching the `plugins/catalogs.mdx` page or the existing `recoup-catalog-deals` name used above).</comment>

<file context>
@@ -168,7 +168,11 @@ The API is organized into six main sections. Use these links to jump to the righ
-If you are an LLM navigating these docs, here is a summary of the endpoint structure:
+If you are an LLM navigating these docs, here is what you need to know:
+
+**Plugins (recommended for most tasks):** Install pre-built skill packages from `https://github.com/recoupable/marketplace`. See the [Plugin Ecosystem](/plugins/index) for the full catalog. Key plugins: `recoup-platform-plugin` (account setup, artist creation), `recoup-research-plugin` (10 research skills), `recoup-content-plugin` (video/image generation), `recoup-catalogs-plugin` (catalog deal lifecycle).
+
+**API endpoints (for direct integration):** Here is a summary of the endpoint structure:
</file context>


**API endpoints (for direct integration):** Here is a summary of the endpoint structure:

- **`/api/artists/*`** — Artist management (list, create, socials, socials-scrape, profile)
- **`/api/research/*`** — Artist research (search, lookup, profile, metrics, audience, cities, similar, urls, instagram-posts, playlists, albums, track, tracks, career, insights, genres, festivals, web, deep, people, extract, enrich, milestones, venues, rank, charts, radio, discover, curator, playlist)
Expand Down
184 changes: 184 additions & 0 deletions plugins/catalogs.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
---
title: "Catalogs Plugin"
description: "Full catalog acquisition lifecycle — from messy seller data rooms to source-cited deal packages with normalized royalties, valuations, rights checks, and IC memos."
---

## Overview

The Catalogs Plugin turns an AI agent into a catalog acquisition analyst. Drop a seller's data room (PDFs, CSVs, Excel files) and the agent normalizes royalty data, checks rights, runs valuation models, and produces a complete deal package — HTML dashboard, buyer/seller memos, and IC presentation materials.

```bash
claude plugin install https://github.com/recoupable/recoup-catalogs-plugin
```

<Tip>
**Try it:** Say "Let's analyze a catalog with /recoup-catalog-deal" — the agent asks what kind of deal this is (buy-side, seller-prep, or financing) and walks you through the entire workflow.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The quick-start Tip encourages users to run /recoup-catalog-deal before the page explains that RECOUP_API_KEY is required and that PDF/XLSX data rooms need the optional pdfplumber/openpyxl dependencies (documented further down). Surfacing these prerequisites above the Tip, or linking to them directly, would prevent first-run failures.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At plugins/catalogs.mdx, line 15:

<comment>The quick-start Tip encourages users to run `/recoup-catalog-deal` before the page explains that `RECOUP_API_KEY` is required and that PDF/XLSX data rooms need the optional `pdfplumber`/`openpyxl` dependencies (documented further down). Surfacing these prerequisites above the Tip, or linking to them directly, would prevent first-run failures.</comment>

<file context>
@@ -0,0 +1,184 @@
+```
+
+<Tip>
+**Try it:** Say "Let's analyze a catalog with /recoup-catalog-deal" — the agent asks what kind of deal this is (buy-side, seller-prep, or financing) and walks you through the entire workflow.
+</Tip>
+
</file context>

</Tip>
Comment on lines +14 to +16

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Surface prerequisites before the quick-start command.

The first actionable instruction encourages users to run the workflow before explaining that RECOUP_API_KEY is required and that PDF/XLSX data rooms need optional dependencies. Move those prerequisites above this tip, or link to them directly, so first-run attempts do not fail due to missing setup.

Proposed clarification
 <Tip>
+Set `RECOUP_API_KEY` first; install the optional PDF/XLSX dependencies below when needed.
 **Try it:** Say "Let's analyze a catalog with /recoup-catalog-deal" — the agent asks what kind of deal this is (buy-side, seller-prep, or financing) and walks you through the entire workflow.
 </Tip>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<Tip>
**Try it:** Say "Let's analyze a catalog with /recoup-catalog-deal" — the agent asks what kind of deal this is (buy-side, seller-prep, or financing) and walks you through the entire workflow.
</Tip>
<Tip>
Set `RECOUP_API_KEY` first; install the optional PDF/XLSX dependencies below when needed.
**Try it:** Say "Let's analyze a catalog with /recoup-catalog-deal" — the agent asks what kind of deal this is (buy-side, seller-prep, or financing) and walks you through the entire workflow.
</Tip>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/catalogs.mdx` around lines 14 - 16, Update the catalog documentation
around the quick-start Tip so it surfaces setup prerequisites before the
/recoup-catalog-deal command, including the required RECOUP_API_KEY and optional
dependencies for PDF/XLSX data rooms; alternatively link directly to the
prerequisite instructions from the Tip.


## Skills

### recoup-catalog-deal

**Full deal lifecycle.** The front-door command. Handles the complete workflow from data room to finished deal package. Asks the deal type (buy-side acquisition, seller preparation, or financing/underwriting) and orchestrates the appropriate sub-skills.

> **Trigger:** "Analyze a catalog deal", "Run /recoup-catalog-deal", "I have a data room to process"

---

### recoup-deal-kickoff

**Deal initialization.** Sets up the deal workspace, classifies incoming files, creates the processing queue, and establishes the deal parameters (deal type, parties, timeline).

> **Trigger:** "Start a new catalog deal", "Set up a deal workspace"

---

### recoup-catalog-ingest

**Data room ingestion.** Normalizes messy seller data into a canonical schema. Handles PDFs, CSVs, TSVs, and Excel files. Applies cleaning rules, deduplicates entries, maps columns to the canonical format, and flags anomalies.

Includes reference materials:
- **Canonical schema** — the target format for all normalized data
- **Cleaning rules** — common data quality issues and how to resolve them
- **Data room checklist** — what to look for in a complete data room

> **Trigger:** "Ingest this data room", "Normalize these royalty files", "Process seller documents"

---

### recoup-catalog-analyze

**Catalog valuation and analysis.** Runs valuation models on normalized data: growth/decay curves, revenue projections, NPS (net publisher's share) calculations, comparable transactions, and risk scoring.

References:
- **Valuation framework** — methodology and assumptions
- **Pro performance income** — how to model performance royalties
- **Output templates** — standard report formats

> **Trigger:** "Value this catalog", "Run analysis on the catalog", "What's this catalog worth"

---

### recoup-royalty-audit

**Royalty verification.** Audits royalty statements against known rates, identifies underpayments, flags unusual patterns, and produces an exceptions report.

> **Trigger:** "Audit these royalties", "Check for underpayments", "Royalty exceptions report"

---

### recoup-financing-underwrite

**Financing underwriting.** Generates lender-ready packages: cash flow projections, debt service coverage ratios, collateral analysis, and risk assessments for catalog-backed financing.

> **Trigger:** "Underwrite this catalog for financing", "Generate a lending package", "Debt service analysis"

---

### recoup-catalog-package

**Deal package assembly.** Compiles all analysis outputs into a polished deal package: HTML dashboard, executive summary, detailed workpapers, and formatted memos for buyers, sellers, or lenders.

> **Trigger:** "Package the deal", "Create the final deliverable", "Assemble the deal package"

---

### recoup-post-close-admin

**Post-close administration.** Handles post-acquisition tasks: rights registration, royalty collection setup, catalog integration, and ongoing monitoring dashboards.

> **Trigger:** "Post-close setup", "Register acquired rights", "Set up royalty collection"

---

### recoup-catalog-demo

**Demo deal.** A guided demo using sample data to showcase the full catalog deal workflow. Useful for training new team members or demonstrating capabilities to prospects.

> **Trigger:** "Demo a catalog deal", "Show me how catalog analysis works", "Run a sample deal"

## Example workflow

A typical catalog acquisition workflow:

```text
You: Let's analyze a catalog. /recoup-catalog-deal
Agent: What type of deal is this?
1. Buy-side acquisition
2. Seller preparation
3. Financing / underwriting

You: Buy-side acquisition. Call it "Indie Catalog Q3"
Agent: Setting up deal workspace...
Ready. Drag your seller's files in, or point me to the data room.

You: [drops PDFs and CSVs]
Agent: Ingesting 12 files...
- 3 royalty statements (PDF → normalized CSV)
- 2 catalog listings (Excel → canonical schema)
- 4 contracts (PDF → extracted terms)
- 3 supporting documents

⚠️ 2 anomalies flagged:
- Royalty rate mismatch on 3 tracks
- Missing mechanical license for 1 composition

Running valuation analysis...
✅ Deal package ready.

📊 Dashboard: deals/indie-catalog-q3/dashboard.html
📋 IC Memo: deals/indie-catalog-q3/ic-memo.md
💰 Valuation: $2.4M (8.2x NPS, 3% growth)
```

## Optional dependencies

Core scripts run on Python standard library. PDF and Excel extraction need:

```bash
pip3 install pdfplumber openpyxl
```

Skip this if your data room is CSV/TSV only.

## Install

<CodeGroup>

```bash Claude Code
claude plugin install https://github.com/recoupable/recoup-catalogs-plugin
```

```text Claude Cowork
Add custom plugin → https://github.com/recoupable/recoup-catalogs-plugin
```
Comment on lines +152 to +154

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file snippet =="
sed -n '135,165p' plugins/catalogs.mdx || true

echo "== locate related docs/usages =="
rg -n "Cowork|Read|Write|Bash|validator scripts|recoup-catalogs-plugin|Add custom plugin" plugins README.md docs . 2>/dev/null | head -200 || true

echo "== repo files overview =="
git ls-files | sed -n '1,120p'

Repository: recoupable/docs

Length of output: 13088


🌐 Web query:

Claude Code Cowork installation add custom plugin permissions Read Write Bash validator scripts

💡 Result:

Claude Code allows for granular permission control via its plugin system, which uses hooks to intercept and validate tool calls [1][2]. You do not add "permissions" to a plugin in the sense of assigning read/write access levels; instead, you implement custom validation logic using PreToolUse hooks [1][2]. To implement custom validator scripts for Read, Write, or Bash operations, follow these steps: 1. Create a Hooks Configuration: Define your hooks in a hooks/hooks.json file at the root of your plugin directory [2]. Use the PreToolUse event to target specific tool types [2][3]. { "PreToolUse": [ { "matcher": "Bash|Write|Edit", "hooks": [ { "type": "command", "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh", "timeout": 60 } ] } ] } 2. Implement the Validator Script: Create a Bash script (e.g., scripts/validate.sh) that accepts input from Claude Code. The script can perform deterministic checks (like path traversal, sensitive file access, or command allow-listing) [2][3]. Your script should output a decision to stdout: - To allow the action: (no specific output or an 'approve' response depending on implementation). - To deny the action: Return a 'deny' response with an optional feedback message to guide Claude [2][4]. 3. Use Environment Variables: Always use the ${CLAUDE_PLUGIN_ROOT} environment variable provided by Claude Code to reference files within your plugin directory securely [2]. 4. Development and Testing: - Validate your hook configuration schema using the provided internal utility: scripts/validate-hook-schema.sh hooks/hooks.json [2]. - Test your hooks locally by loading your plugin directory directly when running Claude Code: claude --plugin-dir./path-to-your-plugin [5][6]. Built-in behaviors: Claude Code has a set of built-in read-only Bash commands (e.g., ls, grep, cat) that do not require permission prompts [1]. Custom hooks allow you to override default behavior or add additional security layers to these and other tools like Write or Edit [1][2]. Note that some community plugins use a PermissionRequest hook to perform real-time LLM-based validation on Bash commands, passing other operations like Read/Write through to the standard permission system to avoid interference [4].

Citations:


🌐 Web query:

github.com/recoupable/recoup-catalogs-plugin hooks Read Write Bash validator permissions permissions.mdx

💡 Result:

The recoup-catalogs-plugin (often associated with the repository recoupable/music-catalog-diligence) requires Read, Write, and Bash permissions to function correctly [1]. These permissions are necessary to enable the plugin to run validator scripts as part of its catalog deal review and royalty normalization workflow [1]. When installing the plugin via the Claude plugin marketplace, users are prompted to approve these specific tool permissions [1]. Bash access is explicitly required for the plugin to execute the validator scripts that transform raw data room information into structured deal packages [1]. While your query mentioned a permissions.mdx file, this is a common naming convention for documentation in various projects (e.g., Tauri or other plugins) [2][3][4] rather than a specific file inherent to the recoup-catalogs-plugin itself. In the context of the Recoup plugin, the requirement for Read, Write, and Bash permissions is a standard part of the installation process described in its documentation [1].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== referenced plugin read-only metadata =="
git ls-remote --heads --tags https://github.com/recoupable/recoup-catalogs-plugin.git | sed -n '1,60p' || true

echo
echo "== current HEAD tree files from plugin via git ls-tree (read-only) =="
python3 - <<'PY'
import urllib.request, gzip, json, io, re
url = "https://raw.githubusercontent.com/recoupable/recoup-catalogs-plugin/main/.gitmodules"
def fetch(t, n):
    try:
        return urllib.request.urlopen(f"https://raw.githubusercontent.com/recoupable/recoup-catalogs-plugin/{t}/{n}", timeout=20).read().decode()
    except Exception as e:
        return f"{e.__class__.__name__}: {e}"
for t in ["main", "HEAD"]:
    print(t, fetch(t, ".gitignore"), "\n--- package hooks/ ---")
    for p in [".gitignore", "README.md", "package.json", "package-lock.json", "hooks/hooks.json", "scripts/validate.sh", "CLAUDE.md"]:
        print(p, ":", "MISSING" if "MISSING" in fetch(t,p) else "FOUND")
PY

Repository: recoupable/docs

Length of output: 1062


🌐 Web query:

Claude Cowork add custom plugin permission approval Read Write Bash validator scripts recoup-catalogs-plugin

💡 Result:

In Claude Cowork and Claude Code, plugin management and permission handling are handled through a combination of built-in security systems, custom hooks, and organized plugin structures [1][2]. Regarding the "recoup-catalogs-plugin" mentioned, it is a specific plugin instance associated with the Recoupable Research project [3]. As with all custom or third-party plugins in Claude Cowork, it functions by bundling skills, MCP connectors, and potential shell hooks into a single package [4][2]. Permission Approval and Bash Validators: 1. Permission System: Claude Code and Cowork use a tiered permission system [1]. Built-in rules handle standard read/write operations, while more complex or sensitive actions (like Bash commands) can be managed via custom hooks [1][5]. 2. Custom Permission Hooks: You can register custom Bash scripts to act as "validators" for tool calls [1][6]. These hooks run during the PreToolUse phase, allowing you to intercept, inspect, and approve or deny commands based on your own logic [1][5]. 3. Implementing Validators: Developers often create Bash hooks that receive command input (via JSON) and output a decision (allow, deny, or force prompt) [7][8]. These are frequently used to enforce read-only operations, block dangerous commands (e.g., rm -rf), or allow-list specific binaries [7][5][8]. 4. Configuration: These hooks are registered in the plugin's hooks configuration file (typically hooks/hooks.json or similar) [7][1]. The system allows for granular control, such as rejecting specific patterns or auto-approving known safe commands [7][1][8]. Best Practices: - Always use the claude plugin validate command during development to ensure your plugin.json and hook configurations meet the required schema [6]. - Ensure your scripts are executable (chmod +x script.sh) [6]. - For security, prioritize "deny-first" logic in your validator scripts [1]. - Be aware that organization-provisioned plugins may be managed by administrators, and local changes to such plugins might be overwritten if the plugin re-syncs [9][2]. For technical specifications regarding the plugin schema and hook development, refer to the Claude Code plugin documentation [6][10].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== inspect referenced files in remote plugin HEAD =="
git ls-tree -r --name-only db8313878634ea3702878129c823b1db6fdaf874 \
  | rg '(^README\.md$|^package\.json$|^hooks/hooks\.json$|^scripts/validate\.sh$|^CLAUDE\.md$|^permissions\.mdx$|plugin\.mdx)' \
  | while read -r f; do
    echo "--- $f ---"
    git show db8313878634ea3702878129c823b1db6fdaf874:"$f" \
      | rg -n -C 3 'permission|permissions|Read|Write|Bash|validate|Hook|PreToolUse|Cowork|add custom plugin|CLAUDE.md' \
      || true
  done

echo
echo "== remote repository root files =="
git ls-tree --name-only db8313878634ea3702878129c823b1db6fdaf874

Repository: recoupable/docs

Length of output: 405


Document Cowork permission approval before running workflows.

The Cowork block only says “Add custom plugin → URL”. Follow it with permission requests for Read, Write, and Bash access so users don’t install the plugin and believe it’s ready, then run workflows that fail because validator scripts cannot execute.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/catalogs.mdx` around lines 152 - 154, Update the Cowork block after
the custom plugin link to document permission approval for Read, Write, and Bash
access before running workflows. Keep the existing plugin installation link and
clearly indicate that these permissions are required for the validator scripts
to execute successfully.


```bash Codex
codex plugin install https://github.com/recoupable/recoup-catalogs-plugin

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The Codex install snippet codex plugin install https://github.com/recoupable/recoup-catalogs-plugin does not match Codex's documented plugin workflow, which manages plugins via marketplace commands (codex plugin marketplace add/list/upgrade/remove) rather than a direct GitHub-URL install. This could cause the command to fail for Codex users; consider replacing it with the Codex marketplace steps or the existing /plugin install recoup-catalogs-plugin@recoup-marketplace command already documented on this page.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At plugins/catalogs.mdx, line 157:

<comment>The Codex install snippet `codex plugin install https://github.com/recoupable/recoup-catalogs-plugin` does not match Codex's documented plugin workflow, which manages plugins via marketplace commands (`codex plugin marketplace add/list/upgrade/remove`) rather than a direct GitHub-URL install. This could cause the command to fail for Codex users; consider replacing it with the Codex marketplace steps or the existing `/plugin install recoup-catalogs-plugin@recoup-marketplace` command already documented on this page.</comment>

<file context>
@@ -0,0 +1,184 @@
+```
+
+```bash Codex
+codex plugin install https://github.com/recoupable/recoup-catalogs-plugin
+```
+
</file context>
Suggested change
codex plugin install https://github.com/recoupable/recoup-catalogs-plugin
/plugin install recoup-catalogs-plugin@recoup-marketplace

```
Comment on lines +156 to +158

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/sh
curl -fsSL https://learn.chatgpt.com/docs/plugins |
  grep -nE '/plugins|configured marketplace|plugin install'

Repository: recoupable/docs

Length of output: 50372


🏁 Script executed:

#!/bin/sh
set -eu

echo "== candidate files =="
git ls-files | rg '(^|/)plugins/catalogs\.mdx$|codex|plugin|manifest' | head -n 100

echo
echo "== plugins/catalogs.mdx exact lines =="
if grep -q 'codex plugin install' plugins/catalogs.mdx; then
  nl -ba plugins/catalogs.mdx | sed -n '140,175p'
fi

echo
echo "== git diff stat/name-status =="
git diff --stat || true
git diff --name-status || true

echo
echo "== occurrences of proposed Codex flow in repository =="
rg -n "codex plugin install|codex\\s*$|/plugins|configured marketplace|marketplace|recoup-catalogs-plugin" . || true

Repository: recoupable/docs

Length of output: 6260


🏁 Script executed:

#!/bin/sh
set -eu

echo "== plugins/catalogs.mdx lines 105-190 =="
awk 'NR>=105 && NR<=190 { printf "%6d\t%s\n",NR,$0 }' plugins/catalogs.mdx

echo
echo "== openai codex plugin docs snippets =="
url="https://developers.openai.com/codex/plugins"
python3 - <<'PY' "$url"
import urllib.request, re, sys
url=sys.argv[1]
src=urllib.request.urlopen(url, timeout=20).read().decode("utf-8", "replace")
for pat in [r'codex\s*[\r\n][\s\S]{0,220}', r'/plugins[\s\S]{0,220}', r'configured marketplace[\s\S]{0,220}', r'plugin install[\s\S]{0,220}', r'recoup-catalogs-plugin[\s\S]{0,220}']:
    m=re.search(pat, src)
    print(f"\n--- {pat.split()[0] if pat else '...'} ---")
    print(m.group(0)[:1200] if m else "NOT FOUND")
PY

Repository: recoupable/docs

Length of output: 5295


🌐 Web query:

OpenAI Codex plugins how to install plugin Codex marketplace codex /plugins

💡 Result:

To use plugins with OpenAI Codex, you can manage them via the ChatGPT desktop app or the Codex CLI. Plugins are used to bundle capabilities such as skills, connectors, and MCP (Model Context Protocol) tools into reusable workflows [1][2][3]. ### Installing Plugins in the ChatGPT Desktop App 1. Open the ChatGPT desktop app. 2. In the switcher, select Codex (or ChatGPT Work). 3. Open the Plugins Directory. 4. You can browse and install plugins from the directory. The interface categorizes plugins into OpenAI-curated, workspace-provided, and personal marketplace plugins [1][3]. ### Managing Plugins via Codex CLI The Codex CLI provides a way to manage and track marketplace sources directly from your terminal [4][5]. * To add a marketplace source: Use the command codex plugin marketplace add <marketplace-url> [4]. * To install a plugin (Example using a marketplace): In environments like Claude Code that support Codex plugins, the process typically involves adding the marketplace, installing the plugin, and reloading [6][7]: * Add the marketplace: /plugin marketplace add <marketplace-name> [6][7] * Install the plugin: /plugin install <plugin-identifier> [6][7] * Reload plugins: /reload-plugins [6][7] ### Building and Sharing Plugins If you are developing your own plugins, they are organized as JSON-based marketplace catalogs [4]. You can host these marketplaces to share them within your team or workspace. * Marketplace Structure: A marketplace is a JSON file (marketplace.json) that catalogs plugin entries [4]. * Distribution: You can point the app to specific paths (e.g., $REPO_ROOT/.agents/plugins/marketplace.json for repo-scoped plugins) to load custom plugin collections [4]. For detailed development guidance, including scaffolding and manifest configuration, refer to the official Build plugins documentation [1][4]. Note that plugins are not supported in Chat on the web, IDE extensions, or mobile applications [1][3].

Citations:


Replace the unsupported Codex GitHub-URL install command.

codex plugin install https://github.com/recoupable/recoup-catalogs-plugin

is not the supported Codex installation path. Use Codex /plugins/marketplace steps, or the existing marketplace command from this page next: /plugin install recoup-catalogs-plugin@recoup-marketplace.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/catalogs.mdx` around lines 156 - 158, Replace the unsupported
GitHub-URL command in the plugin installation instructions with the supported
Codex marketplace flow, using the existing “/plugin install
recoup-catalogs-plugin@recoup-marketplace” command or equivalent /plugins
marketplace steps.


```text Cursor
Settings → Plugins → Add custom plugin → paste the GitHub URL
```

```bash Via Marketplace
/plugin install recoup-catalogs-plugin@recoup-marketplace
```

</CodeGroup>

<Warning>
**Restart required.** After installing, restart your agent session so the PreToolUse and Stop hooks load correctly.
</Warning>

## Required environment

| Variable | How to get it |
|---|---|
| `RECOUP_API_KEY` | Run `getting-started` in [Platform Plugin](/plugins/platform), or call [`POST /api/agents/signup`](/api-reference/agents/signup) |

## Source

<Card title="GitHub" icon="github" href="https://github.com/recoupable/recoup-catalogs-plugin">
View source, report issues, or contribute.
</Card>
126 changes: 126 additions & 0 deletions plugins/content.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
title: "Content Plugin"
description: "One-command video creation for music artists. Generate short-form videos, captions, and images — say 'make a TikTok' and get a finished 9:16 clip."
---

## Overview

The Content Plugin turns your AI agent into a content production machine. Its flagship skill — `recoup-content-create` — takes an artist name and produces a finished, social-ready short-form video with a single command. No manual template selection, no render configuration, no file management.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The overview claims "No manual template selection" (line 9), but the example workflow below shows the agent listing available templates and the user explicitly choosing one: "Use playlist-overlay". This contradicts the advertised behavior. Either drop the "no manual template selection" claim or clarify that template selection is automatic by default but overrideable.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At plugins/content.mdx, line 8:

<comment>The overview claims "No manual template selection" (line 9), but the example workflow below shows the agent listing available templates and the user explicitly choosing one: "Use playlist-overlay". This contradicts the advertised behavior. Either drop the "no manual template selection" claim or clarify that template selection is automatic by default but overrideable.</comment>

<file context>
@@ -0,0 +1,126 @@
+
+## Overview
+
+The Content Plugin turns your AI agent into a content production machine. Its flagship skill — `recoup-content-create` — takes an artist name and produces a finished, social-ready short-form video with a single command. No manual template selection, no render configuration, no file management.
+
+```bash
</file context>


```bash
claude plugin install https://github.com/recoupable/recoup-content-plugin
```

<Tip>
**Try it now:** After installing, just say "Make a TikTok for [artist name]" — the agent handles everything from artist resolution to final render.
</Tip>

## Skills

### recoup-content-create

**End-to-end video creation.** The front door for content generation. Takes an artist name and produces a finished 9:16 social-ready clip with caption.

The workflow:
1. Resolves the artist's `account_id` via the Recoup API
2. Selects an appropriate template based on available assets
3. Fires the async content pipeline
4. Polls until the render completes
5. Returns the final video URL + generated caption

Supports customization: medium override, long captions, template selection, audio and image overrides.

> **Trigger:** "Make a TikTok for [artist]", "Create content for [artist]", "Generate a video for [artist]'s new single"

---

### short-video

**Short-form video generation.** Lower-level skill that handles the video rendering pipeline directly. Used internally by `recoup-content-create` but can be invoked independently for more control over the generation parameters.

> **Trigger:** "Generate a short video", "Create a visualizer"

---

### content-creation

**General content workflows.** Broader content creation skill covering images, captions, and multi-format content. Coordinates across multiple content API endpoints for complex production tasks.

> **Trigger:** "Create marketing materials for [artist]", "Generate images for this release"

## Example workflow

```text
You: Make a TikTok for Mari Vega
Agent: Resolving artist... found Mari Vega (account_id: abc123)
Selecting template: editorial-press-photo
Generating video...
✅ Video ready!
URL: https://content.recoupable.dev/renders/xyz...
Caption: "New vibes from Mari Vega 🎵✨ #MariVega #NewMusic"

You: Make another one but use a different template
Agent: Available templates: editorial-press-photo, playlist-overlay, lyric-video...
Which template would you like?

You: Use playlist-overlay
Agent: Generating with playlist-overlay template...
✅ Video ready!
```

## API endpoints used

| Endpoint | What it does |
|---|---|
| `POST /content/create` | Start an async content creation job |
| `GET /content/templates` | List available content templates |
| `GET /content/template/:id` | Get template details |
| `POST /content/generate-image` | Generate a standalone image |
| `POST /content/generate-video` | Generate a standalone video |
| `POST /content/generate-caption` | Generate a caption for content |
| `POST /content/transcribe-audio` | Transcribe audio from a track |
| `POST /content/edit` | Edit existing content |
| `POST /content/upscale` | Upscale media resolution |
| `POST /content/analyze-video` | Analyze video content |
| `POST /content/validate` | Validate content parameters |
| `POST /content/estimate` | Estimate credit cost |

See the [Content API reference](/api-reference/content/create) for full documentation.

## Install

<CodeGroup>

```bash Claude Code

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The Install CodeGroup (5 tool tabs: Claude Code, Claude Cowork, Codex, Cursor, Via Marketplace) is duplicated verbatim across all 4 plugin pages — only the GitHub URL changes. Per CLAUDE.md's DRY principle, extract this into a shared snippet or component.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At plugins/content.mdx, line 94:

<comment>The Install CodeGroup (5 tool tabs: Claude Code, Claude Cowork, Codex, Cursor, Via Marketplace) is duplicated verbatim across all 4 plugin pages — only the GitHub URL changes. Per CLAUDE.md's DRY principle, extract this into a shared snippet or component.</comment>

<file context>
@@ -0,0 +1,126 @@
+
+<CodeGroup>
+
+```bash Claude Code
+claude plugin install https://github.com/recoupable/recoup-content-plugin
+```
</file context>

claude plugin install https://github.com/recoupable/recoup-content-plugin
```

```text Claude Cowork
Add custom plugin → https://github.com/recoupable/recoup-content-plugin
```

```bash Codex
codex plugin install https://github.com/recoupable/recoup-content-plugin
```

```text Cursor
Settings → Plugins → Add custom plugin → paste the GitHub URL
```

```bash Via Marketplace
/plugin install recoup-content-plugin@recoup-marketplace
```

</CodeGroup>

## Required environment

| Variable | How to get it |
|---|---|
| `RECOUP_API_KEY` | Run `getting-started` in [Platform Plugin](/plugins/platform), or call [`POST /api/agents/signup`](/api-reference/agents/signup) |

## Source

<Card title="GitHub" icon="github" href="https://github.com/recoupable/recoup-content-plugin">
View source, report issues, or contribute.
</Card>
Loading