{"_id":"@absolutejs/audience-audiense","name":"@absolutejs/audience-audiense","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"author":"Alex Kahn","description":"Audiense adapter for @absolutejs/audience — implements the AudienceSource contract against the Audiense Insights API (reports, demographics, affinities, influencers, audience overlap). The premium social-graph backfill for AbsoluteJS audience intelligence","dependencies":{"@absolutejs/audience":"^0.0.2"},"devDependencies":{"@types/bun":"latest","typescript":"5.9.3"},"license":"Apache-2.0","main":"./dist/index.js","name":"@absolutejs/audience-audiense","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/absolutejs/audience-adapters.git"},"scripts":{"build":"rm -rf dist && bun build src/index.ts --outdir dist --target=bun --external @absolutejs/audience && tsc --emitDeclarationOnly --project tsconfig.json","release":"bun run build && bun publish","test":"bun test","typecheck":"tsc --noEmit"},"type":"module","types":"./dist/index.d.ts","version":"0.0.1","_id":"@absolutejs/audience-audiense@0.0.1","_integrity":"sha512-q2/M5w5Datdqa6fr8iTzqPMU43hXwHSCxsWcnB7d8gcXcVov8sWqjQrkl1q9cq+xh7V67J/6LN0Rgqil82XiTQ==","_nodeVersion":"24.3.0","_npmVersion":"10.8.3","shasum":"d909c1ef9324ec357e72a0a1347dcd313befbaa0","dist":{"integrity":"sha512-q2/M5w5Datdqa6fr8iTzqPMU43hXwHSCxsWcnB7d8gcXcVov8sWqjQrkl1q9cq+xh7V67J/6LN0Rgqil82XiTQ==","shasum":"d909c1ef9324ec357e72a0a1347dcd313befbaa0","tarball":"https://registry.npmjs.org/@absolutejs/audience-audiense/-/audience-audiense-0.0.1.tgz","fileCount":6,"unpackedSize":19568,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDnNVgXlHd9kNk9Ii4IjVos4r+gQdQJKhibMy/4xQCY7AIgGqkwXICdxODKdsVj1oTvdCr+wyza4Vnlwd2eYT17Z0c="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/audience-audiense_0.0.1_1781132294010_0.8414250018678795"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T22:58:13.832Z","0.0.1":"2026-06-10T22:58:14.190Z","modified":"2026-06-10T22:58:14.444Z"},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"description":"Audiense adapter for @absolutejs/audience — implements the AudienceSource contract against the Audiense Insights API (reports, demographics, affinities, influencers, audience overlap). The premium social-graph backfill for AbsoluteJS audience intelligence","repository":{"type":"git","url":"https://github.com/absolutejs/audience-adapters.git"},"author":"Alex Kahn","license":"Apache-2.0","readme":"# @absolutejs/audience-audiense\n\nAudiense adapter for [`@absolutejs/audience`](https://www.npmjs.com/package/@absolutejs/audience).\nImplements the `AudienceSource` contract against the [Audiense Insights API](https://api.audiense.com)\n— reports, demographics, influencer/brand affinities, and audience overlap — so an\nAbsoluteJS app can use **measured** audience intelligence wherever it otherwise\nderives it (e.g. the Trust & Fit / OPA audience-overlap signal).\n\nThis is the premium social-graph backfill: the parts of audience intelligence you\ncan't derive yourself (Audiense's proprietary follower/affinity graph), behind the\nsame interface as the own-it primitives.\n\n## Install\n\n```sh\nbun add @absolutejs/audience-audiense @absolutejs/audience\n```\n\n## Use\n\n```ts\nimport { audienseSource } from \"@absolutejs/audience-audiense\";\n\nconst audience = audienseSource({\n  clientId: process.env.AUDIENSE_CLIENT_ID!,\n  clientSecret: process.env.AUDIENSE_CLIENT_SECRET!,\n  defaultBaselineId: process.env.AUDIENSE_BASELINE_ID, // baseline to compare affinities against\n});\n\nconst reports = await audience.listAudiences?.();\nconst profile = await audience.getAudience?.(reports![0]);   // size, segments, demographics, affinities\nconst overlap = await audience.overlap?.(reportA, reportB);  // { score, sharedAffinities, method }\n```\n\nEvery method is optional on `AudienceSource`, so consumers feature-detect:\n\n```ts\nconst score = audience.overlap\n  ? (await audience.overlap(a, b)).score   // measured, from Audiense\n  : affinityOverlap(profA, profB).score;   // derived fallback (@absolutejs/audience)\n```\n\n## Auth\n\nClient-credentials OAuth: `POST {baseUrl}/login/token` with\n`Authorization: Basic base64(clientId:clientSecret)` and `grant_type=client_credentials`.\nThe returned bearer token is cached until just before it expires. Get credentials\nfrom your Audiense account (or your Audiense data-partnership contact).\n\n## Config\n\n| Field | Default | Notes |\n| --- | --- | --- |\n| `clientId` / `clientSecret` | — | Audiense API credentials (required). |\n| `baseUrl` | `https://api.audiense.com/v1` | Override for a partnership/sandbox feed. |\n| `defaultBaselineId` | — | Baseline audience to compare affinities against; override per call via a ref's `meta.baselineId`. |\n| `fetch` | global `fetch` | Inject for tests / custom runtimes. |\n| `now` | `Date.now` | Inject a clock for tests. |\n\n## Overlap\n\nAudiense exposes no two-audience intersection endpoint at the API tier this adapter\ntargets (it's a UI report), so `overlap` is computed from **shared affinities**\n(`affinityItemsOverlap` from `@absolutejs/audience` — a weighted cosine over the two\naffinity graphs, plus the shared items). If your data partnership grants a native\nintersection endpoint, swap it in at the `overlap` implementation.\n\n## Field-mapping note\n\nResponse shapes are modeled from Audiense's own official client\n([`audienseco/mcp-audiense-insights`](https://github.com/audienseco/mcp-audiense-insights)).\nA few field names weren't public, so the types are tolerant and the mappers degrade\ngracefully when a field is absent. Confirm exact field names against the live API (or\nyour partnership feed) — the mappers are centralized in `src/index.ts`.\n\n## License\n\nApache-2.0. It only has value riding `@absolutejs/audience`, so it's permissive (per\nthe AbsoluteJS adapter-tier policy).\n","readmeFilename":"README.md","_rev":"1-5374ba596f7fff0d9479b03569ace3ba"}