Carbon Ads 集成
Carbon Ads 是一个面向开发者社区的优质广告平台,适合技术类文档站点。本文档介绍如何在 VitePress 中集成 Carbon Ads。
什么是 Carbon Ads
Carbon Ads 的特点:
- 开发者友好:广告内容与开发者相关
- 非侵入式:简洁的广告样式
- 高收益:技术受众价值高
- 易集成:简单的配置流程
快速开始
1. 注册账号
- 访问 Carbon Ads 官网
- 提交站点申请
- 等待审核通过(通常需要几天)
2. 获取配置信息
审核通过后,获取以下信息:
carbon- 你的发布商 IDcustom- 自定义配置(可选)placement- 广告位置标识
配置方式
默认主题集成
VitePress 默认主题内置了 Carbon Ads 支持:
ts
// docs/.vitepress/config.mts
export default defineConfig({
themeConfig: {
carbonAds: {
code: 'your-carbon-code',
placement: 'your-placement-id'
}
}
})完整配置选项
ts
export default defineConfig({
themeConfig: {
carbonAds: {
code: 'CEBICK3I', // 必填:发布商代码
placement: 'vitepressdev', // 必填:广告位置
custom: 'your-custom-data', // 可选:自定义数据
format: 'carbon-responsive', // 可选:广告格式
fallback: 'fallback-code' // 可选:备用广告代码
}
}
})自定义广告位置
添加到页面特定位置
如果需要更多控制,可以自定义广告位置:
vue
<!-- docs/.vitepress/theme/components/CustomCarbonAds.vue -->
<script setup>
import { onMounted, ref } from 'vue'
const props = defineProps({
code: String,
placement: String
})
const containerRef = ref(null)
onMounted(() => {
if (!containerRef.value) return
// 创建 script 元素
const script = document.createElement('script')
script.src = '//cdn.carbonads.com/carbon.js'
script.setAttribute('serve', props.code)
script.setAttribute('placement', props.placement)
script.setAttribute('id', 'carbon-script')
script.async = true
containerRef.value.appendChild(script)
})
</script>
<template>
<div ref="containerRef" class="carbon-ads-container">
<div id="carbon-block"></div>
</div>
</template>
<style>
.carbon-ads-container {
margin: 1rem 0;
min-height: 100px;
}
.carbon-ads-container:empty::after {
content: '广告加载中...';
color: var(--vp-c-text-3);
}
</style>在布局中使用
ts
// docs/.vitepress/theme/index.ts
import DefaultTheme from 'vitepress/theme'
import { h } from 'vue'
import CustomCarbonAds from './components/CustomCarbonAds.vue'
export default {
extends: DefaultTheme,
Layout: () => h(DefaultTheme.Layout, null, {
// 在侧边栏底部显示广告
'sidebar-bottom': () => h(CustomCarbonAds, {
code: 'your-code',
placement: 'your-placement'
}),
// 在文档底部显示广告
'doc-after': () => h(CustomCarbonAds, {
code: 'your-code',
placement: 'your-placement'
})
})
}样式自定义
覆盖默认样式
css
/* docs/.vitepress/theme/custom.css */
/* Carbon Ads 容器 */
.carbon-wrap {
margin: 1rem 0;
padding: 1rem;
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
background: var(--vp-c-bg-soft);
}
/* 广告图片 */
.carbon-img {
float: left;
margin-right: 1rem;
}
.carbon-img img {
border-radius: 4px;
}
/* 广告文字 */
.carbon-text {
color: var(--vp-c-text-2);
font-size: 0.875rem;
}
/* 广告链接 */
.carbon-text:hover {
color: var(--vp-c-brand-1);
}
/* Carbon 标识 */
.carbon-poweredby {
display: block;
margin-top: 0.5rem;
font-size: 0.75rem;
color: var(--vp-c-text-3);
}深色模式适配
css
/* 深色模式下的样式调整 */
html.dark .carbon-wrap {
background: var(--vp-c-bg-alt);
border-color: var(--vp-c-divider-light);
}
html.dark .carbon-text {
color: var(--vp-c-text-1);
}响应式设计
css
/* 移动端适配 */
@media (max-width: 768px) {
.carbon-wrap {
padding: 0.75rem;
}
.carbon-img {
float: none;
margin: 0 0 0.5rem 0;
text-align: center;
}
.carbon-img img {
max-width: 100%;
height: auto;
}
}道德广告政策
确保用户体验
不要过度投放
- 每页最多一个广告
- 避免弹窗式广告
保持内容质量
- 广告不应干扰阅读
- 内容价值高于广告
遵守政策
- 不要点击自己的广告
- 不要要求他人点击
广告屏蔽检测
vue
<script setup>
import { ref, onMounted } from 'vue'
const adBlocked = ref(false)
onMounted(() => {
// 检测广告是否被屏蔽
setTimeout(() => {
const ad = document.querySelector('.carbon-wrap')
if (!ad || ad.offsetHeight === 0) {
adBlocked.value = true
}
}, 2000)
})
</script>
<template>
<div class="carbon-wrap" v-if="!adBlocked">
<!-- Carbon Ads 代码 -->
</div>
<div v-else class="support-notice">
<p>感谢您的支持!如果可以,请将本站加入广告屏蔽白名单。</p>
</div>
</template>收益优化
位置优化
最佳广告位置:
- 侧边栏顶部 - 可见度高
- 文章末尾 - 阅读完成后
- 页面顶部 - 首屏可见
流量优化
- SEO 优化 - 提高搜索流量
- 内容质量 - 吸引忠实读者
- 定期更新 - 保持活跃度
替代方案
如果 Carbon Ads 不适合,可以考虑:
1. BuyMeACoffee
vue
<script setup>
const link = 'https://buymeacoffee.com/yourname'
</script>
<template>
<a :href="link" target="_blank" class="bmc-button">
<img src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg" alt="Buy me a coffee">
<span>请我喝杯咖啡</span>
</a>
</template>
<style>
.bmc-button {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
background: #FFDD00;
border-radius: 8px;
text-decoration: none;
color: #000;
}
</style>2. Ko-fi
vue
<template>
<a href="https://ko-fi.com/yourname" target="_blank" class="kofi-button">
支持作者
</a>
</template>3. Patreon
vue
<template>
<a href="https://patreon.com/yourname" target="_blank" class="patreon-button">
成为赞助者
</a>
</template>常见问题
广告不显示
检查以下项目:
- 代码和 placement 是否正确
- 域名是否已验证
- 浏览器是否屏蔽了广告
收益过低
可能的原因:
- 流量不足
- 受众不匹配
- 广告位置不佳
样式问题
确保 CSS 正确加载:
ts
export default defineConfig({
head: [
['link', { rel: 'stylesheet', href: '/custom.css' }]
]
})相关资源
下一步
了解 插件开发指南 扩展更多功能。