前言:为什么要写技术博客?
先问你一个问题:你写过多少次"Hello World"级别的笔记,然后存在本地某个角落,再也没打开过?
成为一名博主,首先要明白从消费者到生产者的角色转换,技术博客和私人笔记最大的区别在于:博客是写给别人看的,这会逼着你把事情讲清楚,切勿沉迷于"敝帚自珍",要让自己的努力价值最大化。
写博客的好处:
但现实是:
"我写了,没人看啊..."
"SEO是什么?能吃吗?"
"百度怎么搜不到我的文章?"
今天这篇文章,就来解决从内容创作到让人看到的全链路问题。
一、内容建设:写什么和怎么写
1.1 技术博客写什么?
内容选题建议:
| 类型 | 示例 | 特点 |
|---|---|---|
| 解决问题型 | "MySQL死锁排查实录" | SEO最友好,搜索量大 |
| 教程入门型 | "Docker从入门到放弃" | 流量大,竞争也大 |
| 深度分析型 | "Redis持久化原理剖析" | 展示专业度 |
| 工具推荐型 | "10个提升效率的VS Code插件" | 容易传播 |
| 年度总结型 | "2024年我用过的技术栈" | 人格化,有温度 |
1.2 如何写出好文章?
一篇好的技术文章需要具备以下结构:
写作技巧清单:
✅ 开头要有"钩子",让人想继续看
✅ 用类比解释复杂概念(Redis像一个超级快的字典)
✅ 代码要能跑,最好有完整示例
✅ 配图、流程图胜过千言万语
✅ 适当的幽默,但不要喧宾夺主
✅ 文末要有行动指引(参考资料、下一步建议)
❌ 不要复制粘贴官方文档
❌ 不要写流水账(今天我学了xxx)
❌ 不要堆砌术语装X
❌ 不要有明显的技术错误1.3 建立自己的写作风格
以我的"从入门到放弃"系列为例:
二、博客搭建:Typecho实战
2.1 为什么选Typecho?
2.2 Typecho必装插件
(我用的是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核心原理
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的爬虫行为不同,需要专门优化:
百度主动推送代码(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检查清单
四、RSS订阅:让读者追着你
4.1 RSS是什么?
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推广渠道
推荐提交的平台:
| 平台 | 地址 | 说明 |
|---|---|---|
| BlogHub | bloghub.fun | 中文独立博客聚合 |
| 十年之约 | foreverblog.cn | 博客圈互访 |
| 积薪 | firewood.news | 中文独立博客 |
| RSS Source | rss-source.com | RSS订阅源收录 |
五、引流推广:酒香也怕巷子深
5.1 引流渠道矩阵
5.2 技术社区运营策略
同步发布策略:
各平台特点:
| 平台 | 特点 | 适合内容 |
|---|---|---|
| 掘金 | 前端氛围浓,有推荐机制 | 前端、工具推荐 |
| CSDN | 百度收录好,流量大 | 教程、解决方案 |
| 博客园 | 技术纯粹,.NET氛围 | 深度技术文章 |
| 知乎 | 问答形式,长尾流量 | 系统性知识 |
| V2EX | 程序员社区,讨论热烈 | 观点、工具分享 |
5.3 知乎引流技巧
知乎回答模板:
[简要回答问题,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 统计工具配置
推荐方案:
| 场景 | 推荐 | 原因 |
|---|---|---|
| 国内为主 | 百度统计 | 与百度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 数据分析看什么?
6.3 Google Search Console
Google Search Console是SEO必备工具,可以看到:
七、进阶技巧
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 网站速度优化
Typecho缓存插件推荐:
TpCache - 页面静态缓存
DBCache - 数据库查询缓存7.3 内容更新策略
持续更新的秘诀:
| 策略 | 说明 |
|---|---|
| 写作素材库 | 平时记录灵感和问题 |
| 固定写作时间 | 养成习惯,如每周日下午 |
| 系列化 | 拆分大主题为系列文章 |
| 复用内容 | 一个主题,多种形式(博客/知乎/公众号) |
八、总结
写好技术博客是一个系统工程:
最后的建议:
- 内容第一:再多的技巧也比不上一篇好文章
- 坚持更新:一年写50篇,比一个月写10篇然后弃坑强
- 不要急于求成:流量是慢慢积累的,保持耐心
- 享受过程:写作本身就是一种学习和成长
记住:
"写博客不是为了流量,流量是写好博客的副产品。"
当你真正帮助到别人的时候,流量自然会来。
参考资料
Typecho资源
SEO工具
学习资源
🎉 希望这篇文章能帮你从"写了没人看"变成"写了有人追"!
评论
还没有评论,来说点什么吧。