{"_id":"openbrand","_rev":"6-69be42612f103fa08e66912d186efffe","name":"openbrand","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"openbrand","version":"0.1.0","keywords":["brand","logo","colors","scraper","extraction"],"license":"MIT","_id":"openbrand@0.1.0","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"homepage":"https://github.com/ethanjyx/openbrand#readme","bugs":{"url":"https://github.com/ethanjyx/openbrand/issues"},"dist":{"shasum":"f2d4ea040131288148036fd036788d905b003498","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.1.0.tgz","fileCount":10,"integrity":"sha512-yeLMI3vTgvCDHNGWsxCqJIS9BVLqmdrcvaEKSpDJTQwTQAny9zE3/siEyZn5WjSUyuzsebyl7gKKn0wxxBQHlQ==","signatures":[{"sig":"MEUCIE3fAOI6vETcrLmes2PmTXficmSF8/A8V7bsT8IMZB3oAiEA9N5i5nOM5VB2z4vbqSJ/AeITiPZY9l70yZjdrltAPZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54683},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"809a9dfc40220f14da45aba6f29c2738baae94f7","scripts":{"dev":"next dev","lint":"eslint","test":"bun test","build":"next build","start":"next start","build:pkg":"tsup"},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"repository":{"url":"git+https://github.com/ethanjyx/openbrand.git","type":"git"},"_npmVersion":"10.8.2","description":"Extract brand assets (logos, colors, backdrops) from any website URL","directories":{},"_nodeVersion":"20.19.4","dependencies":{"sharp":"^0.34.5","cheerio":"^1.2.0","probe-image-size":"^7.2.3","@types/probe-image-size":"^7.2.5"},"ignoreScripts":["sharp","unrs-resolver"],"_hasShrinkwrap":false,"devDependencies":{"next":"16.1.6","tsup":"^8.5.1","react":"19.2.3","eslint":"^9","react-dom":"19.2.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4"},"trustedDependencies":["sharp","unrs-resolver"],"_npmOperationalInternal":{"tmp":"tmp/openbrand_0.1.0_1773424872227_0.04065278266619177","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"openbrand","version":"0.1.1","keywords":["brand","logo","colors","scraper","extraction"],"license":"MIT","_id":"openbrand@0.1.1","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"homepage":"https://openbrand.sh","bugs":{"url":"https://github.com/ethanjyx/openbrand/issues"},"dist":{"shasum":"c0349c2e649e3e4b8a178a07576e8b8da6bbe98a","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.1.1.tgz","fileCount":10,"integrity":"sha512-tWKG4ILxsML+2uZJnhddTY2id9sO8NWDretSfxublxlXwlHnEWTCURlaxExTdVbKUjaev0LazuPYuI6kL/PgkA==","signatures":[{"sig":"MEUCIQC4+RJBqePHBu34IGxqGHOWxXR1NLO89hMQRxikZDYqaQIgJee7JHUY2fOWHW3Z90U8+TrS3NqFf7L6I8ccYNgbAo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55052},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d11207302aa1b0b18d99f70d043f73befd8914cc","scripts":{"dev":"next dev","lint":"eslint","test":"bun test","build":"next build","start":"next start","build:pkg":"tsup"},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"repository":{"url":"git+https://github.com/ethanjyx/openbrand.git","type":"git"},"_npmVersion":"10.8.2","description":"Extract brand assets (logos, colors, backdrops) from any website URL","directories":{},"_nodeVersion":"20.19.4","dependencies":{"sharp":"^0.34.5","cheerio":"^1.2.0","probe-image-size":"^7.2.3","@types/probe-image-size":"^7.2.5"},"ignoreScripts":["sharp","unrs-resolver"],"_hasShrinkwrap":false,"devDependencies":{"next":"16.1.6","tsup":"^8.5.1","react":"19.2.3","eslint":"^9","react-dom":"19.2.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4"},"trustedDependencies":["sharp","unrs-resolver"],"_npmOperationalInternal":{"tmp":"tmp/openbrand_0.1.1_1773425251891_0.37810851366185605","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"openbrand","version":"0.2.0","keywords":["brand","logo","colors","scraper","extraction"],"license":"MIT","_id":"openbrand@0.2.0","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"homepage":"https://openbrand.sh","bugs":{"url":"https://github.com/ethanjyx/openbrand/issues"},"dist":{"shasum":"ab2906fb0ec2cb0f57847be9466d1b1557b412b1","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.2.0.tgz","fileCount":10,"integrity":"sha512-SFoQEJ9mhl7sbZmYmf52mPFjJDibmtF0yc17wdLPC4gG9NhyjEgQ3KGo+eHYNgFbt0L4JYgzMjxqK2K60FHPmw==","signatures":[{"sig":"MEUCIHzUqO1JyQORNwH/ZHMWL/9ClDxnbHcF+p+IeKdvYGwHAiEA3ifpfqrGNFMikCV4ce5AZBUX0uFJAIhFg3p/zDUETaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63237},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"458d2f26f5443233eec3a8f9e2455efb77568bbd","scripts":{"dev":"next dev","lint":"eslint","test":"bun test integration_test/","build":"next build","start":"next start","build:pkg":"tsup"},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"repository":{"url":"git+https://github.com/ethanjyx/openbrand.git","type":"git"},"_npmVersion":"10.8.2","description":"Extract brand assets (logos, colors, backdrops) from any website URL","directories":{},"_nodeVersion":"20.19.4","dependencies":{"sharp":"^0.34.5","cheerio":"^1.2.0","@supabase/ssr":"^0.9.0","probe-image-size":"^7.2.3","@supabase/supabase-js":"^2.99.1","@types/probe-image-size":"^7.2.5"},"ignoreScripts":["sharp","unrs-resolver"],"_hasShrinkwrap":false,"devDependencies":{"next":"16.1.6","tsup":"^8.5.1","react":"19.2.3","eslint":"^9","react-dom":"19.2.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4"},"trustedDependencies":["sharp","unrs-resolver"],"_npmOperationalInternal":{"tmp":"tmp/openbrand_0.2.0_1773512078271_0.48031368544178465","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"openbrand","version":"0.2.1","keywords":["brand","logo","colors","scraper","extraction"],"license":"MIT","_id":"openbrand@0.2.1","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"homepage":"https://openbrand.sh","bugs":{"url":"https://github.com/ethanjyx/openbrand/issues"},"dist":{"shasum":"fdb5b6004dfcdfb8d804f15575a7e8e755e406f0","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.2.1.tgz","fileCount":10,"integrity":"sha512-SwylJ/sjmUx0bnIKe/zne+o1oKmRF9hH71Zxtt/SecGZv86AWzCTl1bVseizV1lv2rNOUmnqKPKAzK8/MoxPyg==","signatures":[{"sig":"MEYCIQDyXz5tqb11kFqHP8QOYxWYCe+iLWx2cWhlOi53d+GceQIhAL6544zqS3vkjJLXV7QgSudj2EUZ41hlhtHRxFRu9Adn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63936},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"48c8bbd976fc7981eafa5ea517c6c0a30c37a005","scripts":{"dev":"next dev","lint":"eslint","test":"bun test integration_test/","build":"next build","start":"next start","build:pkg":"tsup"},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"repository":{"url":"git+https://github.com/ethanjyx/openbrand.git","type":"git"},"_npmVersion":"10.8.2","description":"Extract brand assets (logos, colors, backdrops) from any website URL","directories":{},"_nodeVersion":"20.19.4","dependencies":{"sharp":"^0.34.5","cheerio":"^1.2.0","@supabase/ssr":"^0.9.0","probe-image-size":"^7.2.3","@supabase/supabase-js":"^2.99.1","@types/probe-image-size":"^7.2.5"},"ignoreScripts":["sharp","unrs-resolver"],"_hasShrinkwrap":false,"devDependencies":{"next":"16.1.6","tsup":"^8.5.1","react":"19.2.3","eslint":"^9","react-dom":"19.2.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4"},"trustedDependencies":["sharp","unrs-resolver"],"_npmOperationalInternal":{"tmp":"tmp/openbrand_0.2.1_1774630813580_0.1380174751708967","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"openbrand","version":"0.2.2","keywords":["brand","logo","colors","scraper","extraction"],"license":"MIT","_id":"openbrand@0.2.2","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"homepage":"https://openbrand.sh","bugs":{"url":"https://github.com/tight-studio/openbrand/issues"},"dist":{"shasum":"da967c131433fc5683337c130620f7b9d6c4d5d8","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.2.2.tgz","fileCount":10,"integrity":"sha512-6yOZ27PL67OhUGw+nqY0/udmfvgH8cPMUFAClH9WDMxkkJeW+uQgazkoYDPz6lPNA0QkUrb8MKy2LIMCg8r9FQ==","signatures":[{"sig":"MEUCIQDpp3HZ3HxkryGbPV3dhMNIjbeZCeql5kLVymkAvn+/7wIgXyzaeMox6JI4MtCvDn3TMKL2Y+8+Zr9nuygol8eLucM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63944},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"150269a1cc825224cb64527ad0206de1ff87c5f3","scripts":{"dev":"next dev","lint":"eslint","test":"bun test integration_test/","build":"next build","start":"next start","build:pkg":"tsup"},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"repository":{"url":"git+https://github.com/tight-studio/openbrand.git","type":"git"},"_npmVersion":"11.11.1","description":"Extract brand assets (logos, colors, backdrops) from any website URL","directories":{},"_nodeVersion":"25.8.2","dependencies":{"sharp":"^0.34.5","cheerio":"^1.2.0","@supabase/ssr":"^0.9.0","probe-image-size":"^7.2.3","@supabase/supabase-js":"^2.99.1","@types/probe-image-size":"^7.2.5"},"ignoreScripts":["sharp","unrs-resolver"],"_hasShrinkwrap":false,"devDependencies":{"next":"16.1.6","tsup":"^8.5.1","react":"19.2.3","eslint":"^9","react-dom":"19.2.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4"},"trustedDependencies":["sharp","unrs-resolver"],"_npmOperationalInternal":{"tmp":"tmp/openbrand_0.2.2_1778545076157_0.5379174196276035","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"openbrand","version":"0.2.3","description":"Extract brand assets (logos, colors, backdrops) from any website URL","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"license":"MIT","homepage":"https://openbrand.sh","repository":{"type":"git","url":"git+https://github.com/tight-studio/openbrand.git"},"keywords":["brand","logo","colors","scraper","extraction"],"scripts":{"dev":"next dev","build":"next build","start":"next start","lint":"eslint","build:pkg":"tsup","test":"bun test integration_test/"},"dependencies":{"@supabase/ssr":"^0.9.0","@supabase/supabase-js":"^2.99.1","@types/probe-image-size":"^7.2.5","cheerio":"^1.2.0","probe-image-size":"^7.2.3","sharp":"^0.34.5"},"devDependencies":{"@tailwindcss/postcss":"^4","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","eslint":"^9","eslint-config-next":"16.1.6","next":"16.1.6","react":"19.2.3","react-dom":"19.2.3","tailwindcss":"^4","tsup":"^8.5.1","typescript":"^5"},"ignoreScripts":["sharp","unrs-resolver"],"trustedDependencies":["sharp","unrs-resolver"],"gitHead":"67f3acc9bc43671bcf5da2fcdc66586ee0e46dbd","_id":"openbrand@0.2.3","bugs":{"url":"https://github.com/tight-studio/openbrand/issues"},"_nodeVersion":"25.8.2","_npmVersion":"11.11.1","dist":{"integrity":"sha512-bCEPPnkPfHYplZp6fbShpobG0LUi21vOB+1Mo17KuuupBIawCUVh9aRYwzBLn3WPA2mC97Gc6zb2EnPDXLjWGg==","shasum":"5c5927a75121829b1c15b6a87b5daa850f4dbcd0","tarball":"https://registry.npmjs.org/openbrand/-/openbrand-0.2.3.tgz","fileCount":10,"unpackedSize":63952,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCS6UXMXFX8fFYhgt/kYZrNjmFkx57VvGCQcJv/TDtkSwIgPWtHPuYDKFpp7yi0yT50os0txbl08LOLapvXckYZ7mk="}]},"_npmUser":{"name":"ethanjyx","email":"ethan@tight.studio"},"directories":{},"maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openbrand_0.2.3_1778545577831_0.6263906364385026"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-13T18:01:12.227Z","modified":"2026-05-12T00:26:18.105Z","0.1.0":"2026-03-13T18:01:12.399Z","0.1.1":"2026-03-13T18:07:32.028Z","0.2.0":"2026-03-14T18:14:38.415Z","0.2.1":"2026-03-27T17:00:13.739Z","0.2.2":"2026-05-12T00:17:56.302Z","0.2.3":"2026-05-12T00:26:17.993Z"},"bugs":{"url":"https://github.com/tight-studio/openbrand/issues"},"license":"MIT","homepage":"https://openbrand.sh","keywords":["brand","logo","colors","scraper","extraction"],"repository":{"type":"git","url":"git+https://github.com/tight-studio/openbrand.git"},"description":"Extract brand assets (logos, colors, backdrops) from any website URL","maintainers":[{"name":"ethanjyx","email":"ethan@tight.studio"}],"readme":"<p align=\"center\">\n  <img src=\"public/logo.svg\" alt=\"OpenBrand logo\" width=\"80\" height=\"84\" />\n</p>\n\n<h1 align=\"center\">OpenBrand</h1>\n<p align=\"center\">Extract any brand from a URL</p>\n\n<p align=\"center\">Try it out at <a href=\"https://openbrand.sh\">openbrand.sh</a></p>\n\n<p align=\"center\">\n  <img src=\"public/openbrand.gif\" alt=\"OpenBrand demo\" width=\"600\" />\n</p>\n\n<p align=\"center\"><sub>Demo prepared with <a href=\"https://tight.studio/\">Tight Studio</a></sub></p>\n\nExtract brand assets (logos, colors, backdrops, brand name) from any website URL.\n\n## As an API call\n\nGet your free API key from [openbrand.sh/dashboard](https://openbrand.sh/dashboard).\n\n**cURL**\n\n```bash\ncurl \"https://openbrand.sh/api/extract?url=https://stripe.com\" \\\n  -H \"Authorization: Bearer your_api_key\"\n```\n\n**TypeScript**\n\n```typescript\nconst res = await fetch(\n  \"https://openbrand.sh/api/extract?url=https://stripe.com\",\n  { headers: { Authorization: \"Bearer your_api_key\" } }\n);\nconst brand = await res.json();\n```\n\n**Python**\n\n```python\nimport requests\n\nres = requests.get(\n    \"https://openbrand.sh/api/extract\",\n    params={\"url\": \"https://stripe.com\"},\n    headers={\"Authorization\": \"Bearer your_api_key\"},\n)\nbrand = res.json()\n```\n\n## As an [agent skill](https://skills.sh/tight-studio/openbrand/openbrand)\n\nAdd OpenBrand to Claude Code, Cursor, Codex, Gemini CLI, and [40+ other agents](https://skills.sh):\n\n```bash\nnpx skills add tight-studio/openbrand\n```\n\nOnce installed, your agent automatically knows how to extract brand assets — just ask it to \"extract brand assets from stripe.com\".\n\n## As an [npm package](https://www.npmjs.com/package/openbrand)\n\nNo API key required. Runs as a library from your server-side code.\n\n```bash\nnpm add openbrand\n```\n\n```typescript\nimport { extractBrandAssets } from \"openbrand\";\n\nconst result = await extractBrandAssets(\"https://stripe.com\");\nif (result.ok) {\n  // result.data.brand_name → \"Stripe\"\n  // result.data.logos → LogoAsset[]\n  // result.data.colors → ColorAsset[]\n  // result.data.backdrop_images → BackdropAsset[]\n} else {\n  // result.error.code → \"ACCESS_BLOCKED\" | \"NOT_FOUND\" | \"SERVER_ERROR\" | ...\n  // result.error.message → human-readable explanation\n}\n```\n\n## As an [MCP server](https://www.npmjs.com/package/openbrand-mcp)\n\nUse OpenBrand as a tool in Claude Code, Cursor, or any MCP-compatible client.\n\n1. Install the MCP server (no API key needed to install):\n\n```bash\nclaude mcp add --transport stdio openbrand -- npx -y openbrand-mcp\n```\n\n2. Get your API key from [openbrand.sh/dashboard](https://openbrand.sh/dashboard) and add it:\n\n```bash\nclaude mcp add --transport stdio \\\n  --env OPENBRAND_API_KEY=your_api_key \\\n  openbrand -- npx -y openbrand-mcp\n```\n\nOr add to `.claude/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"openbrand\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"openbrand-mcp\"],\n      \"env\": {\n        \"OPENBRAND_API_KEY\": \"your_api_key\"\n      }\n    }\n  }\n}\n```\n\nThen ask Claude to \"extract brand assets from stripe.com\" and it will use the `extract_brand_assets` tool automatically.\n\n## Self-hosting the web app\n\n```bash\ngit clone https://github.com/tight-studio/openbrand.git\ncd openbrand\nbun install\nbun dev\n```\n\nNo environment variables required. Open http://localhost:3000.\n\n## What it extracts\n\n- **Logos** — favicons, apple-touch-icons, header/nav logos, inline SVGs (with dimension probing)\n- **Brand colors** — from theme-color meta tags, manifest.json, and dominant colors from logo imagery\n- **Backdrop images** — og:image, CSS backgrounds, hero/banner images\n- **Brand name** — from og:site_name, application-name, logo alt text, page title\n\n## Tech stack\n\nNext.js, React, TypeScript, Cheerio, Sharp, Tailwind CSS\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}