前言:为什么要写技术博客?
先问你一个问题:你写过多少次"Hello World"级别的笔记,然后存在本地某个角落,再也没打开过?
成为一名博主,首先要明白从消费者到生产者的角色转换,技术博客和私人笔记最大的区别在于:博客是写给别人看的,这会逼着你把事情讲清楚,切勿沉迷于"敝帚自珍",要让自己的努力价值最大化。
写博客的好处:
但现实是:
"我写了,没人看啊..."
"SEO是什么?能吃吗?"
"百度怎么搜不到我的文章?"
今天这篇文章,就来解决从内容创作到让人看到的全链路问题。
一、内容建设:写什么和怎么写
1.1 技术博客写什么?
从入门到精通"] T2["🔧 实战类
踩坑与解决方案"] T3["🏗️ 架构类
设计与思考"] T4["📊 对比类
技术选型分析"] T5["🎯 总结类
知识体系梳理"] T6["💡 观点类
行业思考"] end T1 --> V1["适合新手入门
流量最大"] T2 --> V2["SEO友好
解决具体问题"] T3 --> V3["展示深度
吸引同行"] T4 --> V4["实用性强
决策参考"] T5 --> V5["知识沉淀
长期价值"] T6 --> V6["建立影响力
风险也大"]
内容选题建议:
| 类型 | 示例 | 特点 |
|---|---|---|
| 解决问题型 | "MySQL死锁排查实录" | SEO最友好,搜索量大 |
| 教程入门型 | "Docker从入门到放弃" | 流量大,竞争也大 |
| 深度分析型 | "Redis持久化原理剖析" | 展示专业度 |
| 工具推荐型 | "10个提升效率的VS Code插件" | 容易传播 |
| 年度总结型 | "2024年我用过的技术栈" | 人格化,有温度 |
1.2 如何写出好文章?
一篇好的技术文章需要具备以下结构:
为什么要看这篇文章"] WHAT["❓ 是什么
概念解释清楚"] WHY["🤔 为什么
原理讲透"] HOW["⚙️ 怎么做
实操步骤"] PRACTICE["💻 实战
代码示例"] SUMMARY["📝 总结
要点回顾"] end HOOK --> WHAT --> WHY --> HOW --> PRACTICE --> SUMMARY
写作技巧清单:
✅ 开头要有"钩子",让人想继续看
✅ 用类比解释复杂概念(Redis像一个超级快的字典)
✅ 代码要能跑,最好有完整示例
✅ 配图、流程图胜过千言万语
✅ 适当的幽默,但不要喧宾夺主
✅ 文末要有行动指引(参考资料、下一步建议)
❌ 不要复制粘贴官方文档
❌ 不要写流水账(今天我学了xxx)
❌ 不要堆砌术语装X
❌ 不要有明显的技术错误1.3 建立自己的写作风格
以我的"从入门到放弃"系列为例:
从入门到放弃"] S2["统一结构
痛点→原理→实战→避坑"] S3["语言特色
幽默自嘲"] S4["视觉风格
Mermaid图表"] end S1 & S2 & S3 & S4 --> BRAND["形成个人品牌
读者一看就知道是你"]
二、博客搭建:Typecho实战
2.1 为什么选Typecho?
功能强大但臃肿"] HX["Hexo/Hugo
静态博客,速度快"] TE["Typecho
轻量级动态博客"] end TE --> ADV["优势"] subgraph ADV A1["PHP + MySQL
部署简单"] A2["轻量级
500KB核心"] A3["Markdown原生支持"] A4["插件生态丰富"] A5["国内社区活跃"] end
2.2 Typecho必装插件
生成站点地图"] P2["BaiduSubmit
百度主动推送"] P3["Keywords
关键词优化"] P10["TypechoRedisCache
Redis"] end subgraph CONTENT_P["内容增强"] P4["EditorMD
Markdown编辑器"] P5["HighlightJS
代码高亮"] P6["TableOfContents
文章目录"] end subgraph FUNC_P["功能扩展"] P7["CommentToMail
评论邮件通知"] P8["Views
阅读量统计"] P9["Links
友情链接"] end end
(我用的是cuteen插件 + Sitemap + Mermaid + TypechoRedisCache + 百度统计)
TypechoRedisCache下载
插件安装方法:
# 1. 下载插件
cd /path/to/typecho/usr/plugins/
# 2. 解压到plugins目录
unzip Sitemap.zip
# 3. 后台启用
# 访问:后台 → 控制台 → 插件 → 启用2.3 Typecho SEO优化配置
1. 伪静态配置(重要!)
# Nginx配置
location / {
index index.html index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
}
# 开启后,URL从:
# example.com/index.php/archives/123/
# 变成:
# example.com/archives/123.html2. 固定链接设置:
后台 → 设置 → 永久链接 → 启用地址重写
推荐格式:
/archives/{slug}.html # 使用文章别名
或
/posts/{year}/{slug}.html # 带年份
不推荐:
/archives/{cid}.html # 纯数字ID对SEO不友好3. 主题SEO优化(修改header.php):
<head>
<meta charset="<?php $this->options->charset(); ?>">
<!-- SEO三要素 -->
<title><?php $this->archiveTitle([
'category' => _t('分类 %s 下的文章'),
'search' => _t('包含关键字 %s 的文章'),
'tag' => _t('标签 %s 下的文章'),
'author' => _t('%s 发布的文章')
], '', ' - '); ?><?php $this->options->title(); ?></title>
<meta name="description" content="<?php
if ($this->is('single')) {
echo mb_substr(strip_tags($this->content), 0, 150);
} else {
$this->options->description();
}
?>">
<meta name="keywords" content="<?php
if ($this->is('single')) {
$this->tags(',', false);
} else {
echo '大数据,Java,技术博客'; // 默认关键词
}
?>">
<!-- Open Graph(社交分享优化) -->
<meta property="og:title" content="<?php $this->title(); ?>">
<meta property="og:description" content="<?php echo mb_substr(strip_tags($this->content), 0, 150); ?>">
<meta property="og:type" content="article">
<meta property="og:url" content="<?php $this->permalink(); ?>">
<!-- 移动端适配 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- RSS订阅发现 -->
<link rel="alternate" type="application/rss+xml"
title="<?php $this->options->title(); ?>"
href="<?php $this->options->feedUrl(); ?>">
<!-- Sitemap -->
<link rel="sitemap" type="application/xml"
title="Sitemap" href="/sitemap.xml">
</head>三、SEO优化:让搜索引擎找到你
3.1 SEO核心原理
Spider访问你的网站"] INDEX["📇 建立索引
分析内容,存入数据库"] RANK["📊 排名算法
根据相关性、权重排序"] SHOW["📱 结果展示
用户看到搜索结果"] end CRAWL --> INDEX --> RANK --> SHOW subgraph YOU["你能做的"] Y1["让爬虫能抓到
Sitemap/Robots"] Y2["让内容被理解
标题/描述/结构"] Y3["提升权重
外链/内链/原创"] end Y1 --> CRAWL Y2 --> INDEX Y3 --> RANK
3.2 Sitemap配置
Sitemap是告诉搜索引擎"我的网站有哪些页面"的地图。
Typecho Sitemap插件配置:
// 插件会自动生成 /sitemap.xml
// 内容类似:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2024-01-01</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/archives/hello-world.html</loc>
<lastmod>2024-01-15</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>手动提交Sitemap:
| 搜索引擎 | 提交地址 |
|---|---|
| Google Search Console | |
| 百度 | 百度搜索资源平台 |
| Bing | Bing Webmaster Tools |
3.3 Robots.txt配置
# /robots.txt - 告诉爬虫哪些能抓,哪些不能抓
User-agent: *
# 允许抓取
Allow: /
Allow: /archives/
Allow: /category/
Allow: /tag/
# 禁止抓取(隐私/无价值页面)
Disallow: /admin/
Disallow: /usr/
Disallow: /var/
Disallow: /*?* # 禁止带参数的URL
Disallow: /archives/*.html?* # 禁止文章页带参数
# Sitemap位置
Sitemap: https://example.com/sitemap.xml3.4 百度SEO专项优化
百度和Google的爬虫行为不同,需要专门优化:
API实时推送新文章"] B2["自动推送
JS代码触发"] B3["Sitemap提交
定期更新"] B4["MIP/AMP
移动端加速"] end B1 --> FAST["收录更快"] B2 --> AUTO["无需手动"] B3 --> FULL["全面覆盖"] B4 --> MOBILE["移动端排名↑"]
百度主动推送代码(Typecho插件或手动实现):
<?php
// 文章发布后自动推送给百度
function pushToBaidu($url) {
$api = 'http://data.zz.baidu.com/urls?site=example.com&token=你的token';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/plain']);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
// 在文章发布钩子中调用
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = function($contents, $obj) {
$permalink = $obj->permalink;
pushToBaidu($permalink);
};百度自动推送JS(放在页面底部):
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>3.5 SEO检查清单
且不超过60字符"] C2["✅ Meta Description
150字符内的吸引描述"] C3["✅ URL简短易读
包含关键词拼音/英文"] C4["✅ H1标签唯一
且包含关键词"] C5["✅ 图片有Alt属性"] C6["✅ 内链指向相关文章"] end subgraph SITE["站点级别"] S1["✅ Sitemap已提交"] S2["✅ Robots.txt正确"] S3["✅ HTTPS已启用"] S4["✅ 移动端适配"] S5["✅ 页面加载<3秒"] S6["✅ 404页面友好"] end end
四、RSS订阅:让读者追着你
4.1 RSS是什么?
/feed/"] FEED --> R1["RSS阅读器
Feedly/Inoreader"] FEED --> R2["即刻/轻芒"] FEED --> R3["邮件订阅服务"] FEED --> R4["其他聚合平台"] R1 & R2 & R3 & R4 --> USER["订阅用户
自动收到新文章"]
RSS的价值:
| 对博主 | 对读者 |
|---|---|
| 沉淀忠实读者 | 不错过更新 |
| 不依赖平台算法 | 信息聚合 |
| 被聚合平台收录 | 高效阅读 |
4.2 Typecho RSS配置
Typecho默认支持RSS,访问地址:
# 全站RSS
https://example.com/feed/
# 分类RSS
https://example.com/feed/category/技术/
# 标签RSS
https://example.com/feed/tag/Java/
# 评论RSS
https://example.com/feed/comments/优化RSS输出(修改functions.php):
<?php
// 在RSS中输出全文而非摘要
function themeInit($archive) {
if ($archive->is('feed')) {
$archive->parameter->component = 'archive';
}
}
// RSS添加版权声明
function feedContentFilter($content, $widget, $lastResult) {
$copy = '<p>本文来自:' . $widget->options->siteUrl . '</p>';
$copy .= '<p>原文链接:' . $widget->permalink . '</p>';
return $content . $copy;
}
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = 'feedContentFilter';4.3 RSS推广渠道
创建主题,绑定RSS"] C2["📰 今日热榜
提交博客"] C3["🔗 BlogHub
中文博客聚合"] C4["📧 Follow
RSS订阅平台"] C5["🌐 十年之约
独立博客圈"] end C1 & C2 & C3 & C4 & C5 --> TRAFFIC["流量来源"]
推荐提交的平台:
| 平台 | 地址 | 说明 |
|---|---|---|
| BlogHub | bloghub.fun | 中文独立博客聚合 |
| 十年之约 | foreverblog.cn | 博客圈互访 |
| 积薪 | firewood.news | 中文独立博客 |
| RSS Source | rss-source.com | RSS订阅源收录 |
五、引流推广:酒香也怕巷子深
5.1 引流渠道矩阵
5.2 技术社区运营策略
同步发布策略:
首发自己博客"] --> SYNC["同步到各平台"] SYNC --> JJ["掘金
标注原文链接"] SYNC --> CSDN["CSDN
设置原创"] SYNC --> CNB["博客园
标注出处"] JJ & CSDN & CNB --> BACK["引流回博客"] subgraph TIPS["注意事项"] T1["首发博客,等收录后再同步"] T2["同步时标注原文链接"] T3["各平台标题可略作调整"] end
各平台特点:
| 平台 | 特点 | 适合内容 |
|---|---|---|
| 掘金 | 前端氛围浓,有推荐机制 | 前端、工具推荐 |
| CSDN | 百度收录好,流量大 | 教程、解决方案 |
| 博客园 | 技术纯粹,.NET氛围 | 深度技术文章 |
| 知乎 | 问答形式,长尾流量 | 系统性知识 |
| V2EX | 程序员社区,讨论热烈 | 观点、工具分享 |
5.3 知乎引流技巧
搜索你文章的关键词"] ANSWER["回答问题
精简版内容+博客链接"] ARTICLE["发布文章
完整版,标注原文"] COLUMN["开设专栏
系列文章集合"] end FIND --> ANSWER ANSWER --> |"引流效果最好"| BLOG["博客"] ARTICLE --> BLOG COLUMN --> BLOG
知乎回答模板:
[简要回答问题,100-200字]
这个问题我之前写过一篇详细的文章分析:
- xxx原理是什么
- xxx如何配置
- xxx常见问题
篇幅较长,这里放个链接:[文章标题](博客地址)
如果对你有帮助,欢迎点赞收藏~5.4 友链交换
友链是独立博客圈的传统,可以互相引流:
友链页面示例(Typecho独立页面):
<div class="friend-links">
<div class="link-item">
<a href="https://xxx.com" target="_blank">
<img src="avatar.jpg" alt="博客名">
<span>博客名 - 一句话介绍</span>
</a>
</div>
<!-- 更多友链 -->
</div>
<h3>申请友链</h3>
<p>欢迎交换友链,要求:</p>
<ul>
<li>技术类博客</li>
<li>近3个月有更新</li>
<li>已添加本站链接</li>
</ul>
<p>请在评论区留下:博客名称、地址、描述、头像</p>六、数据分析:用数据驱动优化
6.1 统计工具配置
国际标准,功能强大"] BAIDU["百度统计
国内友好,SEO整合"] UMAMI["Umami
开源自建,隐私友好"] BUSUANZI["不蒜子
轻量,仅计数"] end GA --> DATA["数据分析"] BAIDU --> DATA UMAMI --> DATA subgraph DATA D1["访问量PV/UV"] D2["来源渠道"] D3["热门文章"] D4["用户行为"] end
推荐方案:
| 场景 | 推荐 | 原因 |
|---|---|---|
| 国内为主 | 百度统计 | 与百度SEO整合 |
| 海外为主 | Google Analytics | 功能最全 |
| 注重隐私 | Umami自建 | 数据自己掌控 |
| 极简需求 | 不蒜子 | 一行代码搞定 |
不蒜子接入(最简单):
<!-- 在footer添加 -->
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<!-- 显示统计 -->
<span>本站总访问量 <span id="busuanzi_value_site_pv"></span> 次</span>
<span>本站访客数 <span id="busuanzi_value_site_uv"></span> 人</span>
<span>本文阅读量 <span id="busuanzi_value_page_pv"></span> 次</span>6.2 数据分析看什么?
整体是否在增长"] M2["🚪 流量来源
哪个渠道效果好"] M3["🔥 热门文章
什么内容受欢迎"] M4["🔍 搜索词
用户搜什么找到你"] M5["📉 跳出率
内容是否吸引人"] end M1 --> A1["调整发文频率"] M2 --> A2["加大有效渠道投入"] M3 --> A3["多写类似主题"] M4 --> A4["优化相关关键词"] M5 --> A5["改进内容质量"]
6.3 Google Search Console
Google Search Console是SEO必备工具,可以看到:
哪些页面被收录"] GSC --> P2["搜索表现
展示/点击/排名"] GSC --> P3["问题诊断
抓取错误/移动端问题"] GSC --> P4["链接分析
外链/内链情况"]
七、进阶技巧
7.1 结构化数据(Rich Snippets)
让你的搜索结果更醒目:
<!-- 文章页添加JSON-LD结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "<?php $this->title(); ?>",
"author": {
"@type": "Person",
"name": "<?php $this->author(); ?>"
},
"datePublished": "<?php $this->date('c'); ?>",
"dateModified": "<?php $this->modified('c'); ?>",
"description": "<?php echo mb_substr(strip_tags($this->content), 0, 150); ?>",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "<?php $this->permalink(); ?>"
}
}
</script>7.2 网站速度优化
静态资源分发"] S2["图片优化
WebP格式+懒加载"] S3["代码压缩
CSS/JS压缩合并"] S4["缓存策略
浏览器缓存+服务端缓存"] S5["数据库优化
索引+查询优化"] end S1 & S2 & S3 & S4 & S5 --> FAST["加载<3秒"] FAST --> SEO["SEO加分"] FAST --> UX["用户体验↑"]
Typecho缓存插件推荐:
TpCache - 页面静态缓存
DBCache - 数据库查询缓存7.3 内容更新策略
持续更新的秘诀:
| 策略 | 说明 |
|---|---|
| 写作素材库 | 平时记录灵感和问题 |
| 固定写作时间 | 养成习惯,如每周日下午 |
| 系列化 | 拆分大主题为系列文章 |
| 复用内容 | 一个主题,多种形式(博客/知乎/公众号) |
八、总结
写好技术博客是一个系统工程:
写有价值的文章"] SEO["🔍 SEO优化
让搜索引擎找到"] PROMOTE["📢 主动推广
让更多人看到"] DATA["📊 数据分析
持续优化"] end CONTENT --> SEO --> PROMOTE --> DATA DATA -->|"反馈"| CONTENT
最后的建议:
- 内容第一:再多的技巧也比不上一篇好文章
- 坚持更新:一年写50篇,比一个月写10篇然后弃坑强
- 不要急于求成:流量是慢慢积累的,保持耐心
- 享受过程:写作本身就是一种学习和成长
记住:
"写博客不是为了流量,流量是写好博客的副产品。"
当你真正帮助到别人的时候,流量自然会来。
参考资料
Typecho资源
SEO工具
学习资源
🎉 希望这篇文章能帮你从"写了没人看"变成"写了有人追"!