Initial commit: Bunny Agency Italia (it-IT) marketing site
Italian-market site for the Bunny Agency network, built on the shared Next.js App Router template with content driven from site-content.json. - 50 routes: home, 5 services, pricing, FAQ, about/apply/contact, 32 blog answers and guides, 5 legal pages - Research-driven Italian copy citing ISTAT, INPS and Agenzia delle Entrate (forfettario 15%/5%, ATECO 73.11.03, INPS 26,07%, tassa etica, DAC7) - 6 long-form guides targeting high-volume Italian creator searches - "Milanese Editoriale" design system with stats band, editorial article layout, creator gallery and footer language switcher to 18 sibling sites - Full SEO/AEO/GEO: JSON-LD entity graph, hreflang cluster, llms.txt, IndexNow, sitemap, AI-crawler-friendly robots - validate-seo.mjs passes with 0 errors Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1
.env.example
Normal file
@ -0,0 +1 @@
|
|||||||
|
NEXT_PUBLIC_SITE_URL=https://www.bunny-agency.it
|
||||||
24
.github/workflows/indexnow-production.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: Submit production URLs to IndexNow
|
||||||
|
|
||||||
|
on:
|
||||||
|
deployment_status:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: indexnow-production
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
submit:
|
||||||
|
if: >-
|
||||||
|
github.event_name == 'workflow_dispatch' ||
|
||||||
|
(github.event.deployment_status.state == 'success' && github.event.deployment_status.environment == 'Production')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
- run: node scripts/submit-indexnow.mjs
|
||||||
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.next/
|
||||||
|
node_modules/
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.vercel/
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
7
.vercelignore
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.git/
|
||||||
|
.next/
|
||||||
|
node_modules/
|
||||||
|
legacy-src/
|
||||||
|
.env*
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
84
README.md
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
# Bunny Agency Italia — bunny-agency.it
|
||||||
|
|
||||||
|
Italian-market creator-management site (`it-IT`), part of the Bunny Agency network.
|
||||||
|
Next.js App Router, statically generated, content-driven from a single JSON registry.
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- Next.js 16 (App Router) + React 19, fully static (SSG)
|
||||||
|
- No CSS framework — one hand-written stylesheet (`src/app/globals.css`, "Milanese Editoriale")
|
||||||
|
- All page content lives in `src/content/site-content.json`; components are presentational
|
||||||
|
|
||||||
|
## Local development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
npm run dev # http://localhost:3000
|
||||||
|
npm run build # runs prebuild (llms.txt) + next build
|
||||||
|
npm run validate:seo # SEO invariants — must pass before deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
Node 22 is required (see `engines` in `package.json`).
|
||||||
|
|
||||||
|
## Content model
|
||||||
|
|
||||||
|
`src/content/site-content.json` holds:
|
||||||
|
|
||||||
|
| Key | Purpose |
|
||||||
|
|---|---|
|
||||||
|
| `site` | locale, URLs, hreflang cluster, legal entity, ratings, IndexNow key |
|
||||||
|
| `labels` / `core` | all UI strings and page H1/summaries (Italian) |
|
||||||
|
| `pages[]` | every route: path, title, description, H1, sections, FAQ, citations, image, author |
|
||||||
|
| `people`, `videos`, `creatorGallery` | E-E-A-T entities, Vimeo case studies, creator photos |
|
||||||
|
| `network` | footer language switcher — all sibling language sites |
|
||||||
|
|
||||||
|
Routing is a single catch-all (`src/app/[[...slug]]/page.tsx`) that resolves a path
|
||||||
|
against `pages[]`, so **adding a page = adding an object to `pages[]`** (plus an image).
|
||||||
|
|
||||||
|
### Page invariants enforced by `scripts/validate-seo.mjs`
|
||||||
|
|
||||||
|
- title ≤ 60 chars, description ≤ 155 chars, unique across the site
|
||||||
|
- ≥ 2 citations per page; a quotable number in the summary and in **every** FAQ answer
|
||||||
|
- blog keyword present in the H1 or a section heading; service keyword in the H1
|
||||||
|
- money pages (`/`, `/pricing`, `/services/account-management`, and 3 blog pages)
|
||||||
|
need 5–7 sections, ≥ 5 FAQs, and 580–1000 words
|
||||||
|
- the referenced image file must exist in `public/`
|
||||||
|
|
||||||
|
Pages that exist only on this site carry `"italyOnly": true`, which suppresses the
|
||||||
|
network hreflang alternates (siblings have no equivalent URL).
|
||||||
|
|
||||||
|
## Images
|
||||||
|
|
||||||
|
Per-page WebP assets are generated deterministically by the network tool:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ../_seo-tools && ONLY_REPO=Bunny-Agency-Italy node generate-images.mjs
|
||||||
|
```
|
||||||
|
|
||||||
|
Creator photos in `public/images/creators/` are the shared network pool.
|
||||||
|
|
||||||
|
## SEO / AEO / GEO
|
||||||
|
|
||||||
|
- `sitemap.xml` and `robots.txt` are generated from `pages[]` (AI crawlers allowed)
|
||||||
|
- `llms.txt` / `llms-full.txt` regenerate on `prebuild` (`scripts/generate-llms.mjs`)
|
||||||
|
- JSON-LD: Organization, WebSite, WebPage/Article/Service, FAQPage, BreadcrumbList,
|
||||||
|
Review, AggregateRating, VideoObject, Person
|
||||||
|
- IndexNow: key file in `public/`, submitted by `scripts/submit-indexnow.mjs`
|
||||||
|
(`npm run postdeploy`) and by `.github/workflows/indexnow-production.yml`
|
||||||
|
|
||||||
|
## Deployment (Vercel)
|
||||||
|
|
||||||
|
Framework preset `nextjs`; config in `vercel.json` (security headers, immutable
|
||||||
|
image caching, `fra1` region). Set in Vercel project settings:
|
||||||
|
|
||||||
|
| Env var | Value |
|
||||||
|
|---|---|
|
||||||
|
| `NEXT_PUBLIC_SITE_URL` | `https://www.bunny-agency.it` |
|
||||||
|
|
||||||
|
Domain `bunny-agency.it` must be registered and pointed at Vercel (`.it` requires an
|
||||||
|
EU/EEA registrant). Until then the production build serves on the `*.vercel.app` URL;
|
||||||
|
canonicals and hreflang already point at the final domain.
|
||||||
|
|
||||||
|
After the domain is live: verify in Google Search Console and Bing Webmaster Tools,
|
||||||
|
submit the sitemap, and add `https://www.bunny-agency.it` to the sibling sites'
|
||||||
|
`schemaSameAs` + `it-IT` hreflang (already done in this repo's network config).
|
||||||
6
next-env.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/// <reference types="next" />
|
||||||
|
/// <reference types="next/image-types/global" />
|
||||||
|
import "./.next/types/routes.d.ts";
|
||||||
|
|
||||||
|
// NOTE: This file should not be edited
|
||||||
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||||
8
next.config.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
poweredByHeader: false,
|
||||||
|
compress: true,
|
||||||
|
async redirects() { return []; },
|
||||||
|
async headers() { return [{ source: "/(.*)", headers: [{ key: "X-Content-Type-Options", value: "nosniff" }, { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" }, { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" }] }]; }
|
||||||
|
};
|
||||||
|
module.exports = nextConfig;
|
||||||
979
package-lock.json
generated
Normal file
@ -0,0 +1,979 @@
|
|||||||
|
{
|
||||||
|
"name": "bunny-agency-italy",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "bunny-agency-italy",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"dependencies": {
|
||||||
|
"next": "16.2.10",
|
||||||
|
"react": "19.2.7",
|
||||||
|
"react-dom": "19.2.7"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "22.15.3",
|
||||||
|
"@types/react": "19.2.17",
|
||||||
|
"@types/react-dom": "19.2.3",
|
||||||
|
"typescript": "5.8.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "22.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@emnapi/runtime": {
|
||||||
|
"version": "1.11.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
|
||||||
|
"integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/colour": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-darwin-arm64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-darwin-arm64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-darwin-x64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-darwin-x64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-darwin-x64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-arm": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-arm64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-ppc64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-riscv64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-s390x": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linux-x64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-arm": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-arm": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-arm64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-arm64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-ppc64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-ppc64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-riscv64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-riscv64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-s390x": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-s390x": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linux-x64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linux-x64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linuxmusl-arm64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-linuxmusl-x64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-libvips-linuxmusl-x64": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-wasm32": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
|
||||||
|
"cpu": [
|
||||||
|
"wasm32"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@emnapi/runtime": "^1.7.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-win32-arm64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-win32-ia32": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@img/sharp-win32-x64": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/env": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-darwin-arm64": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-darwin-x64": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-linux-arm64-musl": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-linux-x64-gnu": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-linux-x64-musl": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@next/swc-win32-x64-msvc": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@swc/helpers": {
|
||||||
|
"version": "0.5.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
|
||||||
|
"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "22.15.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz",
|
||||||
|
"integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/react": {
|
||||||
|
"version": "19.2.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz",
|
||||||
|
"integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"csstype": "^3.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/react-dom": {
|
||||||
|
"version": "19.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
|
||||||
|
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/react": "^19.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/baseline-browser-mapping": {
|
||||||
|
"version": "2.11.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.8.tgz",
|
||||||
|
"integrity": "sha512-zAgkquC2WYF0PIc6XbNYkA2uuxxFavzgmX61R+dHDUa558V8Ejf8ozTZFR6QzM24RWu4kBcRkhJ5kpz77j9fnQ==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"baseline-browser-mapping": "dist/cli.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/caniuse-lite": {
|
||||||
|
"version": "1.0.30001806",
|
||||||
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
|
||||||
|
"integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "CC-BY-4.0"
|
||||||
|
},
|
||||||
|
"node_modules/client-only": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
||||||
|
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/csstype": {
|
||||||
|
"version": "3.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
||||||
|
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/detect-libc": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
|
||||||
|
"integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/next": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/next/-/next-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@next/env": "16.2.10",
|
||||||
|
"@swc/helpers": "0.5.15",
|
||||||
|
"baseline-browser-mapping": "^2.9.19",
|
||||||
|
"caniuse-lite": "^1.0.30001579",
|
||||||
|
"postcss": "8.4.31",
|
||||||
|
"styled-jsx": "5.1.6"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"next": "dist/bin/next"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.9.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@next/swc-darwin-arm64": "16.2.10",
|
||||||
|
"@next/swc-darwin-x64": "16.2.10",
|
||||||
|
"@next/swc-linux-arm64-gnu": "16.2.10",
|
||||||
|
"@next/swc-linux-arm64-musl": "16.2.10",
|
||||||
|
"@next/swc-linux-x64-gnu": "16.2.10",
|
||||||
|
"@next/swc-linux-x64-musl": "16.2.10",
|
||||||
|
"@next/swc-win32-arm64-msvc": "16.2.10",
|
||||||
|
"@next/swc-win32-x64-msvc": "16.2.10",
|
||||||
|
"sharp": "^0.34.5"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@opentelemetry/api": "^1.1.0",
|
||||||
|
"@playwright/test": "^1.51.1",
|
||||||
|
"babel-plugin-react-compiler": "*",
|
||||||
|
"react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
|
||||||
|
"react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
|
||||||
|
"sass": "^1.3.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@opentelemetry/api": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@playwright/test": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"babel-plugin-react-compiler": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.5.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
|
||||||
|
"integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.12",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/react": {
|
||||||
|
"version": "19.2.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz",
|
||||||
|
"integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/react-dom": {
|
||||||
|
"version": "19.2.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz",
|
||||||
|
"integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"scheduler": "^0.27.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^19.2.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/scheduler": {
|
||||||
|
"version": "0.27.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
||||||
|
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/semver": {
|
||||||
|
"version": "7.8.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||||
|
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
||||||
|
"license": "ISC",
|
||||||
|
"optional": true,
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/sharp": {
|
||||||
|
"version": "0.34.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
|
||||||
|
"integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@img/colour": "^1.0.0",
|
||||||
|
"detect-libc": "^2.1.2",
|
||||||
|
"semver": "^7.7.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/libvips"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@img/sharp-darwin-arm64": "0.34.5",
|
||||||
|
"@img/sharp-darwin-x64": "0.34.5",
|
||||||
|
"@img/sharp-libvips-darwin-arm64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-darwin-x64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-arm": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-arm64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-ppc64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-riscv64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-s390x": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linux-x64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
|
||||||
|
"@img/sharp-libvips-linuxmusl-x64": "1.2.4",
|
||||||
|
"@img/sharp-linux-arm": "0.34.5",
|
||||||
|
"@img/sharp-linux-arm64": "0.34.5",
|
||||||
|
"@img/sharp-linux-ppc64": "0.34.5",
|
||||||
|
"@img/sharp-linux-riscv64": "0.34.5",
|
||||||
|
"@img/sharp-linux-s390x": "0.34.5",
|
||||||
|
"@img/sharp-linux-x64": "0.34.5",
|
||||||
|
"@img/sharp-linuxmusl-arm64": "0.34.5",
|
||||||
|
"@img/sharp-linuxmusl-x64": "0.34.5",
|
||||||
|
"@img/sharp-wasm32": "0.34.5",
|
||||||
|
"@img/sharp-win32-arm64": "0.34.5",
|
||||||
|
"@img/sharp-win32-ia32": "0.34.5",
|
||||||
|
"@img/sharp-win32-x64": "0.34.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/styled-jsx": {
|
||||||
|
"version": "5.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
|
||||||
|
"integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"client-only": "0.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@babel/core": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"babel-plugin-macros": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tslib": {
|
||||||
|
"version": "2.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||||
|
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||||
|
"license": "0BSD"
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "5.8.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
|
||||||
|
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.21.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
package.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"private": true,
|
||||||
|
"version": "1.0.0",
|
||||||
|
"engines": {
|
||||||
|
"node": "22.x"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"postcss": "8.5.16"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"prebuild": "node scripts/generate-llms.mjs",
|
||||||
|
"dev": "next dev",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"validate:seo": "node scripts/validate-seo.mjs",
|
||||||
|
"indexnow:submit": "node scripts/submit-indexnow.mjs",
|
||||||
|
"postdeploy": "node scripts/submit-indexnow.mjs"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "16.2.10",
|
||||||
|
"react": "19.2.7",
|
||||||
|
"react-dom": "19.2.7"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "22.15.3",
|
||||||
|
"@types/react": "19.2.17",
|
||||||
|
"@types/react-dom": "19.2.3",
|
||||||
|
"typescript": "5.8.3"
|
||||||
|
},
|
||||||
|
"name": "bunny-agency-italy"
|
||||||
|
}
|
||||||
1
public/cd6b5f316aa84975136f630f3eb1cd02.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
cd6b5f316aa84975136f630f3eb1cd02
|
||||||
BIN
public/images/creators/alt-onlyfans-creator-bunny-agency-05.webp
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
public/images/creators/home-hero.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/creators/onlyfans-agency-creators-hero.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-01.webp
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-02.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-03.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-04.webp
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-06.webp
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-07.webp
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-08.webp
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-09.webp
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
public/images/creators/onlyfans-creator-bunny-agency-10.webp
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
public/images/seo/about-italy.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/apply-italy.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/seo/blog-italy.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/seo/contact-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/cookie-policy-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/disclaimer-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/faq-italy.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/seo/guide-come-funziona-onlyfans-italy.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/guide-partita-iva-onlyfans-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/guide-tassa-etica-onlyfans-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/guide-truffe-agenzie-onlyfans-italy.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/seo/imprint-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
516
public/images/seo/manifest.json
Normal file
@ -0,0 +1,516 @@
|
|||||||
|
{
|
||||||
|
"site": "italy",
|
||||||
|
"generatedAt": "2026-07-11",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"route": "/",
|
||||||
|
"file": "/images/creators/home-hero.webp",
|
||||||
|
"alt": "Creator OnlyFans gestite da Bunny Agency Italia — foto editoriale del team di creator",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38574,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services",
|
||||||
|
"file": "/images/seo/services-italy.webp",
|
||||||
|
"alt": "Servizi di management per creator in Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40984,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/about",
|
||||||
|
"file": "/images/seo/about-italy.webp",
|
||||||
|
"alt": "Un modello operativo chiaro per creator indipendenti — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37712,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/apply",
|
||||||
|
"file": "/images/seo/apply-italy.webp",
|
||||||
|
"alt": "Candidati per un'analisi strategica riservata — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37202,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog",
|
||||||
|
"file": "/images/seo/blog-italy.webp",
|
||||||
|
"alt": "La biblioteca delle domande delle creator — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 43552,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/faq",
|
||||||
|
"file": "/images/seo/faq-italy.webp",
|
||||||
|
"alt": "Domande sull'agenzia per creator, risposte chiare — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39640,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/pricing",
|
||||||
|
"file": "/images/seo/pricing-italy.webp",
|
||||||
|
"alt": "Costi e perimetro di un'agenzia per creator — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 36866,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/contact",
|
||||||
|
"file": "/images/seo/contact-italy.webp",
|
||||||
|
"alt": "Contatta Bunny Agency Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41496,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services/account-management",
|
||||||
|
"file": "/images/seo/service-account-management-italy.webp",
|
||||||
|
"alt": "Gestione account — Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 36678,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services/marketing",
|
||||||
|
"file": "/images/seo/service-marketing-italy.webp",
|
||||||
|
"alt": "Strategia di marketing — Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38748,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services/chat-management",
|
||||||
|
"file": "/images/seo/service-chat-management-italy.webp",
|
||||||
|
"alt": "Gestione chat — Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38272,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services/content-strategy",
|
||||||
|
"file": "/images/seo/service-content-strategy-italy.webp",
|
||||||
|
"alt": "Strategia dei contenuti — Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40652,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/services/privacy-dmca",
|
||||||
|
"file": "/images/seo/service-privacy-dmca-italy.webp",
|
||||||
|
"alt": "Privacy e tutela DMCA — Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39044,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-start-onlyfans",
|
||||||
|
"file": "/images/seo/question-how-to-start-onlyfans-italy.webp",
|
||||||
|
"alt": "Come aprire OnlyFans in modo responsabile? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41918,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-start-making-money-on-onlyfans",
|
||||||
|
"file": "/images/seo/question-how-to-start-making-money-on-onlyfans-italy.webp",
|
||||||
|
"alt": "Come iniziare a guadagnare su OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40852,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-much-can-creators-earn",
|
||||||
|
"file": "/images/seo/question-how-much-can-creators-earn-italy.webp",
|
||||||
|
"alt": "Quanto si guadagna su OnlyFans davvero? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39036,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-often-should-creators-post",
|
||||||
|
"file": "/images/seo/question-how-often-should-creators-post-italy.webp",
|
||||||
|
"alt": "Quanto spesso pubblicare su OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41638,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/what-content-performs-best",
|
||||||
|
"file": "/images/seo/question-what-content-performs-best-italy.webp",
|
||||||
|
"alt": "Quali sono i contenuti migliori per OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39620,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-price-a-subscription",
|
||||||
|
"file": "/images/seo/question-how-to-price-a-subscription-italy.webp",
|
||||||
|
"alt": "Prezzo abbonamento OnlyFans: come deciderlo? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37754,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/platform-fees-and-payouts",
|
||||||
|
"file": "/images/seo/question-platform-fees-and-payouts-italy.webp",
|
||||||
|
"alt": "Come funzionano commissioni e pagamenti OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41906,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/creator-taxes-guide",
|
||||||
|
"file": "/images/seo/question-creator-taxes-guide-italy.webp",
|
||||||
|
"alt": "OnlyFans e tasse in Italia: cosa devi sapere? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39736,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/can-creators-stay-anonymous",
|
||||||
|
"file": "/images/seo/question-can-creators-stay-anonymous-italy.webp",
|
||||||
|
"alt": "Si può restare anonima su OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37678,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-protect-your-identity",
|
||||||
|
"file": "/images/seo/question-how-to-protect-your-identity-italy.webp",
|
||||||
|
"alt": "Come proteggere la tua identità da creator? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37576,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-promote-without-spam",
|
||||||
|
"file": "/images/seo/question-how-to-promote-without-spam-italy.webp",
|
||||||
|
"alt": "Come promuovere OnlyFans senza spam? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 42214,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/best-social-platforms-for-creators",
|
||||||
|
"file": "/images/seo/question-best-social-platforms-for-creators-italy.webp",
|
||||||
|
"alt": "Quali sono i migliori social per promuovere OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 42360,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-retain-subscribers",
|
||||||
|
"file": "/images/seo/question-how-to-retain-subscribers-italy.webp",
|
||||||
|
"alt": "Come fidelizzare gli abbonati OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41300,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-write-welcome-messages",
|
||||||
|
"file": "/images/seo/question-how-to-write-welcome-messages-italy.webp",
|
||||||
|
"alt": "Come scrivere un messaggio di benvenuto efficace? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39834,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/when-to-use-ppv-messages",
|
||||||
|
"file": "/images/seo/question-when-to-use-ppv-messages-italy.webp",
|
||||||
|
"alt": "Quando usare i messaggi PPV su OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38474,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-manage-creator-chat",
|
||||||
|
"file": "/images/seo/question-how-to-manage-creator-chat-italy.webp",
|
||||||
|
"alt": "Come gestire la chat con i fan? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39172,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-prevent-leaks-and-use-dmca",
|
||||||
|
"file": "/images/seo/question-how-to-prevent-leaks-and-use-dmca-italy.webp",
|
||||||
|
"alt": "Come prevenire i leak e usare il DMCA? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39042,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/agency-vs-self-management",
|
||||||
|
"file": "/images/seo/question-agency-vs-self-management-italy.webp",
|
||||||
|
"alt": "Agenzia OnlyFans o gestione autonoma? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39106,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-much-does-an-agency-cost",
|
||||||
|
"file": "/images/seo/question-how-much-does-an-agency-cost-italy.webp",
|
||||||
|
"alt": "Quanto costa un'agenzia OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40190,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-choose-a-creator-agency",
|
||||||
|
"file": "/images/seo/question-how-to-choose-a-creator-agency-italy.webp",
|
||||||
|
"alt": "Come scegliere un'agenzia OnlyFans seria? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39394,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/what-should-an-agency-contract-include",
|
||||||
|
"file": "/images/seo/question-what-should-an-agency-contract-include-italy.webp",
|
||||||
|
"alt": "Cosa deve includere il contratto con un'agenzia OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39932,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-build-a-content-calendar",
|
||||||
|
"file": "/images/seo/question-how-to-build-a-content-calendar-italy.webp",
|
||||||
|
"alt": "Come costruire un calendario dei contenuti? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 39044,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-audit-a-creator-account",
|
||||||
|
"file": "/images/seo/question-how-to-audit-a-creator-account-italy.webp",
|
||||||
|
"alt": "Come fare l'audit di un account creator? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37786,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-to-avoid-creator-burnout",
|
||||||
|
"file": "/images/seo/question-how-to-avoid-creator-burnout-italy.webp",
|
||||||
|
"alt": "Come evitare il burnout da creator? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38366,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/what-is-needed-to-apply-to-an-agency",
|
||||||
|
"file": "/images/seo/question-what-is-needed-to-apply-to-an-agency-italy.webp",
|
||||||
|
"alt": "Cosa serve per candidarsi a un'agenzia? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38894,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/questions/how-long-does-sustainable-growth-take",
|
||||||
|
"file": "/images/seo/question-how-long-does-sustainable-growth-take-italy.webp",
|
||||||
|
"alt": "Quanto tempo serve per crescere su OnlyFans? — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38110,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/privacy-policy",
|
||||||
|
"file": "/images/seo/privacy-policy-italy.webp",
|
||||||
|
"alt": "Informativa sulla privacy — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40314,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/terms-of-service",
|
||||||
|
"file": "/images/seo/terms-of-service-italy.webp",
|
||||||
|
"alt": "Termini di servizio — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 42204,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/cookie-policy",
|
||||||
|
"file": "/images/seo/cookie-policy-italy.webp",
|
||||||
|
"alt": "Cookie policy — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40834,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/imprint",
|
||||||
|
"file": "/images/seo/imprint-italy.webp",
|
||||||
|
"alt": "Note legali — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41514,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/disclaimer",
|
||||||
|
"file": "/images/seo/disclaimer-italy.webp",
|
||||||
|
"alt": "Avvertenza editoriale — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40962,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/partita-iva-onlyfans",
|
||||||
|
"file": "/images/seo/guide-partita-iva-onlyfans-italy.webp",
|
||||||
|
"alt": "Partita IVA OnlyFans: la guida completa 2026 — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40610,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/tassa-etica-onlyfans",
|
||||||
|
"file": "/images/seo/guide-tassa-etica-onlyfans-italy.webp",
|
||||||
|
"alt": "Tassa etica OnlyFans: cos'è e quanto costa davvero — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 41196,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/come-funziona-onlyfans",
|
||||||
|
"file": "/images/seo/guide-come-funziona-onlyfans-italy.webp",
|
||||||
|
"alt": "Come funziona OnlyFans: guida completa per iniziare — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 42262,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/onlyfans-senza-mostrare-il-viso",
|
||||||
|
"file": "/images/seo/guide-onlyfans-senza-mostrare-il-viso-italy.webp",
|
||||||
|
"alt": "OnlyFans senza mostrare il viso: la guida completa — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 38050,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/truffe-agenzie-onlyfans",
|
||||||
|
"file": "/images/seo/guide-truffe-agenzie-onlyfans-italy.webp",
|
||||||
|
"alt": "Truffe agenzie OnlyFans: come riconoscerle in Italia — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 40138,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "/blog/guide/quanto-guadagnano-creator-italiane",
|
||||||
|
"file": "/images/seo/guide-quanto-guadagnano-creator-italiane-italy.webp",
|
||||||
|
"alt": "Quanto guadagnano le creator italiane su OnlyFans — Bunny Agency Italia",
|
||||||
|
"width": 1200,
|
||||||
|
"height": 675,
|
||||||
|
"bytes": 37436,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; unique deterministic crop, color grade, and graphic treatment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"route": "sitewide-footer",
|
||||||
|
"file": "/images/seo/site-identity.webp",
|
||||||
|
"alt": "Bunny Agency Italia — Italia creator strategy studio",
|
||||||
|
"width": 960,
|
||||||
|
"height": 540,
|
||||||
|
"bytes": 28894,
|
||||||
|
"sourceMaster": "romania-editorial-master.png",
|
||||||
|
"originality": "AI-generated fictional market master; site identity derivative"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
public/images/seo/pricing-italy.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/seo/privacy-policy-italy.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/seo/question-agency-vs-self-management-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/question-creator-taxes-guide-italy.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/question-how-much-can-creators-earn-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/seo/question-how-to-manage-creator-chat-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/question-how-to-retain-subscribers-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/question-how-to-start-onlyfans-italy.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/seo/question-platform-fees-and-payouts-italy.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/images/seo/question-what-content-performs-best-italy.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/seo/question-when-to-use-ppv-messages-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/seo/service-account-management-italy.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/seo/service-chat-management-italy.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/seo/service-content-strategy-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/service-marketing-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/seo/service-privacy-dmca-italy.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/seo/services-italy.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/seo/site-identity.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/images/seo/terms-of-service-italy.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
989
public/llms-full.txt
Normal file
@ -0,0 +1,989 @@
|
|||||||
|
# Bunny Agency Italia — full answer corpus
|
||||||
|
|
||||||
|
## Key facts / proof
|
||||||
|
|
||||||
|
- Legal entity: Bunny Agency LLC; founded 2019 by Sophia Brecht.
|
||||||
|
- Documented creator results: $0 to $330k in 3.5 months; $2k to $33k/month in 2 months. These are individual case studies, not guarantees.
|
||||||
|
- Independent Trustpilot profile: 4/5 from 3 reviews, checked 2026-07-18.
|
||||||
|
- Commission model: the percentage and calculation base are agreed in writing; there is no universal fixed rate or upfront fee.
|
||||||
|
- Creator control: the creator retains the account, revenue, identity, and data; access and exit terms are documented.
|
||||||
|
|
||||||
|
## Agenzia OnlyFans per creator in Italia
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it
|
||||||
|
|
||||||
|
Bunny Agency Italia — Agenzia OnlyFans per creator in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Bunny Agency unisce gestione dell'account, piano dei contenuti, crescita del pubblico, chat con gli abbonati e tutela della privacy in un unico sistema di management misurabile per creator.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
## Servizi di management per creator in Italia
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services
|
||||||
|
|
||||||
|
Bunny Agency Italia — Servizi di management per creator in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Scegli un servizio mirato o un piano di gestione completo. Ogni raccomandazione parte dai dati del tuo account, dalla tua capacità produttiva, dai tuoi limiti personali e da priorità misurabili.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
## Un modello operativo chiaro per creator indipendenti
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/about
|
||||||
|
|
||||||
|
Bunny Agency Italia — Un modello operativo chiaro per creator indipendenti, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il nostro metodo editoriale e operativo separa i fatti verificabili dalle stime, protegge i confini delle creator e documenta chi è responsabile di ogni decisione.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
## Candidati per un'analisi strategica riservata
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/apply
|
||||||
|
|
||||||
|
Bunny Agency Italia — Candidati per un'analisi strategica riservata, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Descrivi situazione attuale, obiettivi, lingua e tipo di supporto preferito. La candidatura è una valutazione di compatibilità, non una promessa di reddito né una garanzia di ammissione.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
## La biblioteca delle domande delle creator
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog
|
||||||
|
|
||||||
|
Bunny Agency Italia — La biblioteca delle domande delle creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Risposte dirette e pratiche alle domande più frequenti delle creator: lancio, contenuti, prezzi, promozione, privacy, tasse, cura degli abbonati e scelta dell'agenzia.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
## Domande sull'agenzia per creator, risposte chiare
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/faq
|
||||||
|
|
||||||
|
Bunny Agency Italia — Domande sull'agenzia per creator, risposte chiare, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Parti dalla risposta breve, poi usa le checklist e le fonti ufficiali per capire cosa vale per il tuo account e per il mercato italiano.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
### Quali sono i contenuti migliori per OnlyFans?
|
||||||
|
|
||||||
|
Il mix migliore è specifico per pubblico e offerta. Testa 2-3 temi chiari alla volta, misura conversione e retention — non solo i like — e mantieni i formati che puoi produrre in modo sicuro e costante.
|
||||||
|
|
||||||
|
### Prezzo abbonamento OnlyFans: come deciderlo?
|
||||||
|
|
||||||
|
Il prezzo deve riflettere posizionamento, promessa di pubblicazione, disponibilità del pubblico, sconti promozionali, strategia dei messaggi a pagamento e retention. Testa 1 variabile alla volta e valuta il valore totale per abbonato, non solo le iscrizioni.
|
||||||
|
|
||||||
|
### Come funzionano commissioni e pagamenti OnlyFans?
|
||||||
|
|
||||||
|
Controlla i termini attuali della piattaforma e la tua dashboard dei compensi prima di citare qualsiasi percentuale: la piattaforma trattiene il 20% e paga circa dopo 7 giorni. Tieni separati ricavo lordo, trattenute, rimborsi, cambio valuta, tasse e costi.
|
||||||
|
|
||||||
|
### OnlyFans e tasse in Italia: cosa devi sapere?
|
||||||
|
|
||||||
|
In Italia i ricavi da creator sono redditi imponibili: con attività abituale serve la partita IVA, spesso in regime forfettario con imposta al 15% (5% per le nuove attività) fino a 85.000 euro di ricavi, più i contributi INPS. Conserva i registri dal primo giorno e conferma tutto con un commercialista.
|
||||||
|
|
||||||
|
### Si può restare anonima su OnlyFans?
|
||||||
|
|
||||||
|
L'anonimato pubblico si può rafforzare, mai garantire al 100%. Separa le identità, elimina i riferimenti al luogo, pulisci i metadati, controlla gli sfondi, usa un'autenticazione forte e ricorda che la piattaforma richiede comunque la verifica dell'identità con documento.
|
||||||
|
|
||||||
|
### Come proteggere la tua identità da creator?
|
||||||
|
|
||||||
|
Usa email e numero dedicati, un password manager, autenticazione a 2 fattori, accessi basati sui ruoli, rimozione dei metadati, revisione della geolocalizzazione, condivisione controllata dei file e un piano scritto di risposta agli incidenti.
|
||||||
|
|
||||||
|
### Come promuovere OnlyFans senza spam?
|
||||||
|
|
||||||
|
Costruisci contenuti nativi, educativi o di personalità, rispetta le regole di ogni social, usa call to action misurate e traccia le visite qualificate. La ripetizione senza valore per il pubblico aumenta il rischio di ban e danneggia il brand in poche settimane, spesso 2-4.
|
||||||
|
|
||||||
|
## Costi e perimetro di un'agenzia per creator
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/pricing
|
||||||
|
|
||||||
|
Bunny Agency Italia — Costi e perimetro di un'agenzia per creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste una percentuale universale responsabile. Confronta perimetro, accessi, durata, proprietà dei dati, diritto di uscita e risultati misurabili prima di confrontare il prezzo.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
## Contatta Bunny Agency Italia
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/contact
|
||||||
|
|
||||||
|
Bunny Agency Italia — Contatta Bunny Agency Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa il modulo tracciato per una richiesta riservata. Registra la pagina e il tema che hanno generato la tua domanda, così risponde il team giusto.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
## gestione account OnlyFans
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services/account-management
|
||||||
|
|
||||||
|
Bunny Agency Italia — gestione account OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un piano operativo strutturato allinea pubblicazioni, analytics, test sui prezzi, cura degli abbonati e decisioni settimanali, senza togliere alla creator il controllo del proprio account.
|
||||||
|
|
||||||
|
### Cosa comprende esattamente la gestione dell'account?
|
||||||
|
|
||||||
|
Un piano operativo strutturato allinea pubblicazioni, analytics, test sui prezzi, cura degli abbonati e decisioni settimanali, senza togliere alla creator il controllo del proprio account. Bunny Agency LLC: 2019.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Chi mantiene il controllo dell'account?
|
||||||
|
|
||||||
|
Sempre la creator: account, ricavi e identità restano tuoi al 100%. Gli accessi che concedi sono limitati al necessario, registrati per iscritto e revocabili in qualsiasi momento, con verifica della revoca ogni 3 mesi.
|
||||||
|
|
||||||
|
## strategia di marketing OnlyFans
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services/marketing
|
||||||
|
|
||||||
|
Bunny Agency Italia — strategia di marketing OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un piano di marketing solido rispetta le regole delle piattaforme e unisce intenzione del pubblico, capacità produttiva, attribuzione ed esperimenti ripetibili, invece di puntare su spam o su un singolo post virale.
|
||||||
|
|
||||||
|
### Cosa comprende la strategia di marketing?
|
||||||
|
|
||||||
|
Un piano di marketing solido rispetta le regole delle piattaforme e unisce intenzione del pubblico, capacità produttiva, attribuzione ed esperimenti ripetibili, invece di puntare su spam o su un singolo post virale. Bunny Agency LLC: 2019.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Su quali piattaforme promuovete i profili?
|
||||||
|
|
||||||
|
Scegliamo 1 canale di scoperta principale tra Instagram, TikTok, X e Reddit in base a formato, nicchia e tolleranza al rischio, più 1 canale di proprietà come Telegram o email. Meglio 1 canale con 90 giorni di costanza che 4 canali a singhiozzo.
|
||||||
|
|
||||||
|
## gestione chat OnlyFans
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services/chat-management
|
||||||
|
|
||||||
|
Bunny Agency Italia — gestione chat OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Una chat gestita in modo responsabile usa linee guida di tono approvate, regole di escalation, limiti di orario, controllo qualità e accessi trasparenti e revocabili.
|
||||||
|
|
||||||
|
### Come funziona la gestione della chat?
|
||||||
|
|
||||||
|
Una chat gestita in modo responsabile usa linee guida di tono approvate, regole di escalation, limiti di orario, controllo qualità e accessi trasparenti e revocabili. Bunny Agency LLC: 2019.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Gli abbonati capiscono che non risponde sempre la creator?
|
||||||
|
|
||||||
|
Le nostre linee guida vietano affermazioni ingannevoli su identità e incontri: la conversazione resta nel perimetro della voce approvata, senza promesse impossibili. La supervisione settimanale con campione delle chat — 30 minuti del tuo tempo — verifica che il vincolo sia rispettato.
|
||||||
|
|
||||||
|
## strategia dei contenuti OnlyFans
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services/content-strategy
|
||||||
|
|
||||||
|
Bunny Agency Italia — strategia dei contenuti OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un sistema di contenuti trasforma il posizionamento in temi ripetibili, shot list, cadenza di pubblicazione, regole di riutilizzo e un ciclo di revisione basato sui dati.
|
||||||
|
|
||||||
|
### Cosa comprende la strategia dei contenuti?
|
||||||
|
|
||||||
|
Un sistema di contenuti trasforma il posizionamento in temi ripetibili, shot list, cadenza di pubblicazione, regole di riutilizzo e un ciclo di revisione basato sui dati. Bunny Agency LLC: 2019.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quanto tempo di produzione mi viene richiesto?
|
||||||
|
|
||||||
|
Con la produzione a blocchi, 1 sessione pianificata di mezza giornata copre in genere 7-10 uscite tra feed, anteprime e offerte. La maggior parte delle creator lavora con 2 sessioni al mese più la revisione mensile di 1 ora.
|
||||||
|
|
||||||
|
## privacy e tutela DMCA per creator
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/services/privacy-dmca
|
||||||
|
|
||||||
|
Bunny Agency Italia — privacy e tutela DMCA per creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La protezione della privacy inizia prima della pubblicazione: separazione delle identità, pulizia dei metadati, controllo degli accessi, raccolta delle prove e una procedura documentata di risposta ai leak.
|
||||||
|
|
||||||
|
### Cosa comprende il supporto su privacy e DMCA?
|
||||||
|
|
||||||
|
La protezione della privacy inizia prima della pubblicazione: separazione delle identità, pulizia dei metadati, controllo degli accessi, raccolta delle prove e una procedura documentata di risposta ai leak. Bunny Agency LLC: 2019.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Potete garantire che nessuno scoprirà la mia identità?
|
||||||
|
|
||||||
|
No, e chi lo garantisce mente: la verifica d'identità della piattaforma è obbligatoria e il rischio residuo esiste sempre. Possiamo ridurlo drasticamente — geoblocking, no-face, metadati puliti, watermark — e prepararti una risposta da 48 ore se qualcosa esce.
|
||||||
|
|
||||||
|
## Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-start-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — come aprire OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Come aprire OnlyFans in modo responsabile?
|
||||||
|
|
||||||
|
Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Quanti contenuti servono prima di aprire il profilo?
|
||||||
|
|
||||||
|
Una riserva di 2-4 settimane di contenuti già pronti, cioè circa 10-15 pubblicazioni. Aprire senza riserva porta quasi sempre a un blocco entro il primo mese, proprio quando la costanza conta di più.
|
||||||
|
|
||||||
|
## Come iniziare a guadagnare su OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-start-making-money-on-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — come iniziare a guadagnare su OnlyFans. Fondata nel 2019, Bunny scompone il tema in passi concreti: requisiti 18+, profilo e prezzo, meccanica dei ricavi (abbonamenti, PPV, mance), promozione conforme e gestione dell'80% che resta dopo la commissione del 20%; i risultati variano.
|
||||||
|
|
||||||
|
### Quanto si guadagna all'inizio su OnlyFans?
|
||||||
|
|
||||||
|
Le guide italiane collocano un inizio realistico tra 100 e 500 euro al mese nei primi 1-3 mesi di lavoro costante, con crescita possibile verso 500-3.000 euro dopo 3-6 mesi di metodo. Sono intervalli osservati, non garanzie: i risultati dipendono da nicchia, promozione e costanza.
|
||||||
|
|
||||||
|
### Quanto trattiene OnlyFans dai guadagni?
|
||||||
|
|
||||||
|
La piattaforma trattiene il 20% di ogni transazione: abbonamenti, messaggi PPV, mance e contenuti su richiesta. L'80% resta alla creator e il pagamento arriva di norma dopo circa 7 giorni; verifica sempre termini e tempi aggiornati nella tua dashboard.
|
||||||
|
|
||||||
|
### Serve la partita IVA per OnlyFans in Italia?
|
||||||
|
|
||||||
|
Se l'attività è continuativa sì: quasi sempre serve la partita IVA, dal 2025 con il codice ATECO 73.11.03. Nel forfettario l'imposta è del 15% (5% per i primi 5 anni) fino a 85.000 euro di ricavi, più INPS Gestione Separata al 26,07%. Conferma la tua situazione con un commercialista.
|
||||||
|
|
||||||
|
### Posso iniziare a guadagnare senza mostrare il viso?
|
||||||
|
|
||||||
|
Sì, molte creator lavorano senza volto usando geoblocking dell'Italia, inquadrature studiate, watermark e pulizia dei metadati. L'anonimato al 100% però non esiste: la piattaforma richiede comunque la verifica dell'identità con documento e i leak restano un rischio da gestire con procedure DMCA.
|
||||||
|
|
||||||
|
### Quanto tempo serve per i primi risultati veri?
|
||||||
|
|
||||||
|
Valuta la strategia su almeno 2-3 cicli completi di test da 30 giorni prima di giudicarla. Bunny Agency, attiva dal 2019, misura traffico, conversione, ricavo netto e retention su periodi di 7-30 giorni: un singolo screenshot non è un trend.
|
||||||
|
|
||||||
|
## Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-much-can-creators-earn
|
||||||
|
|
||||||
|
Bunny Agency Italia — quanto si guadagna su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quanto si guadagna su OnlyFans davvero?
|
||||||
|
|
||||||
|
Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Qual è un guadagno realistico per una creator italiana media?
|
||||||
|
|
||||||
|
La media italiana osservata è di 150-180 euro al mese e solo il 10% circa supera i 1.000 euro mensili. Con un sistema di promozione, prezzi e chat gestiti con metodo l'obiettivo realistico dei primi 6 mesi è spostarsi sopra quella mediana, non copiare il top 0,1%.
|
||||||
|
|
||||||
|
## Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-often-should-creators-post
|
||||||
|
|
||||||
|
Bunny Agency Italia — quanto spesso pubblicare su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
### Quanto spesso pubblicare su OnlyFans?
|
||||||
|
|
||||||
|
Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Meglio pubblicare ogni giorno o 3 volte a settimana?
|
||||||
|
|
||||||
|
Meglio la frequenza che regge per 6 mesi: per quasi tutte è 3-4 post a settimana con una riserva di 2-4 settimane. Pubblicare ogni giorno funziona solo se la qualità non scende e se non ti brucia: la costanza batte l'intensità.
|
||||||
|
|
||||||
|
## Quali sono i contenuti migliori per OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/what-content-performs-best
|
||||||
|
|
||||||
|
Bunny Agency Italia — contenuti migliori per OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il mix migliore è specifico per pubblico e offerta. Testa 2-3 temi chiari alla volta, misura conversione e retention — non solo i like — e mantieni i formati che puoi produrre in modo sicuro e costante.
|
||||||
|
|
||||||
|
### Quali sono i contenuti migliori per OnlyFans?
|
||||||
|
|
||||||
|
Il mix migliore è specifico per pubblico e offerta. Testa 2-3 temi chiari alla volta, misura conversione e retention — non solo i like — e mantieni i formati che puoi produrre in modo sicuro e costante.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Posso capire cosa funziona senza migliaia di abbonati?
|
||||||
|
|
||||||
|
Sì: bastano cicli di test da 30 giorni e un registro di 3 dati per contenuto — vendite, conversione, disdette. Anche con 50-100 abbonati i pattern emergono dopo 2-3 cicli, molto prima di quanto si pensi.
|
||||||
|
|
||||||
|
## Prezzo abbonamento OnlyFans: come deciderlo?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-price-a-subscription
|
||||||
|
|
||||||
|
Bunny Agency Italia — prezzo abbonamento OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il prezzo deve riflettere posizionamento, promessa di pubblicazione, disponibilità del pubblico, sconti promozionali, strategia dei messaggi a pagamento e retention. Testa 1 variabile alla volta e valuta il valore totale per abbonato, non solo le iscrizioni.
|
||||||
|
|
||||||
|
### Prezzo abbonamento OnlyFans: come deciderlo?
|
||||||
|
|
||||||
|
Il prezzo deve riflettere posizionamento, promessa di pubblicazione, disponibilità del pubblico, sconti promozionali, strategia dei messaggi a pagamento e retention. Testa 1 variabile alla volta e valuta il valore totale per abbonato, non solo le iscrizioni.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Qual è un buon prezzo di partenza per iniziare?
|
||||||
|
|
||||||
|
Per un profilo a pagamento la fascia d'ingresso più testata è 4,99-9,99 dollari: abbastanza bassa per convertire, abbastanza alta da selezionare. Dopo 30 giorni di dati si corregge: si testa 1 variabile alla volta e si guarda il valore totale per abbonato, non solo le iscrizioni.
|
||||||
|
|
||||||
|
## Come funzionano commissioni e pagamenti OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/platform-fees-and-payouts
|
||||||
|
|
||||||
|
Bunny Agency Italia — commissioni e pagamenti OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Controlla i termini attuali della piattaforma e la tua dashboard dei compensi prima di citare qualsiasi percentuale: la piattaforma trattiene il 20% e paga circa dopo 7 giorni. Tieni separati ricavo lordo, trattenute, rimborsi, cambio valuta, tasse e costi.
|
||||||
|
|
||||||
|
### Come funzionano commissioni e pagamenti OnlyFans?
|
||||||
|
|
||||||
|
Controlla i termini attuali della piattaforma e la tua dashboard dei compensi prima di citare qualsiasi percentuale: la piattaforma trattiene il 20% e paga circa dopo 7 giorni. Tieni separati ricavo lordo, trattenute, rimborsi, cambio valuta, tasse e costi.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Ogni quanto posso prelevare e con quali tempi?
|
||||||
|
|
||||||
|
I compensi diventano prelevabili di norma dopo circa 7 giorni dalla transazione, con soglia minima da 20 dollari; il bonifico impiega poi 3-5 giorni lavorativi a seconda del metodo. Verifica sempre i termini aggiornati nella dashboard, perché tempi e soglie possono cambiare.
|
||||||
|
|
||||||
|
## OnlyFans e tasse in Italia: cosa devi sapere?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/creator-taxes-guide
|
||||||
|
|
||||||
|
Bunny Agency Italia — OnlyFans e tasse in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. In Italia i ricavi da creator sono redditi imponibili: con attività abituale serve la partita IVA, spesso in regime forfettario con imposta al 15% (5% per le nuove attività) fino a 85.000 euro di ricavi, più i contributi INPS. Conserva i registri dal primo giorno e conferma tutto con un commercialista.
|
||||||
|
|
||||||
|
### OnlyFans e tasse in Italia: cosa devi sapere?
|
||||||
|
|
||||||
|
In Italia i ricavi da creator sono redditi imponibili: con attività abituale serve la partita IVA, spesso in regime forfettario con imposta al 15% (5% per le nuove attività) fino a 85.000 euro di ricavi, più i contributi INPS. Conserva i registri dal primo giorno e conferma tutto con un commercialista.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Cosa succede se ho già guadagnato senza partita IVA?
|
||||||
|
|
||||||
|
Con le regole DAC7 la piattaforma comunica i compensi al Fisco e gli accertamenti su creator sono già cronaca in Italia, con casi da 250.000 e 700.000 euro non dichiarati. La strada corretta è la regolarizzazione con un commercialista, che valuta ravvedimento operoso e sanzioni ridotte.
|
||||||
|
|
||||||
|
## Si può restare anonima su OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/can-creators-stay-anonymous
|
||||||
|
|
||||||
|
Bunny Agency Italia — restare anonima su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. L'anonimato pubblico si può rafforzare, mai garantire al 100%. Separa le identità, elimina i riferimenti al luogo, pulisci i metadati, controlla gli sfondi, usa un'autenticazione forte e ricorda che la piattaforma richiede comunque la verifica dell'identità con documento.
|
||||||
|
|
||||||
|
### Si può restare anonima su OnlyFans?
|
||||||
|
|
||||||
|
L'anonimato pubblico si può rafforzare, mai garantire al 100%. Separa le identità, elimina i riferimenti al luogo, pulisci i metadati, controlla gli sfondi, usa un'autenticazione forte e ricorda che la piattaforma richiede comunque la verifica dell'identità con documento.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Il geoblocking dell'Italia riduce molto i guadagni?
|
||||||
|
|
||||||
|
No: il pubblico italiano pesa circa il 2,1% della piattaforma, mentre la spesa più alta arriva da Stati Uniti e Regno Unito. Per la maggior parte delle creator escludere l'Italia costa pochi punti percentuali di ricavo e compra una protezione enorme.
|
||||||
|
|
||||||
|
## Come proteggere la tua identità da creator?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-protect-your-identity
|
||||||
|
|
||||||
|
Bunny Agency Italia — proteggere la tua identità, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa email e numero dedicati, un password manager, autenticazione a 2 fattori, accessi basati sui ruoli, rimozione dei metadati, revisione della geolocalizzazione, condivisione controllata dei file e un piano scritto di risposta agli incidenti.
|
||||||
|
|
||||||
|
### Come proteggere la tua identità da creator?
|
||||||
|
|
||||||
|
Usa email e numero dedicati, un password manager, autenticazione a 2 fattori, accessi basati sui ruoli, rimozione dei metadati, revisione della geolocalizzazione, condivisione controllata dei file e un piano scritto di risposta agli incidenti.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Cosa devo fare subito se i miei contenuti vengono ricondivisi?
|
||||||
|
|
||||||
|
Conserva le prove con data e URL, invia la segnalazione alla piattaforma che li ospita e una notifica DMCA al gestore, poi chiedi la rimozione dall'indice di Google. Le prime 48 ore contano: prima si agisce, meno copie si moltiplicano.
|
||||||
|
|
||||||
|
## Come promuovere OnlyFans senza spam?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-promote-without-spam
|
||||||
|
|
||||||
|
Bunny Agency Italia — promuovere OnlyFans senza spam, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Costruisci contenuti nativi, educativi o di personalità, rispetta le regole di ogni social, usa call to action misurate e traccia le visite qualificate. La ripetizione senza valore per il pubblico aumenta il rischio di ban e danneggia il brand in poche settimane, spesso 2-4.
|
||||||
|
|
||||||
|
### Come promuovere OnlyFans senza spam?
|
||||||
|
|
||||||
|
Costruisci contenuti nativi, educativi o di personalità, rispetta le regole di ogni social, usa call to action misurate e traccia le visite qualificate. La ripetizione senza valore per il pubblico aumenta il rischio di ban e danneggia il brand in poche settimane, spesso 2-4.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quanto tempo alla settimana serve per la promozione?
|
||||||
|
|
||||||
|
Con 1 canale di scoperta ben scelto bastano 5-7 contenuti nativi a settimana, producibili in 1 sessione a blocchi di 2-3 ore. Meglio 1 canale curato con costanza per 90 giorni che 4 canali alimentati a singhiozzo.
|
||||||
|
|
||||||
|
## Quali sono i migliori social per promuovere OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/best-social-platforms-for-creators
|
||||||
|
|
||||||
|
Bunny Agency Italia — migliori social per promuovere OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Scegli i canali dove il tuo pubblico già passa il tempo e dove il tuo formato rispetta le regole. Un canale di scoperta ben gestito più 1 canale proprietario di retention vale più di una presenza debole su 5 piattaforme.
|
||||||
|
|
||||||
|
### Quali sono i migliori social per promuovere OnlyFans?
|
||||||
|
|
||||||
|
Scegli i canali dove il tuo pubblico già passa il tempo e dove il tuo formato rispetta le regole. Un canale di scoperta ben gestito più 1 canale proprietario di retention vale più di una presenza debole su 5 piattaforme.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Su quanti social devo essere presente contemporaneamente?
|
||||||
|
|
||||||
|
All'inizio su 1 solo canale di scoperta, curato ogni giorno per almeno 90 giorni, più 1 canale di proprietà come email o Telegram. Aggiungere il secondo social ha senso solo quando il primo produce visite e abbonati misurabili.
|
||||||
|
|
||||||
|
## Come fidelizzare gli abbonati OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-retain-subscribers
|
||||||
|
|
||||||
|
Bunny Agency Italia — fidelizzare gli abbonati OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La retention migliora quando la promessa pubblica corrisponde a ciò che consegni, l'onboarding è chiaro, la cadenza è affidabile, i messaggi sono pertinenti e il feedback guida il ciclo successivo. Analizza le coorti su 30-90 giorni, non un solo tasso medio di rinnovo.
|
||||||
|
|
||||||
|
### Come fidelizzare gli abbonati OnlyFans?
|
||||||
|
|
||||||
|
La retention migliora quando la promessa pubblica corrisponde a ciò che consegni, l'onboarding è chiaro, la cadenza è affidabile, i messaggi sono pertinenti e il feedback guida il ciclo successivo. Analizza le coorti su 30-90 giorni, non un solo tasso medio di rinnovo.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Qual è un buon tasso di rinnovo mensile?
|
||||||
|
|
||||||
|
Sopra il 60% è una base solida, tra il 40% e il 60% c'è margine di lavoro, sotto il 40% va cercata una causa strutturale. Il dato va letto per coorte su 30-90 giorni, non come media unica di tutto il profilo.
|
||||||
|
|
||||||
|
## Come scrivere un messaggio di benvenuto efficace?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-write-welcome-messages
|
||||||
|
|
||||||
|
Bunny Agency Italia — messaggio di benvenuto, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un buon messaggio di benvenuto definisce il tono, spiega cosa riceve l'abbonato, propone 1 azione successiva semplice e rispetta consenso e limiti di comunicazione. Deve suonare come la voce approvata della creator, non come un template.
|
||||||
|
|
||||||
|
### Come scrivere un messaggio di benvenuto efficace?
|
||||||
|
|
||||||
|
Un buon messaggio di benvenuto definisce il tono, spiega cosa riceve l'abbonato, propone 1 azione successiva semplice e rispetta consenso e limiti di comunicazione. Deve suonare come la voce approvata della creator, non come un template.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Il messaggio di benvenuto deve già vendere qualcosa?
|
||||||
|
|
||||||
|
No: nei primi scambi l'obiettivo è una risposta, non una vendita. I dati delle chat gestite mostrano che chi risponde al benvenuto compra molto più spesso nei 30 giorni successivi: la domanda semplice vale più di un'offerta immediata.
|
||||||
|
|
||||||
|
## Quando usare i messaggi PPV su OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/when-to-use-ppv-messages
|
||||||
|
|
||||||
|
Bunny Agency Italia — messaggi PPV su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa i messaggi a pagamento quando l'offerta è distinta, descritta con precisione, programmata con criterio e coerente con le aspettative. Misura tasso di acquisto, rimborsi, reclami e retention su 30 giorni, non solo il ricavo immediato.
|
||||||
|
|
||||||
|
### Quando usare i messaggi PPV su OnlyFans?
|
||||||
|
|
||||||
|
Usa i messaggi a pagamento quando l'offerta è distinta, descritta con precisione, programmata con criterio e coerente con le aspettative. Misura tasso di acquisto, rimborsi, reclami e retention su 30 giorni, non solo il ricavo immediato.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quanto dovrebbe costare un messaggio PPV?
|
||||||
|
|
||||||
|
La fascia più testata per contenuti costruiti è 2-5 volte il prezzo dell'abbonamento mensile. Sotto, svaluti il feed; sopra, servono contenuti davvero distintivi. Il prezzo giusto si trova con 8-10 invii misurati, non con i listini di altre creator.
|
||||||
|
|
||||||
|
## Come gestire la chat con i fan?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-manage-creator-chat
|
||||||
|
|
||||||
|
Bunny Agency Italia — gestire la chat, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Definisci per iscritto voce, permessi, affermazioni vietate, limiti di consenso, escalation, passaggi di consegne, orari e controlli di qualità prima che qualcuno scriva. La creator deve sapere chi ha accesso e mantenere la supervisione, con verifiche almeno 1 volta a settimana.
|
||||||
|
|
||||||
|
### Come gestire la chat con i fan?
|
||||||
|
|
||||||
|
Definisci per iscritto voce, permessi, affermazioni vietate, limiti di consenso, escalation, passaggi di consegne, orari e controlli di qualità prima che qualcuno scriva. La creator deve sapere chi ha accesso e mantenere la supervisione, con verifiche almeno 1 volta a settimana.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quante ore al giorno richiede una chat ben gestita?
|
||||||
|
|
||||||
|
Da sola, una chat attiva assorbe 6-8 ore al giorno nei profili in crescita. Con regole scritte, fasce orarie e un team supervisionato si scende a 30-60 minuti di controllo quotidiano della creator, con campionamento settimanale delle conversazioni.
|
||||||
|
|
||||||
|
## Come prevenire i leak e usare il DMCA?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-prevent-leaks-and-use-dmca
|
||||||
|
|
||||||
|
Bunny Agency Italia — prevenire i leak e usare il DMCA, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Nessun sistema previene il 100% dei leak. Riduci l'esposizione con controllo degli accessi e watermark, conserva le prove, verifica la titolarità, usa le segnalazioni della piattaforma e invia notifiche DMCA accurate tramite i canali autorizzati quando trovi una violazione.
|
||||||
|
|
||||||
|
### Come prevenire i leak e usare il DMCA?
|
||||||
|
|
||||||
|
Nessun sistema previene il 100% dei leak. Riduci l'esposizione con controllo degli accessi e watermark, conserva le prove, verifica la titolarità, usa le segnalazioni della piattaforma e invia notifiche DMCA accurate tramite i canali autorizzati quando trovi una violazione.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### I watermark rovinano i contenuti?
|
||||||
|
|
||||||
|
Un watermark discreto — nome del profilo in semitrasparenza, più un identificativo dell'abbonato dove possibile — non riduce le vendite in modo misurabile, ma scoraggia la ricondivisione e rende tracciabile la fonte di un leak. Il costo è 0: si applica in fase di esportazione.
|
||||||
|
|
||||||
|
## Agenzia OnlyFans o gestione autonoma?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/agency-vs-self-management
|
||||||
|
|
||||||
|
Bunny Agency Italia — agenzia OnlyFans o gestione autonoma, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La scelta giusta dipende da competenze mancanti, tempo, rischio, controllo ed economia reale. Confronta un flusso di lavoro fai-da-te documentato con le responsabilità e gli accessi esatti che l'agenzia propone, su un periodo di prova di 30-90 giorni.
|
||||||
|
|
||||||
|
### Agenzia OnlyFans o gestione autonoma?
|
||||||
|
|
||||||
|
La scelta giusta dipende da competenze mancanti, tempo, rischio, controllo ed economia reale. Confronta un flusso di lavoro fai-da-te documentato con le responsabilità e gli accessi esatti che l'agenzia propone, su un periodo di prova di 30-90 giorni.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Posso passare all'autogestione dopo aver lavorato con un'agenzia?
|
||||||
|
|
||||||
|
Sì, se il contratto è fatto bene: clausola di uscita con preavviso di 30 giorni, riconsegna di account e materiali, nessun vincolo sui contenuti futuri. È uno dei 4 punti da verificare per iscritto prima della firma.
|
||||||
|
|
||||||
|
## Quanto costa un'agenzia OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-much-does-an-agency-cost
|
||||||
|
|
||||||
|
Bunny Agency Italia — quanto costa un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Confronta il perimetro totale, non la percentuale in copertina: le commissioni di mercato vanno di solito dal 20% al 50%. Chiedi quale base di ricavo viene usata, quali costi sono extra, chi paga i contenuti, cosa succede con i rimborsi e in quanti giorni puoi uscire.
|
||||||
|
|
||||||
|
### Quanto costa un'agenzia OnlyFans?
|
||||||
|
|
||||||
|
Confronta il perimetro totale, non la percentuale in copertina: le commissioni di mercato vanno di solito dal 20% al 50%. Chiedi quale base di ricavo viene usata, quali costi sono extra, chi paga i contenuti, cosa succede con i rimborsi e in quanti giorni puoi uscire.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Le agenzie chiedono soldi in anticipo?
|
||||||
|
|
||||||
|
Le agenzie serie lavorano a percentuale sul risultato: 0 costi di ingresso. Richieste di quote di iscrizione, corsi obbligatori o budget anticipati sono tra i segnali più comuni delle truffe documentate in Italia.
|
||||||
|
|
||||||
|
## Come scegliere un'agenzia OnlyFans seria?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-choose-a-creator-agency
|
||||||
|
|
||||||
|
Bunny Agency Italia — scegliere un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Verifica identità legale, referenze, sicurezza, contratto, modello di accesso, report, promesse e diritto di uscita. Un'agenzia credibile spiega i compromessi, rifiuta di garantire un reddito e accetta che 1 legale di tua fiducia riveda l'accordo prima della firma.
|
||||||
|
|
||||||
|
### Come scegliere un'agenzia OnlyFans seria?
|
||||||
|
|
||||||
|
Verifica identità legale, referenze, sicurezza, contratto, modello di accesso, report, promesse e diritto di uscita. Un'agenzia credibile spiega i compromessi, rifiuta di garantire un reddito e accetta che 1 legale di tua fiducia riveda l'accordo prima della firma.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Come misurate i progressi?
|
||||||
|
|
||||||
|
Confrontiamo almeno 4 indicatori: traffico, conversione, ricavo netto e retention su un periodo di 7-30 giorni. Bunny Agency spiega ogni test e il suo limite; un caso studio non è una garanzia per un'altra creator.
|
||||||
|
|
||||||
|
### Cosa deve essere scritto prima della firma?
|
||||||
|
|
||||||
|
Il documento deve indicare percentuale, base di calcolo, accessi, proprietà dei dati, frequenza dei report e uscita. La creator mantiene account e ricavi, e ogni affermazione fiscale si verifica con l'Agenzia delle Entrate o 1 commercialista.
|
||||||
|
|
||||||
|
### Quali sono i segnali di un'agenzia truffa?
|
||||||
|
|
||||||
|
I 4 segnali ricorrenti: promesse di guadagno garantito tipo 10.000 euro al mese, richiesta delle credenziali in chat, pagamenti anticipati per iscrizione o corsi, e assenza di contratto scritto con clausola di uscita. Ne basta 1 per fermarsi.
|
||||||
|
|
||||||
|
## Cosa deve includere il contratto con un'agenzia OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/what-should-an-agency-contract-include
|
||||||
|
|
||||||
|
Bunny Agency Italia — contratto con un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il contratto deve definire parti, perimetro, poteri, credenziali, dati, base di calcolo del compenso, spese, proprietà intellettuale, riservatezza, conformità, durata, recesso, riconsegna, controversie e cosa succede ad account e contenuti dopo l'uscita, punto per punto in 1 documento.
|
||||||
|
|
||||||
|
### Cosa deve includere il contratto con un'agenzia OnlyFans?
|
||||||
|
|
||||||
|
Il contratto deve definire parti, perimetro, poteri, credenziali, dati, base di calcolo del compenso, spese, proprietà intellettuale, riservatezza, conformità, durata, recesso, riconsegna, controversie e cosa succede ad account e contenuti dopo l'uscita, punto per punto in 1 documento.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quanto deve durare un primo contratto con un'agenzia?
|
||||||
|
|
||||||
|
Il formato più sano è un periodo di prova di 30-90 giorni con obiettivi scritti, seguito da rinnovi brevi. Diffida dei vincoli iniziali superiori ai 12 mesi e dei rinnovi automatici pluriennali: la qualità del servizio si dimostra nei primi 90 giorni.
|
||||||
|
|
||||||
|
## Come costruire un calendario dei contenuti?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-build-a-content-calendar
|
||||||
|
|
||||||
|
Bunny Agency Italia — calendario dei contenuti, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Pianifica intorno a temi ripetibili, promesse al pubblico, capacità produttiva, date di campagna, diritti di riutilizzo e tempi di recupero. Mantieni una riserva di 2-4 settimane e rivedi i risultati ogni 7 giorni, così il calendario resta uno strumento decisionale.
|
||||||
|
|
||||||
|
### Come costruire un calendario dei contenuti?
|
||||||
|
|
||||||
|
Pianifica intorno a temi ripetibili, promesse al pubblico, capacità produttiva, date di campagna, diritti di riutilizzo e tempi di recupero. Mantieni una riserva di 2-4 settimane e rivedi i risultati ogni 7 giorni, così il calendario resta uno strumento decisionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Con quanto anticipo devo pianificare i contenuti?
|
||||||
|
|
||||||
|
La pianificazione operativa copre 2-4 settimane — la tua riserva — mentre i temi e le campagne si abbozzano a 90 giorni. Oltre, il piano diventa finzione: il calendario vive della revisione settimanale di 30 minuti sui dati reali.
|
||||||
|
|
||||||
|
## Come fare l'audit di un account creator?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-audit-a-creator-account
|
||||||
|
|
||||||
|
Bunny Agency Italia — audit di un account creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Analizza il percorso completo: scoperta, conversione del profilo, onboarding, consegna dei contenuti, messaggi, offerte a pagamento, retention, sicurezza, costi e report. Stabilisci una baseline di 7-30 giorni prima di raccomandare qualsiasi cambiamento.
|
||||||
|
|
||||||
|
### Come fare l'audit di un account creator?
|
||||||
|
|
||||||
|
Analizza il percorso completo: scoperta, conversione del profilo, onboarding, consegna dei contenuti, messaggi, offerte a pagamento, retention, sicurezza, costi e report. Stabilisci una baseline di 7-30 giorni prima di raccomandare qualsiasi cambiamento.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Ogni quanto va ripetuto l'audit completo?
|
||||||
|
|
||||||
|
L'audit completo ha senso ogni 90 giorni o dopo un cambiamento strutturale — nicchia, prezzi, team. Nel mezzo bastano la revisione settimanale di 30 minuti e il confronto mensile con la baseline: 4 numeri seguiti con costanza valgono più di un audit annuale monumentale.
|
||||||
|
|
||||||
|
## Come evitare il burnout da creator?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-to-avoid-creator-burnout
|
||||||
|
|
||||||
|
Bunny Agency Italia — evitare il burnout da creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Fissa limiti su contenuti e comunicazione, lavora a blocchi, proteggi almeno 1 giorno libero a settimana, riduci il controllo compulsivo della dashboard, documenta le escalation e costruisci una promessa sostenibile. Una crescita che dipende dal superlavoro permanente non è una strategia.
|
||||||
|
|
||||||
|
### Come evitare il burnout da creator?
|
||||||
|
|
||||||
|
Fissa limiti su contenuti e comunicazione, lavora a blocchi, proteggi almeno 1 giorno libero a settimana, riduci il controllo compulsivo della dashboard, documenta le escalation e costruisci una promessa sostenibile. Una crescita che dipende dal superlavoro permanente non è una strategia.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Come riconosco i primi segnali di burnout?
|
||||||
|
|
||||||
|
I 3 segnali precoci: la riserva di contenuti scende sotto 1 settimana, la chat resta indietro di giorni, e il controllo della dashboard supera le 5-6 volte al giorno senza decisioni collegate. Quando ne vedi 2 su 3, è il momento di togliere carico, non di aggiungere disciplina.
|
||||||
|
|
||||||
|
## Cosa serve per candidarsi a un'agenzia?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/what-is-needed-to-apply-to-an-agency
|
||||||
|
|
||||||
|
Bunny Agency Italia — candidarsi a un'agenzia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Prepara idoneità di età e identità (18+), mercato e lingua, link agli account, flusso di lavoro attuale, obiettivi, limiti, disponibilità e dati di performance onesti. Non inviare mai password o documenti sensibili attraverso un canale non verificato.
|
||||||
|
|
||||||
|
### Cosa serve per candidarsi a un'agenzia?
|
||||||
|
|
||||||
|
Prepara idoneità di età e identità (18+), mercato e lingua, link agli account, flusso di lavoro attuale, obiettivi, limiti, disponibilità e dati di performance onesti. Non inviare mai password o documenti sensibili attraverso un canale non verificato.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Serve già avere un profilo avviato per candidarsi?
|
||||||
|
|
||||||
|
No: valutiamo anche chi parte da 0, ma con aspettative diverse — i primi 90 giorni sono di costruzione, non di raccolta. Ciò che serve sempre: 18+, documento valido, obiettivi chiari e limiti definiti per iscritto.
|
||||||
|
|
||||||
|
## Quanto tempo serve per crescere su OnlyFans?
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/questions/how-long-does-sustainable-growth-take
|
||||||
|
|
||||||
|
Bunny Agency Italia — quanto tempo serve per crescere su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste una tempistica fissa. Valuta se traffico qualificato, conversione, affidabilità di pubblicazione, valore per abbonato e retention migliorano su almeno 2-3 cicli di test completi prima di giudicare una strategia.
|
||||||
|
|
||||||
|
### Quanto tempo serve per crescere su OnlyFans?
|
||||||
|
|
||||||
|
Non esiste una tempistica fissa. Valuta se traffico qualificato, conversione, affidabilità di pubblicazione, valore per abbonato e retention migliorano su almeno 2-3 cicli di test completi prima di giudicare una strategia.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Dopo quanti mesi posso aspettarmi un reddito significativo?
|
||||||
|
|
||||||
|
Con lavoro costante e un sistema, l'intervallo osservato più comune per superare stabilmente i 500-1.000 euro mensili è di 4-8 mesi. I casi più rapidi — incluso il nostro da $0 a $330k in 3,5 mesi — sono documentati ma eccezionali: pianifica sui 6 mesi, non sull'eccezione.
|
||||||
|
|
||||||
|
## Informativa sulla privacy
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/privacy-policy
|
||||||
|
|
||||||
|
Bunny Agency Italia — Informativa sulla privacy Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
## Termini di servizio
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/terms-of-service
|
||||||
|
|
||||||
|
Bunny Agency Italia — Termini di servizio Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
## Cookie policy
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/cookie-policy
|
||||||
|
|
||||||
|
Bunny Agency Italia — Cookie policy Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
## Note legali
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/imprint
|
||||||
|
|
||||||
|
Bunny Agency Italia — Note legali Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
## Avvertenza editoriale
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/disclaimer
|
||||||
|
|
||||||
|
Bunny Agency Italia — Avvertenza editoriale Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
### Quando serve il parere di un professionista?
|
||||||
|
|
||||||
|
Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
|
||||||
|
## Partita IVA OnlyFans: la guida completa 2026
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/partita-iva-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — partita IVA OnlyFans. In Italia un'attività continuativa su OnlyFans richiede quasi sempre la partita IVA con il codice ATECO 73.11.03: nel regime forfettario l'imposta sostitutiva è del 15%, ridotta al 5% per i primi 5 anni, fino a 85.000 euro di ricavi, più i contributi INPS al 26,07%; con le regole DAC7 la piattaforma comunica i compensi al Fisco.
|
||||||
|
|
||||||
|
### Da quale importo serve la partita IVA per OnlyFans?
|
||||||
|
|
||||||
|
Non esiste una soglia unica: conta l'abitualità, non l'importo. Un profilo alimentato ogni settimana è attività abituale anche sotto i 5.000 euro annui spesso citati per i redditi occasionali, quindi nella pratica quasi tutte le creator attive rientrano nell'obbligo fin dai primi mesi.
|
||||||
|
|
||||||
|
### Quanto costa mantenere una partita IVA da creator?
|
||||||
|
|
||||||
|
Nel forfettario i costi fissi sono contenuti: il commercialista in genere costa tra 400 e 900 euro l'anno per questa attività, non c'è IVA da gestire e la contabilità è semplificata. Il peso vero è dato da imposta sostitutiva (15% o 5%) e contributi INPS al 26,07% sul reddito imponibile.
|
||||||
|
|
||||||
|
### Il regime forfettario al 5% vale per tutte?
|
||||||
|
|
||||||
|
No: il 5% si applica per i primi 5 anni solo se l'attività è genuinamente nuova e rispetti i requisiti, tra cui non aver svolto la stessa attività nei 3 anni precedenti. Negli altri casi l'aliquota è il 15%: la verifica va fatta con un commercialista prima dell'apertura.
|
||||||
|
|
||||||
|
### La tassa etica del 25% si applica a tutti i contenuti?
|
||||||
|
|
||||||
|
Secondo l'interpretazione prevalente riguarda i contenuti esplicitamente pornografici e non quelli soltanto suggestivi, ma il perimetro è dibattuto e va valutato sul contenuto reale del profilo. È il caso tipico in cui serve un parere scritto: tra le 2 letture possono ballare migliaia di euro l'anno.
|
||||||
|
|
||||||
|
### Posso aprire la partita IVA restando anonima?
|
||||||
|
|
||||||
|
La partita IVA è collegata alla tua identità reale e non è pubblica come vetrina, ma compare in banche dati consultabili. L'anonimato si protegge sul fronte pubblico — nome d'arte, geoblocco dell'Italia, niente volto — mentre verso Fisco e piattaforma l'identificazione è obbligatoria al 100%.
|
||||||
|
|
||||||
|
## Tassa etica OnlyFans: cos'è e quanto costa davvero
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/tassa-etica-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — tassa etica OnlyFans. L'addizionale del 25% sui redditi da materiale pornografico si somma anche al regime forfettario: tra commissione della piattaforma (20%), imposte, contributi INPS (26,07%) e tassa etica, a una creator di contenuti espliciti può restare intorno al 40% del lordo.
|
||||||
|
|
||||||
|
### Quanto vale esattamente la tassa etica?
|
||||||
|
|
||||||
|
L'addizionale è del 25% sui redditi derivanti da produzione e distribuzione di materiale pornografico, e secondo l'interpretazione prevalente si somma anche all'imposta sostitutiva del regime forfettario invece di essere assorbita.
|
||||||
|
|
||||||
|
### Se non mostro il viso o non ci sono atti espliciti, si applica lo stesso?
|
||||||
|
|
||||||
|
La lettura prevalente distingue i contenuti pornografici da quelli soltanto suggestivi, quindi molti profili non espliciti restano fuori dal perimetro. Non essendoci una casistica pubblica esaustiva, serve però una valutazione scritta del tuo caso: 2 profili simili possono ricevere trattamenti diversi.
|
||||||
|
|
||||||
|
### Quanto devo accantonare ogni mese per stare tranquilla?
|
||||||
|
|
||||||
|
Se rientri nel perimetro della tassa etica, la soglia di sicurezza è il 40-45% di ogni incasso su un conto separato; senza addizionale, il 35-40% copre imposta e contributi INPS al 26,07%. Meglio accantonare in eccesso il primo anno, quando acconto e saldo si concentrano.
|
||||||
|
|
||||||
|
### La tassa etica è la stessa cosa dell'IVA?
|
||||||
|
|
||||||
|
No, sono 2 cose diverse: l'IVA è l'imposta sul valore aggiunto e nel forfettario non si applica sulle tue fatture, mentre la tassa etica è un'addizionale del 25% sul reddito da contenuti pornografici. Sulla catena OnlyFans-fan la questione IVA è stata affrontata a livello europeo e ricade sulla piattaforma.
|
||||||
|
|
||||||
|
## Come funziona OnlyFans: guida completa per iniziare
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/come-funziona-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — come funziona OnlyFans. La piattaforma collega creator e abbonati con 4 canali di ricavo (abbonamenti, messaggi PPV, mance, contenuti su richiesta), trattiene il 20% di ogni transazione e rende i compensi prelevabili dopo circa 7 giorni; l'iscrizione richiede 18 anni e la verifica dell'identità con documento.
|
||||||
|
|
||||||
|
### Quanto trattiene OnlyFans su ogni incasso?
|
||||||
|
|
||||||
|
La piattaforma trattiene il 20% di ogni transazione — abbonamenti, PPV, mance e contenuti su richiesta — e accredita l'80% alla creator. La percentuale è uguale per tutti i canali e non cambia in base al volume.
|
||||||
|
|
||||||
|
### Serve mostrare il viso per usare OnlyFans?
|
||||||
|
|
||||||
|
No: molte creator lavorano senza volto e la piattaforma non lo richiede in nessun modo. La verifica dell'identità con documento resta però obbligatoria: l'anonimato è possibile al 100% verso il pubblico, mai verso la piattaforma.
|
||||||
|
|
||||||
|
### Quanto tempo passa prima di ricevere i soldi?
|
||||||
|
|
||||||
|
I compensi diventano prelevabili di norma dopo circa 7 giorni dalla transazione, con soglia minima da 20 dollari; il bonifico impiega poi 3-5 giorni lavorativi. I tempi possono cambiare, quindi verifica sempre la tua dashboard.
|
||||||
|
|
||||||
|
### OnlyFans è legale in Italia?
|
||||||
|
|
||||||
|
Sì: usare la piattaforma è legale per i maggiorenni e i redditi che ne derivano sono tassabili come qualsiasi altro. Gli obblighi concreti sono 2: dichiarare i compensi e valutare la partita IVA se l'attività è continuativa.
|
||||||
|
|
||||||
|
### Posso iniziare senza spendere nulla?
|
||||||
|
|
||||||
|
Sì, aprire un profilo è gratuito e non ci sono costi di attivazione: la piattaforma guadagna solo con il 20% sulle transazioni. I costi reali sono il tuo tempo e, quando l'attività diventa continuativa, gli adempimenti fiscali.
|
||||||
|
|
||||||
|
## OnlyFans senza mostrare il viso: la guida completa
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/onlyfans-senza-mostrare-il-viso
|
||||||
|
|
||||||
|
Bunny Agency Italia — OnlyFans senza mostrare il viso. Il no-face è una strategia praticabile e redditizia: si costruisce con geoblocco dell'Italia, formati studiati, pulizia dei metadati e watermark, ricordando che la verifica dell'identità sulla piattaforma resta obbligatoria al 100% e che il pubblico italiano vale solo il 2,1% del totale.
|
||||||
|
|
||||||
|
### Si guadagna meno lavorando senza mostrare il viso?
|
||||||
|
|
||||||
|
Non necessariamente: in molte nicchie il viso non è la leva che vende e i profili no-face ben posizionati monetizzano quanto gli altri. Il costo reale è nella scoperta, con una crescita tipicamente più lenta nei primi 90 giorni, compensata da un pubblico più fedele.
|
||||||
|
|
||||||
|
### Il geoblocco dell'Italia mi protegge davvero?
|
||||||
|
|
||||||
|
Riduce moltissimo il rischio che qualcuno in Italia incontri il profilo, al costo di circa il 2,1% del pubblico potenziale. Non impedisce però screenshot e ricondivisioni: va combinato con watermark e monitoraggio, mai usato come unica difesa.
|
||||||
|
|
||||||
|
### Devo comunque inviare il documento a OnlyFans?
|
||||||
|
|
||||||
|
Sì, sempre: la verifica dell'identità con documento e selfie è obbligatoria al 100% per tutti i profili e non esiste modo legittimo di evitarla. Il no-face protegge dal pubblico, non dalla piattaforma.
|
||||||
|
|
||||||
|
### Come rimuovo i metadati dalle foto?
|
||||||
|
|
||||||
|
Esportando i file con le opzioni che eliminano i dati EXIF o usando strumenti dedicati prima della pubblicazione: bastano 2 minuti per lotto di contenuti. È il primo dei 5 errori classici che espongono l'identità.
|
||||||
|
|
||||||
|
## Truffe agenzie OnlyFans: come riconoscerle in Italia
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/truffe-agenzie-onlyfans
|
||||||
|
|
||||||
|
Bunny Agency Italia — truffe agenzie OnlyFans. In Italia le truffe seguono 4 schemi ricorrenti: promesse di guadagno garantito, richiesta delle credenziali, pagamenti anticipati e assenza di contratto scritto; basta 1 di questi segnali per fermarsi, e la verifica preliminare richiede meno di 30 minuti.
|
||||||
|
|
||||||
|
### Un'agenzia seria può chiedere le mie password?
|
||||||
|
|
||||||
|
No, mai in chat e mai come condizione di ingresso: è 1 dei 4 segnali classici di truffa. La condivisione delle credenziali viola le regole della piattaforma ed espone alla perdita dei ricavi; gli accessi vanno limitati, messi per iscritto e revocabili in qualsiasi momento.
|
||||||
|
|
||||||
|
### Quanto è normale che chieda un'agenzia OnlyFans?
|
||||||
|
|
||||||
|
Le commissioni di mercato vanno in genere dal 20% al 50%, con la fascia 30-40% come standard per una gestione completa. Ciò che conta più della percentuale è la base di calcolo, cosa è incluso e chi paga i costi extra: chiedi tutto per iscritto.
|
||||||
|
|
||||||
|
### Ho già firmato un contratto che mi sembra sbagliato: posso uscirne?
|
||||||
|
|
||||||
|
Spesso sì: molte clausole abusive non reggono e alcune sono nulle a prescindere dalla firma. I 3 passi immediati sono cambiare le credenziali, raccogliere le prove e portare il contratto a un legale prima di qualsiasi comunicazione all'agenzia.
|
||||||
|
|
||||||
|
### Come verifico che un'agenzia sia reale?
|
||||||
|
|
||||||
|
Bastano 30 minuti: verifica la ragione sociale e la sede, chiedi 2-3 referenze di creator gestite e contattale fuori dai canali suggeriti, cerca recensioni indipendenti e controlla da quanto esistono i profili pubblici dell'agenzia.
|
||||||
|
|
||||||
|
## Quanto guadagnano le creator italiane su OnlyFans
|
||||||
|
|
||||||
|
URL: https://www.bunny-agency.it/blog/guide/quanto-guadagnano-creator-italiane
|
||||||
|
|
||||||
|
Bunny Agency Italia — quanto guadagnano le creator italiane. I dati di mercato indicano una media di 150-180 euro al mese, con il 62% delle creator italiane sotto i 25.000 euro l'anno e solo lo 0,8% oltre gli 85.000: la distribuzione è estremamente asimmetrica e il divario dipende dal sistema, non dal talento.
|
||||||
|
|
||||||
|
### Qual è il guadagno medio di una creator italiana?
|
||||||
|
|
||||||
|
I dati di mercato indicano una media di 150-180 euro al mese, con circa il 10% delle creator italiane sopra i 1.000 euro mensili. La media però è fuorviante in una distribuzione così asimmetrica: il 62% dichiara meno di 25.000 euro l'anno.
|
||||||
|
|
||||||
|
### Quante creator italiane superano gli 85.000 euro l'anno?
|
||||||
|
|
||||||
|
Circa lo 0,8%, cioè meno di 1 su 100 — non a caso è anche la soglia oltre la quale si esce dal regime forfettario. Il 12% si colloca tra 50.000 e 85.000 euro, il 23,2% tra 25.000 e 50.000.
|
||||||
|
|
||||||
|
### Da 1.000 euro incassati quanto mi resta davvero?
|
||||||
|
|
||||||
|
Dopo il 20% trattenuto dalla piattaforma restano 800 euro lordi, su cui gravano imposta sostitutiva (15% o 5%), contributi INPS al 26,07% ed eventualmente la tassa etica del 25%. Per i contenuti espliciti il netto può avvicinarsi al 40% dell'incasso originario.
|
||||||
|
|
||||||
|
### In quanto tempo si arriva a un reddito stabile?
|
||||||
|
|
||||||
|
L'intervallo più comune per superare stabilmente i 500-1.000 euro mensili è di 4-8 mesi di lavoro costante, con i primi 90 giorni dedicati a costruzione e raccolta dati. I casi più rapidi sono documentati ma eccezionali.
|
||||||
|
|
||||||
|
## Editorial note
|
||||||
|
|
||||||
|
Questo è contenuto informativo, non una consulenza legale, fiscale, finanziaria o medica. Conferma le decisioni su tasse, contratti, sicurezza e diritto con un professionista abilitato in Italia.
|
||||||
68
public/llms.txt
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Bunny Agency Italia
|
||||||
|
|
||||||
|
Bunny Agency unisce gestione dell'account, piano dei contenuti, crescita del pubblico, chat con gli abbonati e tutela della privacy in un unico sistema di management misurabile per creator.
|
||||||
|
|
||||||
|
## Key facts / proof
|
||||||
|
|
||||||
|
- Legal entity: Bunny Agency LLC; founded 2019 by Sophia Brecht.
|
||||||
|
- Documented creator results: $0 to $330k in 3.5 months; $2k to $33k/month in 2 months. These are individual case studies, not guarantees.
|
||||||
|
- Independent Trustpilot profile: 4/5 from 3 reviews, checked 2026-07-18.
|
||||||
|
- Commission model: the percentage and calculation base are agreed in writing; there is no universal fixed rate or upfront fee.
|
||||||
|
- Creator control: the creator retains the account, revenue, identity, and data; access and exit terms are documented.
|
||||||
|
|
||||||
|
## Pages
|
||||||
|
|
||||||
|
- [Agenzia OnlyFans per creator in Italia](https://www.bunny-agency.it): Bunny Agency Italia — Agenzia OnlyFans per creator in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Bunny Agency unisce gestione dell'account, piano dei contenuti, crescita del pubblico, chat con gli abbonati e tutela della privacy in un unico sistema di management misurabile per creator.
|
||||||
|
- [Servizi di management per creator in Italia](https://www.bunny-agency.it/services): Bunny Agency Italia — Servizi di management per creator in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Scegli un servizio mirato o un piano di gestione completo. Ogni raccomandazione parte dai dati del tuo account, dalla tua capacità produttiva, dai tuoi limiti personali e da priorità misurabili.
|
||||||
|
- [Un modello operativo chiaro per creator indipendenti](https://www.bunny-agency.it/about): Bunny Agency Italia — Un modello operativo chiaro per creator indipendenti, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il nostro metodo editoriale e operativo separa i fatti verificabili dalle stime, protegge i confini delle creator e documenta chi è responsabile di ogni decisione.
|
||||||
|
- [Candidati per un'analisi strategica riservata](https://www.bunny-agency.it/apply): Bunny Agency Italia — Candidati per un'analisi strategica riservata, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Descrivi situazione attuale, obiettivi, lingua e tipo di supporto preferito. La candidatura è una valutazione di compatibilità, non una promessa di reddito né una garanzia di ammissione.
|
||||||
|
- [La biblioteca delle domande delle creator](https://www.bunny-agency.it/blog): Bunny Agency Italia — La biblioteca delle domande delle creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Risposte dirette e pratiche alle domande più frequenti delle creator: lancio, contenuti, prezzi, promozione, privacy, tasse, cura degli abbonati e scelta dell'agenzia.
|
||||||
|
- [Domande sull'agenzia per creator, risposte chiare](https://www.bunny-agency.it/faq): Bunny Agency Italia — Domande sull'agenzia per creator, risposte chiare, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Parti dalla risposta breve, poi usa le checklist e le fonti ufficiali per capire cosa vale per il tuo account e per il mercato italiano.
|
||||||
|
- [Costi e perimetro di un'agenzia per creator](https://www.bunny-agency.it/pricing): Bunny Agency Italia — Costi e perimetro di un'agenzia per creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste una percentuale universale responsabile. Confronta perimetro, accessi, durata, proprietà dei dati, diritto di uscita e risultati misurabili prima di confrontare il prezzo.
|
||||||
|
- [Contatta Bunny Agency Italia](https://www.bunny-agency.it/contact): Bunny Agency Italia — Contatta Bunny Agency Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa il modulo tracciato per una richiesta riservata. Registra la pagina e il tema che hanno generato la tua domanda, così risponde il team giusto.
|
||||||
|
- [gestione account OnlyFans](https://www.bunny-agency.it/services/account-management): Bunny Agency Italia — gestione account OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un piano operativo strutturato allinea pubblicazioni, analytics, test sui prezzi, cura degli abbonati e decisioni settimanali, senza togliere alla creator il controllo del proprio account.
|
||||||
|
- [strategia di marketing OnlyFans](https://www.bunny-agency.it/services/marketing): Bunny Agency Italia — strategia di marketing OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un piano di marketing solido rispetta le regole delle piattaforme e unisce intenzione del pubblico, capacità produttiva, attribuzione ed esperimenti ripetibili, invece di puntare su spam o su un singolo post virale.
|
||||||
|
- [gestione chat OnlyFans](https://www.bunny-agency.it/services/chat-management): Bunny Agency Italia — gestione chat OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Una chat gestita in modo responsabile usa linee guida di tono approvate, regole di escalation, limiti di orario, controllo qualità e accessi trasparenti e revocabili.
|
||||||
|
- [strategia dei contenuti OnlyFans](https://www.bunny-agency.it/services/content-strategy): Bunny Agency Italia — strategia dei contenuti OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un sistema di contenuti trasforma il posizionamento in temi ripetibili, shot list, cadenza di pubblicazione, regole di riutilizzo e un ciclo di revisione basato sui dati.
|
||||||
|
- [privacy e tutela DMCA per creator](https://www.bunny-agency.it/services/privacy-dmca): Bunny Agency Italia — privacy e tutela DMCA per creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La protezione della privacy inizia prima della pubblicazione: separazione delle identità, pulizia dei metadati, controllo degli accessi, raccolta delle prove e una procedura documentata di risposta ai leak.
|
||||||
|
- [Come aprire OnlyFans in modo responsabile?](https://www.bunny-agency.it/blog/questions/how-to-start-onlyfans): Bunny Agency Italia — come aprire OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Parti dai requisiti legali (18+ e verifica dell'identità), dalle decisioni su identità e limiti personali, da una riserva realistica di contenuti, da ipotesi di prezzo e da un piano di promozione. Non pubblicare finché sicurezza, pagamenti, registri fiscali e flussi di supporto non sono documentati.
|
||||||
|
- [Come iniziare a guadagnare su OnlyFans?](https://www.bunny-agency.it/blog/questions/how-to-start-making-money-on-onlyfans): Bunny Agency Italia — come iniziare a guadagnare su OnlyFans. Fondata nel 2019, Bunny scompone il tema in passi concreti: requisiti 18+, profilo e prezzo, meccanica dei ricavi (abbonamenti, PPV, mance), promozione conforme e gestione dell'80% che resta dopo la commissione del 20%; i risultati variano.
|
||||||
|
- [Quanto si guadagna su OnlyFans davvero?](https://www.bunny-agency.it/blog/questions/how-much-can-creators-earn): Bunny Agency Italia — quanto si guadagna su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste un reddito standard affidabile: la maggior parte dei creator guadagna poco e una minoranza molto. Il risultato dipende da pubblico, conversione, retention, prezzi, costanza, geografia e costi. Modella scenari sul tuo funnel su 30-90 giorni invece di trattare screenshot eccezionali come previsioni.
|
||||||
|
- [Quanto spesso pubblicare su OnlyFans?](https://www.bunny-agency.it/blog/questions/how-often-should-creators-post): Bunny Agency Italia — quanto spesso pubblicare su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa la cadenza più alta che riesci a sostenere senza ridurre la qualità o superare i tuoi limiti. Una promessa settimanale costante, per esempio 3-4 post, e una riserva di contenuti pronta contano più di un obiettivo giornaliero arbitrario.
|
||||||
|
- [Quali sono i contenuti migliori per OnlyFans?](https://www.bunny-agency.it/blog/questions/what-content-performs-best): Bunny Agency Italia — contenuti migliori per OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il mix migliore è specifico per pubblico e offerta. Testa 2-3 temi chiari alla volta, misura conversione e retention — non solo i like — e mantieni i formati che puoi produrre in modo sicuro e costante.
|
||||||
|
- [Prezzo abbonamento OnlyFans: come deciderlo?](https://www.bunny-agency.it/blog/questions/how-to-price-a-subscription): Bunny Agency Italia — prezzo abbonamento OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il prezzo deve riflettere posizionamento, promessa di pubblicazione, disponibilità del pubblico, sconti promozionali, strategia dei messaggi a pagamento e retention. Testa 1 variabile alla volta e valuta il valore totale per abbonato, non solo le iscrizioni.
|
||||||
|
- [Come funzionano commissioni e pagamenti OnlyFans?](https://www.bunny-agency.it/blog/questions/platform-fees-and-payouts): Bunny Agency Italia — commissioni e pagamenti OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Controlla i termini attuali della piattaforma e la tua dashboard dei compensi prima di citare qualsiasi percentuale: la piattaforma trattiene il 20% e paga circa dopo 7 giorni. Tieni separati ricavo lordo, trattenute, rimborsi, cambio valuta, tasse e costi.
|
||||||
|
- [OnlyFans e tasse in Italia: cosa devi sapere?](https://www.bunny-agency.it/blog/questions/creator-taxes-guide): Bunny Agency Italia — OnlyFans e tasse in Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. In Italia i ricavi da creator sono redditi imponibili: con attività abituale serve la partita IVA, spesso in regime forfettario con imposta al 15% (5% per le nuove attività) fino a 85.000 euro di ricavi, più i contributi INPS. Conserva i registri dal primo giorno e conferma tutto con un commercialista.
|
||||||
|
- [Si può restare anonima su OnlyFans?](https://www.bunny-agency.it/blog/questions/can-creators-stay-anonymous): Bunny Agency Italia — restare anonima su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. L'anonimato pubblico si può rafforzare, mai garantire al 100%. Separa le identità, elimina i riferimenti al luogo, pulisci i metadati, controlla gli sfondi, usa un'autenticazione forte e ricorda che la piattaforma richiede comunque la verifica dell'identità con documento.
|
||||||
|
- [Come proteggere la tua identità da creator?](https://www.bunny-agency.it/blog/questions/how-to-protect-your-identity): Bunny Agency Italia — proteggere la tua identità, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa email e numero dedicati, un password manager, autenticazione a 2 fattori, accessi basati sui ruoli, rimozione dei metadati, revisione della geolocalizzazione, condivisione controllata dei file e un piano scritto di risposta agli incidenti.
|
||||||
|
- [Come promuovere OnlyFans senza spam?](https://www.bunny-agency.it/blog/questions/how-to-promote-without-spam): Bunny Agency Italia — promuovere OnlyFans senza spam, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Costruisci contenuti nativi, educativi o di personalità, rispetta le regole di ogni social, usa call to action misurate e traccia le visite qualificate. La ripetizione senza valore per il pubblico aumenta il rischio di ban e danneggia il brand in poche settimane, spesso 2-4.
|
||||||
|
- [Quali sono i migliori social per promuovere OnlyFans?](https://www.bunny-agency.it/blog/questions/best-social-platforms-for-creators): Bunny Agency Italia — migliori social per promuovere OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Scegli i canali dove il tuo pubblico già passa il tempo e dove il tuo formato rispetta le regole. Un canale di scoperta ben gestito più 1 canale proprietario di retention vale più di una presenza debole su 5 piattaforme.
|
||||||
|
- [Come fidelizzare gli abbonati OnlyFans?](https://www.bunny-agency.it/blog/questions/how-to-retain-subscribers): Bunny Agency Italia — fidelizzare gli abbonati OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La retention migliora quando la promessa pubblica corrisponde a ciò che consegni, l'onboarding è chiaro, la cadenza è affidabile, i messaggi sono pertinenti e il feedback guida il ciclo successivo. Analizza le coorti su 30-90 giorni, non un solo tasso medio di rinnovo.
|
||||||
|
- [Come scrivere un messaggio di benvenuto efficace?](https://www.bunny-agency.it/blog/questions/how-to-write-welcome-messages): Bunny Agency Italia — messaggio di benvenuto, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Un buon messaggio di benvenuto definisce il tono, spiega cosa riceve l'abbonato, propone 1 azione successiva semplice e rispetta consenso e limiti di comunicazione. Deve suonare come la voce approvata della creator, non come un template.
|
||||||
|
- [Quando usare i messaggi PPV su OnlyFans?](https://www.bunny-agency.it/blog/questions/when-to-use-ppv-messages): Bunny Agency Italia — messaggi PPV su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Usa i messaggi a pagamento quando l'offerta è distinta, descritta con precisione, programmata con criterio e coerente con le aspettative. Misura tasso di acquisto, rimborsi, reclami e retention su 30 giorni, non solo il ricavo immediato.
|
||||||
|
- [Come gestire la chat con i fan?](https://www.bunny-agency.it/blog/questions/how-to-manage-creator-chat): Bunny Agency Italia — gestire la chat, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Definisci per iscritto voce, permessi, affermazioni vietate, limiti di consenso, escalation, passaggi di consegne, orari e controlli di qualità prima che qualcuno scriva. La creator deve sapere chi ha accesso e mantenere la supervisione, con verifiche almeno 1 volta a settimana.
|
||||||
|
- [Come prevenire i leak e usare il DMCA?](https://www.bunny-agency.it/blog/questions/how-to-prevent-leaks-and-use-dmca): Bunny Agency Italia — prevenire i leak e usare il DMCA, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Nessun sistema previene il 100% dei leak. Riduci l'esposizione con controllo degli accessi e watermark, conserva le prove, verifica la titolarità, usa le segnalazioni della piattaforma e invia notifiche DMCA accurate tramite i canali autorizzati quando trovi una violazione.
|
||||||
|
- [Agenzia OnlyFans o gestione autonoma?](https://www.bunny-agency.it/blog/questions/agency-vs-self-management): Bunny Agency Italia — agenzia OnlyFans o gestione autonoma, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. La scelta giusta dipende da competenze mancanti, tempo, rischio, controllo ed economia reale. Confronta un flusso di lavoro fai-da-te documentato con le responsabilità e gli accessi esatti che l'agenzia propone, su un periodo di prova di 30-90 giorni.
|
||||||
|
- [Quanto costa un'agenzia OnlyFans?](https://www.bunny-agency.it/blog/questions/how-much-does-an-agency-cost): Bunny Agency Italia — quanto costa un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Confronta il perimetro totale, non la percentuale in copertina: le commissioni di mercato vanno di solito dal 20% al 50%. Chiedi quale base di ricavo viene usata, quali costi sono extra, chi paga i contenuti, cosa succede con i rimborsi e in quanti giorni puoi uscire.
|
||||||
|
- [Come scegliere un'agenzia OnlyFans seria?](https://www.bunny-agency.it/blog/questions/how-to-choose-a-creator-agency): Bunny Agency Italia — scegliere un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Verifica identità legale, referenze, sicurezza, contratto, modello di accesso, report, promesse e diritto di uscita. Un'agenzia credibile spiega i compromessi, rifiuta di garantire un reddito e accetta che 1 legale di tua fiducia riveda l'accordo prima della firma.
|
||||||
|
- [Cosa deve includere il contratto con un'agenzia OnlyFans?](https://www.bunny-agency.it/blog/questions/what-should-an-agency-contract-include): Bunny Agency Italia — contratto con un'agenzia OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Il contratto deve definire parti, perimetro, poteri, credenziali, dati, base di calcolo del compenso, spese, proprietà intellettuale, riservatezza, conformità, durata, recesso, riconsegna, controversie e cosa succede ad account e contenuti dopo l'uscita, punto per punto in 1 documento.
|
||||||
|
- [Come costruire un calendario dei contenuti?](https://www.bunny-agency.it/blog/questions/how-to-build-a-content-calendar): Bunny Agency Italia — calendario dei contenuti, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Pianifica intorno a temi ripetibili, promesse al pubblico, capacità produttiva, date di campagna, diritti di riutilizzo e tempi di recupero. Mantieni una riserva di 2-4 settimane e rivedi i risultati ogni 7 giorni, così il calendario resta uno strumento decisionale.
|
||||||
|
- [Come fare l'audit di un account creator?](https://www.bunny-agency.it/blog/questions/how-to-audit-a-creator-account): Bunny Agency Italia — audit di un account creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Analizza il percorso completo: scoperta, conversione del profilo, onboarding, consegna dei contenuti, messaggi, offerte a pagamento, retention, sicurezza, costi e report. Stabilisci una baseline di 7-30 giorni prima di raccomandare qualsiasi cambiamento.
|
||||||
|
- [Come evitare il burnout da creator?](https://www.bunny-agency.it/blog/questions/how-to-avoid-creator-burnout): Bunny Agency Italia — evitare il burnout da creator, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Fissa limiti su contenuti e comunicazione, lavora a blocchi, proteggi almeno 1 giorno libero a settimana, riduci il controllo compulsivo della dashboard, documenta le escalation e costruisci una promessa sostenibile. Una crescita che dipende dal superlavoro permanente non è una strategia.
|
||||||
|
- [Cosa serve per candidarsi a un'agenzia?](https://www.bunny-agency.it/blog/questions/what-is-needed-to-apply-to-an-agency): Bunny Agency Italia — candidarsi a un'agenzia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Prepara idoneità di età e identità (18+), mercato e lingua, link agli account, flusso di lavoro attuale, obiettivi, limiti, disponibilità e dati di performance onesti. Non inviare mai password o documenti sensibili attraverso un canale non verificato.
|
||||||
|
- [Quanto tempo serve per crescere su OnlyFans?](https://www.bunny-agency.it/blog/questions/how-long-does-sustainable-growth-take): Bunny Agency Italia — quanto tempo serve per crescere su OnlyFans, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Non esiste una tempistica fissa. Valuta se traffico qualificato, conversione, affidabilità di pubblicazione, valore per abbonato e retention migliorano su almeno 2-3 cicli di test completi prima di giudicare una strategia.
|
||||||
|
- [Informativa sulla privacy](https://www.bunny-agency.it/privacy-policy): Bunny Agency Italia — Informativa sulla privacy Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
- [Termini di servizio](https://www.bunny-agency.it/terms-of-service): Bunny Agency Italia — Termini di servizio Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
- [Cookie policy](https://www.bunny-agency.it/cookie-policy): Bunny Agency Italia — Cookie policy Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
- [Note legali](https://www.bunny-agency.it/imprint): Bunny Agency Italia — Note legali Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
- [Avvertenza editoriale](https://www.bunny-agency.it/disclaimer): Bunny Agency Italia — Avvertenza editoriale Bunny Italia, Italia. Fondata nel 2019, Bunny Agency LLC documenta risultati reali: da $0 a $330k in 3,5 mesi e da $2k a $33k al mese in 2 mesi; i risultati individuali variano. Quando questioni legali, fiscali, di sicurezza, contrattuali o di salute incidono davvero su una decisione, rivolgiti a 1 professionista abilitato in Italia. Questa guida è informazione operativa, non una promessa di risultati né una consulenza professionale.
|
||||||
|
- [Partita IVA OnlyFans: la guida completa 2026](https://www.bunny-agency.it/blog/guide/partita-iva-onlyfans): Bunny Agency Italia — partita IVA OnlyFans. In Italia un'attività continuativa su OnlyFans richiede quasi sempre la partita IVA con il codice ATECO 73.11.03: nel regime forfettario l'imposta sostitutiva è del 15%, ridotta al 5% per i primi 5 anni, fino a 85.000 euro di ricavi, più i contributi INPS al 26,07%; con le regole DAC7 la piattaforma comunica i compensi al Fisco.
|
||||||
|
- [Tassa etica OnlyFans: cos'è e quanto costa davvero](https://www.bunny-agency.it/blog/guide/tassa-etica-onlyfans): Bunny Agency Italia — tassa etica OnlyFans. L'addizionale del 25% sui redditi da materiale pornografico si somma anche al regime forfettario: tra commissione della piattaforma (20%), imposte, contributi INPS (26,07%) e tassa etica, a una creator di contenuti espliciti può restare intorno al 40% del lordo.
|
||||||
|
- [Come funziona OnlyFans: guida completa per iniziare](https://www.bunny-agency.it/blog/guide/come-funziona-onlyfans): Bunny Agency Italia — come funziona OnlyFans. La piattaforma collega creator e abbonati con 4 canali di ricavo (abbonamenti, messaggi PPV, mance, contenuti su richiesta), trattiene il 20% di ogni transazione e rende i compensi prelevabili dopo circa 7 giorni; l'iscrizione richiede 18 anni e la verifica dell'identità con documento.
|
||||||
|
- [OnlyFans senza mostrare il viso: la guida completa](https://www.bunny-agency.it/blog/guide/onlyfans-senza-mostrare-il-viso): Bunny Agency Italia — OnlyFans senza mostrare il viso. Il no-face è una strategia praticabile e redditizia: si costruisce con geoblocco dell'Italia, formati studiati, pulizia dei metadati e watermark, ricordando che la verifica dell'identità sulla piattaforma resta obbligatoria al 100% e che il pubblico italiano vale solo il 2,1% del totale.
|
||||||
|
- [Truffe agenzie OnlyFans: come riconoscerle in Italia](https://www.bunny-agency.it/blog/guide/truffe-agenzie-onlyfans): Bunny Agency Italia — truffe agenzie OnlyFans. In Italia le truffe seguono 4 schemi ricorrenti: promesse di guadagno garantito, richiesta delle credenziali, pagamenti anticipati e assenza di contratto scritto; basta 1 di questi segnali per fermarsi, e la verifica preliminare richiede meno di 30 minuti.
|
||||||
|
- [Quanto guadagnano le creator italiane su OnlyFans](https://www.bunny-agency.it/blog/guide/quanto-guadagnano-creator-italiane): Bunny Agency Italia — quanto guadagnano le creator italiane. I dati di mercato indicano una media di 150-180 euro al mese, con il 62% delle creator italiane sotto i 25.000 euro l'anno e solo lo 0,8% oltre gli 85.000: la distribuzione è estremamente asimmetrica e il divario dipende dal sistema, non dal talento.
|
||||||
|
|
||||||
|
## Editorial note
|
||||||
|
|
||||||
|
Questo è contenuto informativo, non una consulenza legale, fiscale, finanziaria o medica. Conferma le decisioni su tasse, contratti, sicurezza e diritto con un professionista abilitato in Italia.
|
||||||
30
scripts/generate-llms.mjs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import fs from "node:fs";
|
||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
|
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
||||||
|
const data = JSON.parse(fs.readFileSync(path.join(root, "src/content/site-content.json"), "utf8"));
|
||||||
|
const rating = data.site.aggregateRating;
|
||||||
|
const keyFacts = [
|
||||||
|
`- Legal entity: ${data.site.legalEntity.name}; founded 2019 by ${data.site.legalEntity.managingDirector}.`,
|
||||||
|
"- Documented creator results: $0 to $330k in 3.5 months; $2k to $33k/month in 2 months. These are individual case studies, not guarantees.",
|
||||||
|
`- Independent Trustpilot profile: ${rating.ratingValue}/${rating.bestRating} from ${rating.reviewCount} reviews, checked ${rating.verifiedAt}.`,
|
||||||
|
"- Commission model: the percentage and calculation base are agreed in writing; there is no universal fixed rate or upfront fee.",
|
||||||
|
"- Creator control: the creator retains the account, revenue, identity, and data; access and exit terms are documented.",
|
||||||
|
].join("\n");
|
||||||
|
const llms = [
|
||||||
|
`# ${data.site.name}`, "", data.site.description, "", "## Key facts / proof", "", keyFacts, "", "## Pages", "",
|
||||||
|
...data.pages.filter((page) => page.indexable).map((page) => `- [${page.h1}](${data.site.url}${page.path === "/" ? "" : page.path}): ${page.summary}`),
|
||||||
|
"", "## Editorial note", "", data.labels.ymyl, "",
|
||||||
|
].join("\n");
|
||||||
|
const full = [
|
||||||
|
`# ${data.site.name} — full answer corpus`, "", "## Key facts / proof", "", keyFacts, "",
|
||||||
|
...data.pages.filter((page) => page.indexable).flatMap((page) => [
|
||||||
|
`## ${page.h1}`, "", `URL: ${data.site.url}${page.path === "/" ? "" : page.path}`, "", page.summary, "",
|
||||||
|
...page.faq.flatMap((faq) => [`### ${faq.question}`, "", faq.answer, ""]),
|
||||||
|
]),
|
||||||
|
"## Editorial note", "", data.labels.ymyl, "",
|
||||||
|
].join("\n");
|
||||||
|
fs.writeFileSync(path.join(root, "public/llms.txt"), llms);
|
||||||
|
fs.writeFileSync(path.join(root, "public/llms-full.txt"), full);
|
||||||
|
console.log(`${data.site.code}: generated llms.txt and llms-full.txt`);
|
||||||
8
scripts/submit-indexnow.mjs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url";
|
||||||
|
const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),".."); const data=JSON.parse(fs.readFileSync(path.join(root,"src/content/site-content.json"),"utf8"));
|
||||||
|
const site=(process.env.NEXT_PUBLIC_SITE_URL||data.site.url).replace(/\/+$/,""); const key="cd6b5f316aa84975136f630f3eb1cd02"; const keyLocation=site+"/"+key+".txt";
|
||||||
|
const urls=data.pages.filter((p)=>p.indexable).map((p)=>site+(p.path==="/"?"":p.path));
|
||||||
|
const keyResponse=await fetch(keyLocation,{redirect:"follow"}); if(!keyResponse.ok||(await keyResponse.text()).trim()!==key)throw new Error("IndexNow key is not live at "+keyLocation);
|
||||||
|
const checks=await Promise.all(urls.map(async(url)=>[url,(await fetch(url,{method:"HEAD",redirect:"follow"})).status])); const bad=checks.filter(([,status])=>status!==200); if(bad.length)throw new Error("Refusing submission; non-200 URLs: "+JSON.stringify(bad));
|
||||||
|
const response=await fetch("https://api.indexnow.org/indexnow",{method:"POST",headers:{"content-type":"application/json; charset=utf-8"},body:JSON.stringify({host:new URL(site).host,key,keyLocation,urlList:urls})});
|
||||||
|
if(!response.ok)throw new Error("IndexNow "+response.status+" "+await response.text()); console.log("IndexNow accepted "+urls.length+" URLs for "+site);
|
||||||
12
scripts/validate-seo.mjs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url";
|
||||||
|
const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),"..");
|
||||||
|
const data=JSON.parse(fs.readFileSync(path.join(root,"src/content/site-content.json"),"utf8"));
|
||||||
|
const marketing=data.pages.filter((p)=>p.category!=="legal"); const errors=[];
|
||||||
|
const moneyPaths=new Set(["/","/services/account-management","/pricing","/blog/questions/creator-taxes-guide","/blog/questions/how-to-start-onlyfans","/blog/questions/how-to-choose-a-creator-agency"]);
|
||||||
|
const wordCount=(value)=>{try{return [...new Intl.Segmenter(data.site.locale,{granularity:"word"}).segment(value)].filter((item)=>item.isWordLike).length}catch{return value.trim().split(/\s+/).length}};
|
||||||
|
if(marketing.length<38)errors.push("fewer than 38 marketing/content pages");
|
||||||
|
for(const field of ["title","description","h1"]){const seen=new Map();for(const p of data.pages){const key=p[field].trim().toLocaleLowerCase();if(seen.has(key))errors.push("duplicate "+field+": "+p.path+" and "+seen.get(key));else seen.set(key,p.path)}}
|
||||||
|
for(const p of data.pages){for(const field of ["path","title","description","h1","summary","image","alt","keyword"]){if(!p[field])errors.push(p.path+" missing "+field)}if(!p.faq?.length)errors.push(p.path+" missing visible FAQ");if(p.title.length>60)errors.push(p.path+" title exceeds 60 characters");if(p.description.length>155)errors.push(p.path+" description exceeds 155 characters");if(p.citations.length<2)errors.push(p.path+" has fewer than 2 citations");if(!/\d/.test(p.summary))errors.push(p.path+" summary has no quotable number or date");for(const faq of p.faq){if(!/\d/.test(faq.answer))errors.push(p.path+" FAQ answer has no quotable number or date: "+faq.question)}if(p.category==="service"&&!p.h1.toLocaleLowerCase().includes(p.keyword.toLocaleLowerCase()))errors.push(p.path+" service keyword missing from H1");if(p.category==="blog"&&![p.h1,...p.sections.map((section)=>section.heading)].some((value)=>value.toLocaleLowerCase().includes(p.keyword.toLocaleLowerCase())))errors.push(p.path+" blog keyword missing from H1/H2");if(moneyPaths.has(p.path)){if(p.sections.length<5||p.sections.length>7)errors.push(p.path+" money page needs 5-7 sections");if(p.faq.length<5)errors.push(p.path+" money page needs at least 5 FAQs");const rendered=[p.summary,...p.sections.flatMap((section)=>[section.heading,section.body,...(section.items??[]),...(section.steps??[])]),...p.faq.flatMap((faq)=>[faq.question,faq.answer])].join(" ");if(["zh-TW","th-TH","ko-KR"].includes(data.site.locale)){if(rendered.length<1400)errors.push(p.path+" money page is too short")}else{const words=wordCount(rendered);if(words<580||words>1000)errors.push(p.path+" money page outside 580-1000 words: "+words)}}const image=path.join(root,"public",p.image);if(!fs.existsSync(image))errors.push(p.path+" missing image "+p.image)}
|
||||||
|
if(!data.site.hreflangXDefault)errors.push("missing cluster-wide hreflangXDefault");if(data.site.foundingDate!=="2019")errors.push("missing verified foundingDate");if(!data.site.aggregateRating?.ratingValue||!data.site.aggregateRating?.reviewCount)errors.push("missing aggregate rating evidence");if((data.site.schemaSameAs?.length??0)<15)errors.push("entity sameAs graph is incomplete");
|
||||||
|
for(const file of ["public/llms.txt","public/llms-full.txt","src/app/robots.ts","src/app/sitemap.ts","src/components/TrackedHubSpotForm.tsx","src/components/SiteJsonLd.tsx","src/components/Breadcrumbs.tsx"]){if(!fs.existsSync(path.join(root,file)))errors.push("missing "+file)}
|
||||||
|
if(errors.length){console.error(errors.join("\n"));process.exit(1)}console.log(data.site.code+": "+marketing.length+" marketing pages, "+data.pages.length+" total pages; SEO registry valid");
|
||||||
12
src/app/[[...slug]]/page.tsx
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import { notFound } from "next/navigation";
|
||||||
|
import { content, findPage, metadataForPage, pages } from "@/lib/content";
|
||||||
|
import MarketingPage from "@/components/MarketingPage";
|
||||||
|
|
||||||
|
export const dynamicParams = false;
|
||||||
|
export function generateStaticParams() { return pages.filter((page) => !(content.site.concretePaths as string[]).includes(page.path)).map((page) => ({ slug: page.path === "/" ? [] : page.path.slice(1).split("/") })); }
|
||||||
|
export async function generateMetadata({ params }: { params: Promise<{ slug?: string[] }> }): Promise<Metadata> {
|
||||||
|
const resolvedParams = await params; const page = findPage(resolvedParams.slug); if (!page) return {};
|
||||||
|
return metadataForPage(page);
|
||||||
|
}
|
||||||
|
export default async function CatchAllPage({ params }: { params: Promise<{ slug?: string[] }> }) { const resolvedParams = await params; const page = findPage(resolvedParams.slug); if (!page) notFound(); return <MarketingPage page={page} />; }
|
||||||
1058
src/app/globals.css
Normal file
32
src/app/layout.tsx
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import { Bodoni_Moda, Mulish } from "next/font/google";
|
||||||
|
import { absoluteUrl, content } from "@/lib/content";
|
||||||
|
import { SiteFooter, SiteHeader } from "@/components/SiteChrome";
|
||||||
|
import LegacyHashBridge from "@/components/LegacyHashBridge";
|
||||||
|
import SiteJsonLd from "@/components/SiteJsonLd";
|
||||||
|
import GoldDust from "@/components/GoldDust";
|
||||||
|
import "./globals.css";
|
||||||
|
|
||||||
|
const display = Bodoni_Moda({
|
||||||
|
subsets: ["latin", "latin-ext"],
|
||||||
|
display: "swap",
|
||||||
|
weight: ["400", "500", "600", "700", "800", "900"],
|
||||||
|
style: ["normal", "italic"],
|
||||||
|
variable: "--font-display",
|
||||||
|
});
|
||||||
|
const body = Mulish({
|
||||||
|
subsets: ["latin", "latin-ext"],
|
||||||
|
display: "swap",
|
||||||
|
weight: ["400", "500", "600", "700", "800"],
|
||||||
|
variable: "--font-body",
|
||||||
|
});
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
metadataBase: new URL(absoluteUrl("/")),
|
||||||
|
title: { default: content.site.name, template: "%s" },
|
||||||
|
description: content.site.description,
|
||||||
|
robots: { index: true, follow: true },
|
||||||
|
};
|
||||||
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
return <html lang="it" dir="ltr" className={`${display.variable} ${body.variable}`}><body><script dangerouslySetInnerHTML={{ __html: "document.documentElement.classList.add('js')" }} /><LegacyHashBridge /><SiteJsonLd /><GoldDust /><div className="frame-vignette" aria-hidden="true" /><SiteHeader /><main>{children}</main><SiteFooter /></body></html>;
|
||||||
|
}
|
||||||
1
src/app/not-found.tsx
Normal file
@ -0,0 +1 @@
|
|||||||
|
import Link from "next/link"; export default function NotFound(){return <section className="page-shell"><h1>404</h1><p>Page not found.</p><Link href="/">← Home</Link></section>}
|
||||||
6
src/app/robots.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import type { MetadataRoute } from "next";
|
||||||
|
import { absoluteUrl } from "@/lib/content";
|
||||||
|
export default function robots(): MetadataRoute.Robots {
|
||||||
|
const agents = ["*", "GPTBot", "OAI-SearchBot", "ChatGPT-User", "ClaudeBot", "PerplexityBot", "Google-Extended"];
|
||||||
|
return { rules: agents.map((userAgent) => ({ userAgent, allow: "/" })), sitemap: absoluteUrl("/sitemap.xml"), host: absoluteUrl("/") };
|
||||||
|
}
|
||||||
5
src/app/sitemap.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import type { MetadataRoute } from "next";
|
||||||
|
import { absoluteUrl, pages } from "@/lib/content";
|
||||||
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||||||
|
return pages.filter((page) => page.indexable).map((page) => ({ url: absoluteUrl(page.path), lastModified: new Date(page.dateModified), changeFrequency: page.category === "blog" ? "monthly" : "weekly", priority: page.path === "/" ? 1 : page.category === "legal" ? 0.3 : 0.8 }));
|
||||||
|
}
|
||||||
31
src/components/Breadcrumbs.tsx
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
import { content, pages, type SeoPage } from "@/lib/content";
|
||||||
|
|
||||||
|
export function breadcrumbPages(page: SeoPage): SeoPage[] {
|
||||||
|
if (page.path === "/") return [];
|
||||||
|
const parentPath = page.path.startsWith("/services/") ? "/services" : page.path.startsWith("/blog/") ? "/blog" : null;
|
||||||
|
const parent = parentPath ? pages.find((candidate) => candidate.path === parentPath) : undefined;
|
||||||
|
return [...(parent ? [parent] : []), page];
|
||||||
|
}
|
||||||
|
|
||||||
|
type LegacyItem = { label: string; href?: string };
|
||||||
|
|
||||||
|
export default function Breadcrumbs({ page, items }: { page?: SeoPage; items?: LegacyItem[] }) {
|
||||||
|
if (items) return <nav className="breadcrumbs" aria-label="Breadcrumb"><ol>
|
||||||
|
<li><Link href="/">{content.labels.home}</Link></li>
|
||||||
|
{items.filter((item) => item.href !== "/").map((item, index, list) => <li key={`${item.href ?? "current"}-${item.label}`} aria-current={index === list.length - 1 ? "page" : undefined}>
|
||||||
|
{item.href && index !== list.length - 1 ? <Link href={item.href}>{item.label}</Link> : <span>{item.label}</span>}
|
||||||
|
</li>)}
|
||||||
|
</ol></nav>;
|
||||||
|
if (!page) return null;
|
||||||
|
const crumbs = breadcrumbPages(page);
|
||||||
|
if (!crumbs.length) return null;
|
||||||
|
return <nav className="breadcrumbs" aria-label="Breadcrumb">
|
||||||
|
<ol>
|
||||||
|
<li><Link href="/">{content.labels.home}</Link></li>
|
||||||
|
{crumbs.map((crumb, index) => <li key={crumb.path} aria-current={index === crumbs.length - 1 ? "page" : undefined}>
|
||||||
|
{index === crumbs.length - 1 ? <span>{crumb.h1}</span> : <Link href={crumb.path}>{crumb.h1}</Link>}
|
||||||
|
</li>)}
|
||||||
|
</ol>
|
||||||
|
</nav>;
|
||||||
|
}
|
||||||
52
src/components/GoldDust.tsx
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
"use client";
|
||||||
|
import { useEffect, useRef } from "react";
|
||||||
|
|
||||||
|
// One restrained backdrop: slow-drifting gold dust motes on a 2D canvas.
|
||||||
|
// Sits behind content, pointer-events:none, capped DPR, paused under reduced motion.
|
||||||
|
export default function GoldDust() {
|
||||||
|
const ref = useRef<HTMLCanvasElement | null>(null);
|
||||||
|
useEffect(() => {
|
||||||
|
const canvas = ref.current;
|
||||||
|
if (!canvas) return;
|
||||||
|
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
|
||||||
|
const ctx = canvas.getContext("2d", { alpha: true });
|
||||||
|
if (!ctx) return;
|
||||||
|
const dpr = Math.min(window.devicePixelRatio || 1, 1.5);
|
||||||
|
let w = 0, h = 0, raf = 0, last = 0;
|
||||||
|
type Mote = { x: number; y: number; r: number; a: number; vy: number; vx: number; tw: number };
|
||||||
|
let motes: Mote[] = [];
|
||||||
|
const rand = (a: number, b: number) => a + Math.random() * (b - a);
|
||||||
|
const build = () => {
|
||||||
|
w = canvas.clientWidth; h = canvas.clientHeight;
|
||||||
|
canvas.width = Math.round(w * dpr); canvas.height = Math.round(h * dpr);
|
||||||
|
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||||||
|
const count = Math.min(70, Math.round((w * h) / 26000));
|
||||||
|
motes = Array.from({ length: count }, () => ({
|
||||||
|
x: rand(0, w), y: rand(0, h), r: rand(0.5, 2.1),
|
||||||
|
a: rand(0.05, 0.5), vy: rand(-6, -2), vx: rand(-2, 2), tw: rand(0, Math.PI * 2),
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
const draw = (t: number) => {
|
||||||
|
const dt = last ? Math.min((t - last) / 1000, 0.05) : 0.016; last = t;
|
||||||
|
ctx.clearRect(0, 0, w, h);
|
||||||
|
for (const m of motes) {
|
||||||
|
m.y += m.vy * dt; m.x += m.vx * dt; m.tw += dt * 1.4;
|
||||||
|
if (m.y < -4) { m.y = h + 4; m.x = rand(0, w); }
|
||||||
|
if (m.x < -4) m.x = w + 4; else if (m.x > w + 4) m.x = -4;
|
||||||
|
const alpha = m.a * (0.55 + 0.45 * Math.sin(m.tw));
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.arc(m.x, m.y, m.r, 0, Math.PI * 2);
|
||||||
|
ctx.fillStyle = `rgba(201, 162, 39, ${alpha})`;
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
raf = requestAnimationFrame(draw);
|
||||||
|
};
|
||||||
|
build();
|
||||||
|
raf = requestAnimationFrame(draw);
|
||||||
|
let to: ReturnType<typeof setTimeout>;
|
||||||
|
const onResize = () => { clearTimeout(to); to = setTimeout(build, 200); };
|
||||||
|
window.addEventListener("resize", onResize);
|
||||||
|
return () => { cancelAnimationFrame(raf); window.removeEventListener("resize", onResize); clearTimeout(to); };
|
||||||
|
}, []);
|
||||||
|
return <canvas ref={ref} className="gold-dust" aria-hidden="true" />;
|
||||||
|
}
|
||||||
9
src/components/LegacyHashBridge.tsx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
"use client";
|
||||||
|
import { useEffect } from "react";
|
||||||
|
export default function LegacyHashBridge() {
|
||||||
|
useEffect(() => {
|
||||||
|
const hash = window.location.hash.replace(/^#\/?/, "/");
|
||||||
|
if (hash !== "/" && hash.startsWith("/")) window.location.replace(hash);
|
||||||
|
}, []);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
80
src/components/MarketingPage.tsx
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { content, pages, type SeoPage } from "@/lib/content";
|
||||||
|
import PageJsonLd from "@/components/PageJsonLd";
|
||||||
|
import TrackedHubSpotForm from "@/components/TrackedHubSpotForm";
|
||||||
|
import Breadcrumbs from "@/components/Breadcrumbs";
|
||||||
|
import Reveal from "@/components/Reveal";
|
||||||
|
|
||||||
|
export default function MarketingPage({ page }: { page: SeoPage }) {
|
||||||
|
const related = page.relatedPaths.filter((item) => item !== page.path).map((item) => pages.find((candidate) => candidate.path === item)).filter(Boolean) as SeoPage[];
|
||||||
|
const articles = page.isBlogHub ? pages.filter((item) => item.category === "blog") : [];
|
||||||
|
const serviceChildren = page.path === "/services" ? pages.filter((item) => item.category === "service") : [];
|
||||||
|
const media = (content as { videos?: { caseStudiesHeading?: string; testimonialsHeading?: string; caseStudies?: { vimeoId: string; title: string; stat: string }[]; testimonials?: { name: string; vimeoId: string }[] } }).videos;
|
||||||
|
const gallery = (content as { creatorGallery?: { heading?: string; items?: { src: string; alt: string }[] } }).creatorGallery;
|
||||||
|
const heroHome = (content as { heroHome?: { ctaPrimary?: { label: string; href: string }; ctaSecondary?: { label: string; href: string }; badges?: string[]; statChip?: { value: string; label: string } } }).heroHome;
|
||||||
|
const stats = (content as { stats?: { ariaLabel?: string; items?: { value: string; label: string }[] } }).stats;
|
||||||
|
const asideFacts = (content as { asideFacts?: string[] }).asideFacts;
|
||||||
|
const isHome = page.path === "/";
|
||||||
|
return <>
|
||||||
|
<PageJsonLd page={page} />
|
||||||
|
<article className="page-shell">
|
||||||
|
<Breadcrumbs page={page} />
|
||||||
|
<header className="hero">
|
||||||
|
<div className="hero-frame">
|
||||||
|
<div className="hero-copy">
|
||||||
|
<p className="eyebrow">{page.keyword}</p>
|
||||||
|
<h1>{page.h1}</h1>
|
||||||
|
<div className="answer-card">
|
||||||
|
<strong>{content.labels.directAnswer}</strong>
|
||||||
|
<p>{page.summary}</p>
|
||||||
|
</div>
|
||||||
|
{isHome && heroHome ? <>
|
||||||
|
<div className="hero-ctas">
|
||||||
|
{heroHome.ctaPrimary ? <Link className="button button-hero" href={heroHome.ctaPrimary.href}>{heroHome.ctaPrimary.label}</Link> : null}
|
||||||
|
{heroHome.ctaSecondary ? <Link className="button button-ghost" href={heroHome.ctaSecondary.href}>{heroHome.ctaSecondary.label}</Link> : null}
|
||||||
|
</div>
|
||||||
|
{heroHome.badges?.length ? <ul className="hero-badges">{heroHome.badges.map((badge) => <li key={badge}>{badge}</li>)}</ul> : null}
|
||||||
|
</> : null}
|
||||||
|
</div>
|
||||||
|
<div className="hero-media">
|
||||||
|
<Image className="hero-image" src={page.image} alt={page.alt} width={1200} height={675} priority={page.path === "/"} sizes="(max-width: 960px) 100vw, 52vw" />
|
||||||
|
<span className="hero-corner hero-corner-tl" aria-hidden="true" />
|
||||||
|
<span className="hero-corner hero-corner-br" aria-hidden="true" />
|
||||||
|
{isHome && heroHome?.statChip ? <p className="hero-chip"><strong>{heroHome.statChip.value}</strong><span>{heroHome.statChip.label}</span></p> : null}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{isHome && stats?.items?.length ? <section className="stats-band" aria-label={stats.ariaLabel}>
|
||||||
|
{stats.items.map((stat) => <div key={stat.label} className="stat-tile"><strong>{stat.value}</strong><span>{stat.label}</span></div>)}
|
||||||
|
</section> : null}
|
||||||
|
<div className="content-grid">
|
||||||
|
<main className="article-body">
|
||||||
|
{page.sections.map((section) => <Reveal as="section" key={section.heading} className="prose-section"><h2>{section.heading}</h2><p>{section.body}</p>{section.steps?.length ? <ol>{section.steps.map((item) => <li key={item}>{item}</li>)}</ol> : null}{section.items?.length ? <ul>{section.items.map((item) => <li key={item}>{item}</li>)}</ul> : null}</Reveal>)}
|
||||||
|
{serviceChildren.length > 0 && <section className="collection"><h2>{content.labels.services}</h2><div className="card-grid">{serviceChildren.map((service) => <Link key={service.path} className="content-card" href={service.path}><span>{service.keyword}</span><h3>{service.h1}</h3><p>{service.summary}</p><strong className="card-cta">{content.labels.read} →</strong></Link>)}</div></section>}
|
||||||
|
{articles.length > 0 && <section className="collection"><h2>{content.labels.browse}</h2><div className="card-grid">{articles.map((article) => <Link key={article.path} className="content-card" href={article.path}><span>{article.keyword}</span><h3>{article.h1}</h3><p>{article.summary}</p><strong className="card-cta">{content.labels.read} →</strong></Link>)}</div></section>}
|
||||||
|
{page.faq.length > 0 && <section className="faq-block"><h2>{content.labels.questions}</h2><div className="faq-list">{page.faq.map((item) => <details key={item.question}><summary>{item.question}</summary><p>{item.answer}</p></details>)}</div></section>}
|
||||||
|
{page.citations.length > 0 && <section className="sources-block"><h2>{content.labels.sources}</h2><ul className="sources">{page.citations.map((item) => <li key={item.url}><a href={item.url} rel="noopener noreferrer">{item.label}</a></li>)}</ul></section>}
|
||||||
|
<section className="page-trust">
|
||||||
|
<p className="provenance">{content.labels.authoredBy}: <strong>{page.author ?? content.site.legalEntity.managingDirector}</strong>, {content.site.name} · {content.labels.updated}: <time dateTime={page.dateModified}>{page.dateModified}</time></p>
|
||||||
|
<p className="ymyl-note">{content.labels.ymyl}</p>
|
||||||
|
<p className="reviews-link">{content.labels.reviewsLabel}: {content.site.reviews.map((href, i) => <span key={href}>{i > 0 ? " · " : ""}<a className="review-link" href={href} rel="noopener noreferrer">{new URL(href).hostname.replace(/^www\./, "")}</a></span>)}</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<aside className="cta-panel">
|
||||||
|
<div className="cta-panel-inner">
|
||||||
|
<span className="cta-flourish" aria-hidden="true" />
|
||||||
|
<h2>{content.labels.cta}</h2>
|
||||||
|
<p>{content.labels.ctaBody}</p>
|
||||||
|
<TrackedHubSpotForm siteCode={content.site.code} category={page.category} language={content.site.locale} loadLabel={content.labels.cta} />
|
||||||
|
{asideFacts?.length ? <ul className="aside-facts">{asideFacts.map((fact) => <li key={fact}>{fact}</li>)}</ul> : null}
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
{isHome && media?.caseStudies?.length ? <section className="case-studies"><h2>{media.caseStudiesHeading}</h2><p className="case-proof">{media.caseStudies.map((item) => item.title).join(". ")}.</p><div className="case-grid">{media.caseStudies.map((cs) => <figure key={cs.vimeoId} className="case-card"><div className="video-embed"><iframe src={`https://player.vimeo.com/video/${cs.vimeoId}`} title={cs.title} loading="lazy" allow="fullscreen; picture-in-picture" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen></iframe></div><figcaption><strong>{cs.stat}</strong><span>{cs.title}</span></figcaption></figure>)}</div></section> : null}
|
||||||
|
{isHome && gallery?.items?.length ? <section className="creator-gallery"><h2>{gallery.heading}</h2><div className="gallery-grid">{gallery.items.map((g) => <figure key={g.src} className="gallery-item"><Image className="gallery-img" src={g.src} alt={g.alt} width={900} height={1200} loading="lazy" sizes="(max-width: 700px) 45vw, 220px" /></figure>)}</div></section> : null}
|
||||||
|
{media?.testimonials?.length ? <section className="testimonials"><h2>{media.testimonialsHeading}</h2><div className="testi-grid">{media.testimonials.map((t) => <figure key={t.vimeoId} className="testi-card"><div className="video-embed"><iframe src={`https://player.vimeo.com/video/${t.vimeoId}`} title={t.name} loading="lazy" allow="fullscreen; picture-in-picture" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen></iframe></div><figcaption>{t.name}</figcaption></figure>)}</div></section> : null}
|
||||||
|
{related.length > 0 && <section className="related"><h2>{content.labels.related}</h2><div className="related-grid">{related.map((item) => <Link key={item.path} href={item.path}><span>{item.keyword}</span><strong>{item.h1}</strong></Link>)}</div></section>}
|
||||||
|
</article>
|
||||||
|
</>;
|
||||||
|
}
|
||||||
49
src/components/MobileNav.tsx
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
"use client";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
|
export default function MobileNav({ items, applyLabel }: { items: [string, string][]; applyLabel: string }) {
|
||||||
|
const [open, setOpen] = useState(false);
|
||||||
|
const panelRef = useRef<HTMLDivElement | null>(null);
|
||||||
|
const btnRef = useRef<HTMLButtonElement | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!open) return;
|
||||||
|
const onKey = (e: KeyboardEvent) => { if (e.key === "Escape") { setOpen(false); btnRef.current?.focus(); } };
|
||||||
|
document.addEventListener("keydown", onKey);
|
||||||
|
document.body.style.overflow = "hidden";
|
||||||
|
const first = panelRef.current?.querySelector<HTMLElement>("a,button");
|
||||||
|
first?.focus();
|
||||||
|
return () => { document.removeEventListener("keydown", onKey); document.body.style.overflow = ""; };
|
||||||
|
}, [open]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mnav">
|
||||||
|
<button
|
||||||
|
ref={btnRef}
|
||||||
|
type="button"
|
||||||
|
className="mnav-toggle"
|
||||||
|
aria-expanded={open}
|
||||||
|
aria-controls="mobile-nav-panel"
|
||||||
|
aria-label={open ? "Chiudi il menu" : "Apri il menu"}
|
||||||
|
onClick={() => setOpen((v) => !v)}
|
||||||
|
>
|
||||||
|
<span className={`mnav-bars${open ? " is-open" : ""}`} aria-hidden="true"><i /><i /><i /></span>
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
id="mobile-nav-panel"
|
||||||
|
ref={panelRef}
|
||||||
|
className={`mnav-panel${open ? " is-open" : ""}`}
|
||||||
|
hidden={!open}
|
||||||
|
>
|
||||||
|
<nav aria-label="Menu mobile">
|
||||||
|
{items.map(([href, label]) => (
|
||||||
|
<Link key={href} href={href} onClick={() => setOpen(false)}>{label}</Link>
|
||||||
|
))}
|
||||||
|
<Link className="mnav-cta" href="/apply" onClick={() => setOpen(false)}>{applyLabel}</Link>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
{open && <button className="mnav-scrim" aria-hidden="true" tabIndex={-1} onClick={() => setOpen(false)} />}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
61
src/components/PageJsonLd.tsx
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import { absoluteUrl, content, type SeoPage } from "@/lib/content";
|
||||||
|
import { breadcrumbPages } from "@/components/Breadcrumbs";
|
||||||
|
|
||||||
|
export default function PageJsonLd({ page }: { page: SeoPage }) {
|
||||||
|
const organizationId = absoluteUrl("/#organization");
|
||||||
|
const crumbs = breadcrumbPages(page);
|
||||||
|
const breadcrumb = crumbs.length ? {
|
||||||
|
"@type": "BreadcrumbList",
|
||||||
|
"@id": absoluteUrl(page.path + "#breadcrumb"),
|
||||||
|
itemListElement: [
|
||||||
|
{ "@type": "ListItem", position: 1, name: content.labels.home, item: absoluteUrl("/") },
|
||||||
|
...crumbs.map((crumb, index) => ({ "@type": "ListItem", position: index + 2, name: crumb.h1, item: absoluteUrl(crumb.path) }))
|
||||||
|
]
|
||||||
|
} : null;
|
||||||
|
const main = page.category === "service" ? {
|
||||||
|
"@type": "Service", "@id": absoluteUrl(page.path + "#service"), name: page.h1, description: page.summary,
|
||||||
|
provider: { "@id": organizationId }, areaServed: content.site.market, url: absoluteUrl(page.path)
|
||||||
|
} : page.category === "blog" ? {
|
||||||
|
"@type": "Article", "@id": absoluteUrl(page.path + "#article"), headline: page.h1, description: page.summary,
|
||||||
|
image: absoluteUrl(page.image), datePublished: page.datePublished, dateModified: page.dateModified,
|
||||||
|
author: { "@type": "Person", name: page.author ?? content.site.legalEntity.managingDirector, worksFor: { "@id": organizationId } },
|
||||||
|
reviewedBy: { "@type": "Person", name: page.author ?? content.site.legalEntity.managingDirector },
|
||||||
|
publisher: { "@id": organizationId }, mainEntityOfPage: absoluteUrl(page.path),
|
||||||
|
citation: page.citations.map((item) => item.url)
|
||||||
|
} : {
|
||||||
|
"@type": "WebPage", "@id": absoluteUrl(page.path + "#webpage"), name: page.h1, description: page.summary, url: absoluteUrl(page.path),
|
||||||
|
isPartOf: { "@id": absoluteUrl("/#website") }
|
||||||
|
};
|
||||||
|
const faq = page.faq.length ? {
|
||||||
|
"@type": "FAQPage", "@id": absoluteUrl(page.path + "#faq"),
|
||||||
|
mainEntity: page.faq.map((item) => ({ "@type": "Question", name: item.question, acceptedAnswer: { "@type": "Answer", text: item.answer } }))
|
||||||
|
} : null;
|
||||||
|
const media = (content as { videos?: {
|
||||||
|
caseStudies?: { vimeoId: string; title: string; stat: string; uploadDate?: string; thumbnailUrl?: string }[];
|
||||||
|
testimonials?: { name: string; vimeoId: string; uploadDate?: string; thumbnailUrl?: string }[];
|
||||||
|
} }).videos;
|
||||||
|
const videos = page.path === "/" ? [
|
||||||
|
...(media?.caseStudies ?? []).map((item) => ({
|
||||||
|
"@type": "VideoObject",
|
||||||
|
"@id": absoluteUrl(`/#video-${item.vimeoId}`),
|
||||||
|
name: item.title,
|
||||||
|
description: `${item.title}. Documented result: ${item.stat}.`,
|
||||||
|
thumbnailUrl: item.thumbnailUrl,
|
||||||
|
uploadDate: item.uploadDate,
|
||||||
|
embedUrl: `https://player.vimeo.com/video/${item.vimeoId}`,
|
||||||
|
publisher: { "@id": organizationId },
|
||||||
|
})),
|
||||||
|
...(media?.testimonials ?? []).map((item) => ({
|
||||||
|
"@type": "VideoObject",
|
||||||
|
"@id": absoluteUrl(`/#video-${item.vimeoId}`),
|
||||||
|
name: `${item.name} testimonial`,
|
||||||
|
description: `${item.name} shares a video testimonial about working with Bunny Agency.`,
|
||||||
|
thumbnailUrl: item.thumbnailUrl,
|
||||||
|
uploadDate: item.uploadDate,
|
||||||
|
embedUrl: `https://player.vimeo.com/video/${item.vimeoId}`,
|
||||||
|
publisher: { "@id": organizationId },
|
||||||
|
})),
|
||||||
|
] : [];
|
||||||
|
const graph = [main, ...(breadcrumb ? [breadcrumb] : []), ...(faq ? [faq] : []), ...videos];
|
||||||
|
return <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify({ "@context": "https://schema.org", "@graph": graph }).replace(/</g, "\\u003c") }} />;
|
||||||
|
}
|
||||||
20
src/components/Reveal.tsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
"use client";
|
||||||
|
import { useEffect, useRef, type ReactNode } from "react";
|
||||||
|
|
||||||
|
export default function Reveal({ children, className = "", as = "div" }: { children: ReactNode; className?: string; as?: "div" | "section" }) {
|
||||||
|
const ref = useRef<HTMLElement | null>(null);
|
||||||
|
useEffect(() => {
|
||||||
|
const el = ref.current;
|
||||||
|
if (!el) return;
|
||||||
|
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) { el.classList.add("is-in"); return; }
|
||||||
|
const io = new IntersectionObserver((entries) => {
|
||||||
|
for (const e of entries) {
|
||||||
|
if (e.isIntersecting) { (e.target as HTMLElement).classList.add("is-in"); io.unobserve(e.target); }
|
||||||
|
}
|
||||||
|
}, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
|
||||||
|
io.observe(el);
|
||||||
|
return () => io.disconnect();
|
||||||
|
}, []);
|
||||||
|
const Tag = as;
|
||||||
|
return <Tag ref={ref as never} className={`reveal ${className}`}>{children}</Tag>;
|
||||||
|
}
|
||||||
86
src/components/SiteChrome.tsx
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { content } from "@/lib/content";
|
||||||
|
import MobileNav from "@/components/MobileNav";
|
||||||
|
|
||||||
|
export function SiteHeader() {
|
||||||
|
const labels = content.labels as typeof content.labels & { pricing?: string; navBlog?: string };
|
||||||
|
const nav: [string, string][] = [["/", labels.home], ["/services", labels.services], ["/pricing", labels.pricing ?? "Prezzi"], ["/blog", labels.navBlog ?? labels.blog], ["/about", labels.about], ["/apply", labels.apply]];
|
||||||
|
return (
|
||||||
|
<header className="site-header">
|
||||||
|
<div className="site-header-inner">
|
||||||
|
<Link className="brand" href="/">
|
||||||
|
<span className="brand-mark" aria-hidden="true">BA</span>
|
||||||
|
<span className="brand-name">{content.site.name}</span>
|
||||||
|
</Link>
|
||||||
|
<nav className="site-nav" aria-label="Primary">
|
||||||
|
{nav.map(([href, label]) => (
|
||||||
|
<Link key={href} href={href} className={href === "/apply" ? "nav-cta" : "nav-link"}>{label}</Link>
|
||||||
|
))}
|
||||||
|
</nav>
|
||||||
|
<MobileNav items={nav} applyLabel={content.labels.apply} />
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
type NetworkItem = { hreflang: string; lang: string; label: string; url: string; current?: boolean };
|
||||||
|
|
||||||
|
export function SiteFooter() {
|
||||||
|
const labels = content.labels as typeof content.labels & { pricing?: string; navBlog?: string };
|
||||||
|
const network = (content as { network?: { heading?: string; note?: string; items?: NetworkItem[] } }).network;
|
||||||
|
return (
|
||||||
|
<footer className="site-footer">
|
||||||
|
<div className="site-footer-inner">
|
||||||
|
<div className="footer-identity">
|
||||||
|
<Image src="/images/seo/site-identity.webp" alt={content.site.identityAlt} width={480} height={270} sizes="240px" />
|
||||||
|
<strong className="footer-name">{content.site.name}</strong>
|
||||||
|
<p className="footer-market">{content.site.market} · {content.site.locale}</p>
|
||||||
|
<p className="footer-tagline">{content.site.description}</p>
|
||||||
|
</div>
|
||||||
|
<nav className="footer-col" aria-label="Site">
|
||||||
|
<strong className="footer-col-title">{labels.services}</strong>
|
||||||
|
<Link href="/">{labels.home}</Link>
|
||||||
|
<Link href="/services">{labels.services}</Link>
|
||||||
|
<Link href="/pricing">{labels.pricing ?? "Prezzi"}</Link>
|
||||||
|
<Link href="/blog">{labels.navBlog ?? labels.blog}</Link>
|
||||||
|
<Link href="/faq">{labels.faq}</Link>
|
||||||
|
<Link href="/about">{labels.about}</Link>
|
||||||
|
<Link href="/apply">{labels.apply}</Link>
|
||||||
|
</nav>
|
||||||
|
<nav className="footer-col" aria-label="Legal">
|
||||||
|
<strong className="footer-col-title">{(content.core as { imprintH1?: string }).imprintH1 ?? "Legal"}</strong>
|
||||||
|
<Link href="/privacy-policy">{content.core.privacyH1}</Link>
|
||||||
|
<Link href="/terms-of-service">{content.core.termsH1}</Link>
|
||||||
|
<Link href="/cookie-policy">{content.core.cookiesH1}</Link>
|
||||||
|
<Link href="/imprint">{(content.core as { imprintH1?: string }).imprintH1 ?? "Imprint"}</Link>
|
||||||
|
<Link href="/disclaimer">{(content.core as { disclaimerH1?: string }).disclaimerH1 ?? "Disclaimer"}</Link>
|
||||||
|
<Link href="/contact">{content.labels.contact}</Link>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
{network?.items?.length ? (
|
||||||
|
<section className="footer-network" aria-labelledby="footer-network-heading">
|
||||||
|
<div className="footer-network-inner">
|
||||||
|
<div className="footer-network-head">
|
||||||
|
<strong className="footer-col-title" id="footer-network-heading">{network.heading}</strong>
|
||||||
|
{network.note ? <span className="footer-network-note">{network.note}</span> : null}
|
||||||
|
</div>
|
||||||
|
<ul className="lang-list">
|
||||||
|
{network.items.map((item) => (
|
||||||
|
<li key={item.url}>
|
||||||
|
{item.current
|
||||||
|
? <span className="lang-current" aria-current="true" lang={item.lang}>{item.label}</span>
|
||||||
|
: <a href={item.url} hrefLang={item.hreflang} lang={item.lang} rel="alternate noopener">{item.label}</a>}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
) : null}
|
||||||
|
<div className="footer-bottom">
|
||||||
|
<p className="legal-entity">{content.site.legalEntity.name} · {content.site.legalEntity.managingDirector}, {content.site.legalEntity.managingDirectorRole} · <a href={"mailto:" + content.site.legalEntity.email}>{content.site.legalEntity.email}</a></p>
|
||||||
|
<p className="footer-reviews">{content.labels.reviewsLabel}: {content.site.reviews.map((href, i) => <span key={href}>{i > 0 ? " · " : ""}<a href={href} rel="noopener noreferrer">{new URL(href).hostname.replace(/^www\./, "")}</a></span>)}</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
);
|
||||||
|
}
|
||||||
71
src/components/SiteJsonLd.tsx
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import { absoluteUrl, content } from "@/lib/content";
|
||||||
|
|
||||||
|
type Testimonial = { name: string; vimeoId: string };
|
||||||
|
|
||||||
|
export default function SiteJsonLd() {
|
||||||
|
const site = content.site as typeof content.site & {
|
||||||
|
alternateNames: string[];
|
||||||
|
foundingDate: string;
|
||||||
|
knowsAbout: string[];
|
||||||
|
schemaSameAs: string[];
|
||||||
|
aggregateRating: { ratingValue: number; reviewCount: number; bestRating: number; verifiedAt: string; source: string };
|
||||||
|
};
|
||||||
|
const videos = (content as { videos?: { testimonials?: Testimonial[] } }).videos;
|
||||||
|
const organizationId = absoluteUrl("/#organization");
|
||||||
|
const organization = {
|
||||||
|
"@type": "Organization",
|
||||||
|
"@id": organizationId,
|
||||||
|
name: site.name,
|
||||||
|
alternateName: site.alternateNames,
|
||||||
|
legalName: site.legalEntity.name,
|
||||||
|
url: absoluteUrl("/"),
|
||||||
|
logo: "https://bunny-agency.com/wp-content/uploads/2021/12/only-fans-managemnt-logo.webp",
|
||||||
|
image: absoluteUrl("/images/seo/site-identity.webp"),
|
||||||
|
description: site.description,
|
||||||
|
foundingDate: site.foundingDate,
|
||||||
|
areaServed: site.market,
|
||||||
|
knowsAbout: site.knowsAbout,
|
||||||
|
knowsLanguage: site.locale,
|
||||||
|
email: site.legalEntity.email,
|
||||||
|
parentOrganization: { "@id": "https://bunny-agency.com/#organization", name: "Bunny Agency" },
|
||||||
|
address: {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
streetAddress: site.legalEntity.streetAddress,
|
||||||
|
addressLocality: site.legalEntity.addressLocality,
|
||||||
|
addressRegion: site.legalEntity.addressRegion,
|
||||||
|
postalCode: site.legalEntity.postalCode,
|
||||||
|
addressCountry: site.legalEntity.addressCountry,
|
||||||
|
},
|
||||||
|
contactPoint: { "@type": "ContactPoint", contactType: "customer support", email: site.legalEntity.email },
|
||||||
|
founder: {
|
||||||
|
"@type": "Person",
|
||||||
|
name: site.legalEntity.managingDirector,
|
||||||
|
jobTitle: site.legalEntity.managingDirectorRole,
|
||||||
|
sameAs: "https://www.linkedin.com/in/sophia-brecht-b07072355/",
|
||||||
|
},
|
||||||
|
employee: content.people.map((person) => ({ "@type": "Person", name: person.name, jobTitle: person.role })),
|
||||||
|
sameAs: site.schemaSameAs,
|
||||||
|
aggregateRating: {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
ratingValue: site.aggregateRating.ratingValue,
|
||||||
|
reviewCount: site.aggregateRating.reviewCount,
|
||||||
|
bestRating: site.aggregateRating.bestRating,
|
||||||
|
worstRating: 1,
|
||||||
|
url: site.aggregateRating.source,
|
||||||
|
},
|
||||||
|
review: (videos?.testimonials ?? []).map((testimonial) => ({
|
||||||
|
"@type": "Review",
|
||||||
|
author: { "@type": "Person", name: testimonial.name },
|
||||||
|
reviewBody: `${testimonial.name} video testimonial about working with Bunny Agency.`,
|
||||||
|
url: `https://player.vimeo.com/video/${testimonial.vimeoId}`,
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
const graph = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@graph": [
|
||||||
|
organization,
|
||||||
|
{ "@type": "WebSite", "@id": absoluteUrl("/#website"), name: site.name, url: absoluteUrl("/"), publisher: { "@id": organizationId }, inLanguage: site.locale },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
return <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(graph).replace(/</g, "\\u003c") }} />;
|
||||||
|
}
|
||||||
46
src/components/TrackedHubSpotForm.tsx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
"use client";
|
||||||
|
import { useEffect, useId, useRef, useState } from "react";
|
||||||
|
|
||||||
|
declare global { interface Window { hbspt?: { forms: { create: (options: Record<string, unknown>) => void } }; __bunnyHsPromise?: Promise<void> } }
|
||||||
|
|
||||||
|
const loadHubSpot = () => {
|
||||||
|
if (window.hbspt) return Promise.resolve();
|
||||||
|
if (window.__bunnyHsPromise) return window.__bunnyHsPromise;
|
||||||
|
window.__bunnyHsPromise = new Promise((resolve, reject) => {
|
||||||
|
const existing = document.querySelector('script[src*="js.hsforms.net/forms/embed/v2.js"]') as HTMLScriptElement | null;
|
||||||
|
if (existing) { existing.addEventListener("load", () => resolve(), { once: true }); existing.addEventListener("error", reject, { once: true }); return; }
|
||||||
|
const script = document.createElement("script");
|
||||||
|
script.src = "https://js.hsforms.net/forms/embed/v2.js"; script.async = true; script.defer = true;
|
||||||
|
script.onload = () => resolve(); script.onerror = reject; document.head.appendChild(script);
|
||||||
|
});
|
||||||
|
return window.__bunnyHsPromise;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function TrackedHubSpotForm({ siteCode, category, language, loadLabel }: { siteCode: string; category: string; language: string; loadLabel: string }) {
|
||||||
|
const reactId = useId();
|
||||||
|
const targetId = "hubspot-" + reactId.replace(/[^a-zA-Z0-9_-]/g, "");
|
||||||
|
const [enabled, setEnabled] = useState(false);
|
||||||
|
const created = useRef(false);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!enabled || created.current) return;
|
||||||
|
let cancelled = false;
|
||||||
|
loadHubSpot().then(() => {
|
||||||
|
if (cancelled || created.current || !window.hbspt) return;
|
||||||
|
const values = () => ({ source_page_url: window.location.origin + window.location.pathname, source_site: siteCode, source_category: category, source_language: language });
|
||||||
|
const populate = (formLike: unknown) => {
|
||||||
|
const candidate = formLike as { 0?: HTMLFormElement; querySelector?: HTMLFormElement["querySelector"]; appendChild?: HTMLFormElement["appendChild"] };
|
||||||
|
const form = (candidate?.[0] || candidate) as HTMLFormElement | undefined;
|
||||||
|
if (!form?.querySelector || !form?.appendChild) return;
|
||||||
|
Object.entries(values()).forEach(([name, value]) => {
|
||||||
|
let input = form.querySelector('input[name="' + name + '"]') as HTMLInputElement | null;
|
||||||
|
if (!input) { input = document.createElement("input"); input.type = "hidden"; input.name = name; form.appendChild(input); }
|
||||||
|
input.value = value; input.dispatchEvent(new Event("input", { bubbles: true })); input.dispatchEvent(new Event("change", { bubbles: true }));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
window.hbspt.forms.create({ portalId: "20396287", formId: "c4228166-c0cf-4215-b4d6-f345254e2225", region: "na1", target: "#" + targetId, onFormReady: populate, onBeforeFormSubmit: populate });
|
||||||
|
created.current = true;
|
||||||
|
}).catch(() => { created.current = false; });
|
||||||
|
return () => { cancelled = true; };
|
||||||
|
}, [enabled, targetId, siteCode, category, language]);
|
||||||
|
return <div className="tracked-form">{!enabled && <button className="button button-primary" type="button" onClick={() => setEnabled(true)}>{loadLabel}</button>}<div id={targetId} className="hubspot-target" /></div>;
|
||||||
|
}
|
||||||
4381
src/content/site-content.json
Normal file
56
src/lib/content.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import raw from "@/content/site-content.json";
|
||||||
|
import type { Metadata } from "next";
|
||||||
|
|
||||||
|
export type FaqItem = { question: string; answer: string };
|
||||||
|
export type Citation = { label: string; url: string };
|
||||||
|
export type ContentSection = { heading: string; body: string; items?: string[]; steps?: string[] };
|
||||||
|
export type SeoPage = { path: string; category: string; intent: string; keyword: string; title: string; description: string; h1: string; summary: string; image: string; alt: string; sections: ContentSection[]; faq: FaqItem[]; citations: Citation[]; relatedPaths: string[]; datePublished: string; dateModified: string; indexable: boolean; isBlogHub?: boolean; author?: string; italyOnly?: boolean };
|
||||||
|
export type SiteContent = typeof raw;
|
||||||
|
export const content = raw;
|
||||||
|
export const pages = raw.pages as SeoPage[];
|
||||||
|
export const siteUrl = (process.env.NEXT_PUBLIC_SITE_URL || raw.site.url).replace(/\/+$/, "");
|
||||||
|
export const findPage = (slug?: string[]) => {
|
||||||
|
const pathname = !slug || slug.length === 0 ? "/" : "/" + slug.join("/");
|
||||||
|
return pages.find((page) => page.path === pathname);
|
||||||
|
};
|
||||||
|
export const absoluteUrl = (pathname: string) => siteUrl + (pathname === "/" ? "" : pathname);
|
||||||
|
|
||||||
|
export const metadataForPage = (page: SeoPage): Metadata => {
|
||||||
|
const canonical = absoluteUrl(page.path);
|
||||||
|
const suffix = page.path === "/" ? "" : page.path;
|
||||||
|
// Pages that exist only on this site have no sibling equivalents: emitting the
|
||||||
|
// network hreflang map would point search engines at 404s on every other domain.
|
||||||
|
const languages = page.italyOnly
|
||||||
|
? undefined
|
||||||
|
: {
|
||||||
|
...Object.fromEntries(
|
||||||
|
Object.entries(raw.site.hreflang as Record<string, string>).map(([locale, base]) => [locale, base + suffix])
|
||||||
|
),
|
||||||
|
"x-default": raw.site.hreflangXDefault + suffix,
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
title: page.title,
|
||||||
|
description: page.description,
|
||||||
|
alternates: languages ? { canonical, languages } : { canonical },
|
||||||
|
robots: {
|
||||||
|
index: page.indexable,
|
||||||
|
follow: true,
|
||||||
|
googleBot: { index: page.indexable, follow: true, "max-image-preview": "large", "max-snippet": -1, "max-video-preview": -1 },
|
||||||
|
},
|
||||||
|
openGraph: {
|
||||||
|
title: page.title,
|
||||||
|
description: page.description,
|
||||||
|
url: canonical,
|
||||||
|
siteName: raw.site.name,
|
||||||
|
locale: raw.site.openGraphLocale,
|
||||||
|
type: page.category === "blog" ? "article" : "website",
|
||||||
|
images: [{ url: absoluteUrl(page.image), width: 1200, height: 675, alt: page.alt }],
|
||||||
|
},
|
||||||
|
twitter: { card: "summary_large_image", title: page.title, description: page.description, images: [absoluteUrl(page.image)] },
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const metadataForPath = (pathname: string): Metadata => {
|
||||||
|
const page = pages.find((candidate) => candidate.path === pathname);
|
||||||
|
return page ? metadataForPage(page) : {};
|
||||||
|
};
|
||||||
48
tsconfig.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2017",
|
||||||
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
|
"allowJs": false,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"incremental": true,
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "next"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"./src/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"next-env.d.ts",
|
||||||
|
"src/app/**/*.ts",
|
||||||
|
"src/app/**/*.tsx",
|
||||||
|
"src/components/MarketingPage.tsx",
|
||||||
|
"src/components/PageJsonLd.tsx",
|
||||||
|
"src/components/TrackedHubSpotForm.tsx",
|
||||||
|
"src/components/SiteChrome.tsx",
|
||||||
|
"src/components/LegacyHashBridge.tsx",
|
||||||
|
"src/lib/**/*.ts",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
".next/dev/types/**/*.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"legacy-src"
|
||||||
|
]
|
||||||
|
}
|
||||||
25
vercel.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://openapi.vercel.sh/vercel.json",
|
||||||
|
"framework": "nextjs",
|
||||||
|
"buildCommand": "npm run build",
|
||||||
|
"installCommand": "npm ci",
|
||||||
|
"regions": ["fra1"],
|
||||||
|
"trailingSlash": false,
|
||||||
|
"github": { "silent": true },
|
||||||
|
"headers": [
|
||||||
|
{
|
||||||
|
"source": "/(.*)",
|
||||||
|
"headers": [
|
||||||
|
{ "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" },
|
||||||
|
{ "key": "X-Content-Type-Options", "value": "nosniff" },
|
||||||
|
{ "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },
|
||||||
|
{ "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=()" },
|
||||||
|
{ "key": "X-Frame-Options", "value": "SAMEORIGIN" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "/images/(.*)",
|
||||||
|
"headers": [{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||