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>
This commit is contained in:
BigMarc 2026-08-02 09:00:28 +02:00
commit 67ea5d48be
98 changed files with 8901 additions and 0 deletions

1
.env.example Normal file
View File

@ -0,0 +1 @@
NEXT_PUBLIC_SITE_URL=https://www.bunny-agency.it

View 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
View File

@ -0,0 +1,7 @@
.next/
node_modules/
.env
.env.local
.vercel/
*.log
.DS_Store

7
.vercelignore Normal file
View File

@ -0,0 +1,7 @@
.git/
.next/
node_modules/
legacy-src/
.env*
*.log
.DS_Store

84
README.md Normal file
View 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
View 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
View 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
View 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
View 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"
}

View File

@ -0,0 +1 @@
cd6b5f316aa84975136f630f3eb1cd02

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View 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"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

989
public/llms-full.txt Normal file
View 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
View 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
View 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`);

View 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
View 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");

View 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

File diff suppressed because it is too large Load Diff

32
src/app/layout.tsx Normal file
View 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
View 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
View 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
View 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 }));
}

View 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>;
}

View 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" />;
}

View 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;
}

View 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>
</>;
}

View 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>
);
}

View 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
View 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>;
}

View 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>
);
}

View 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") }} />;
}

View 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>;
}

File diff suppressed because it is too large Load Diff

56
src/lib/content.ts Normal file
View 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
View 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
View 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" }]
}
]
}