
哥飞
案例分享
有些关键词,谷歌直接给出能够满足用户需求的产品,这时候这些关键词,即使搜索量再大,我们都需要去避开。

pacman 这个词月搜索量400万+,但是这个排第一的网站月访问量18万。 投入了800个外链资源,但只拿到了18万的月访问量,这就划不来。

睡觉想飞
效果:
根据 https://new.web.cafe/tutorial/detail/zdk6o8s393
https://new.web.cafe/tutorial/detail/fjdhxvvcsq
很抱歉不能写详细的教程,这里面他的 token 获取很折腾,我也是谷歌了很久才弄好来,脚本还可以改进,大家可以根据自己的需求改改, 这脚本的门槛在 token 获取,比较折腾。api 是免费的(相对来说)。
参考资料 https://juejin.cn/post/7297831676631466021#heading-2 https://www.youtube.com/watch?v=HXKpfGqPRy0
https://www.youtube.com/watch?v=KFICa7Ngzng
https://developers.google.com/google-ads/api/docs/start?hl=zh-cn https://github.com/googleads/google-ads-php
import requests import json from typing import Dict, Any from collections import defaultdict def get_access_token() -> str: """获取新的 access token""" token_url = "https://oauth2.googleapis.com/token" data = { # OAuth 2.0 客户端 ID # 用于标识你的应用程序,从 Google Cloud Console 获取 "client_id": "xxx-xxx.apps.googleusercontent.com", # OAuth 2.0 客户端密钥 # 用于验证你的应用程序身份,需要保密 "client_secret": "xxx", # 刷新令牌 # 用于获取新的访问令牌,长期有效,不会过期 # 通过 OAuth 2.0 授权流程获得 "refresh_token": "xxx", # 授权类型 # 指定使用刷新令牌获取新的访问令牌 "grant_type": "refresh_token" } response = requests.post(token_url, data=data) return response.json()["access_token"] def analyze_search_volumes(result: Dict) -> None: """分析搜索量数据""" if "results" not in result: return print("\n搜索量分析:") print("-" * 50) for keyword_data in result["results"]: metrics = keyword_data["keywordIdeaMetrics"] keyword = keyword_data["text"] # 获取年度总搜索量 yearly_searches = defaultdict(int) for volume in metrics["monthlySearchVolumes"]: yearly_searches[volume["year"]] += int(volume["monthlySearches"]) # 打印结果 print(f"\n关键词: {keyword}") print(f"平均月搜索量: {metrics['avgMonthlySearches']}") for year, total in yearly_searches.items(): print(f"{year}年总搜索量: {total:,}") print("-" * 30) def get_keyword_ideas(customer_id: str, keyword: str, access_token: str) -> Dict[str, Any]: """获取关键词建议""" url = f"https://googleads.googleapis.com/v18/customers/{customer_id}:generateKeywordIdeas" headers = { # 访问令牌 # 用于验证 API 请求,有效期通常为 1 小时 "Authorization": f"Bearer {access_token}", # Google Ads API 开发者令牌 # 用于识别你的 Google Ads API 应用 "developer-token": "xxxx", # Google Ads 管理员账户 ID,测经理身份ID # 如果要访问客户账号,需要提供管理员账号 ID 123-123-1234 类似这样,在账号的右上角的 id, "login-customer-id": "4176332570", "Content-Type": "application/json" } data = { "keyword_seed": { "keywords": [keyword] }, "language": "languageConstants/1000", # 英语 "geo_target_constants": ["geoTargetConstants/2840"], # 美国 "keyword_plan_network": "GOOGLE_SEARCH_AND_PARTNERS" } response = requests.post(url, headers=headers, json=data) return response.json() def main(): # 获取新的 access token access_token = get_access_token() print("获取到新的 access token") # 设置参数 这里是 测经理身份ID创建的测试用户 id, customer_id = "1961763003" keyword = "seo" # 获取关键词建议 print(f"\n获取关键词 '{keyword}' 的建议...") result = get_keyword_ideas(customer_id, keyword, access_token) # 分析结果 if "error" in result: print("\n请求失败:") print(f"错误代码: {result['error'].get('code')}") print(f"错误信息: {result['error'].get('message')}") print(f"错误状态: {result['error'].get('status')}") else: analyze_search_volumes(result) if __name__ == "__main__": main()
这个脚本用于通过 Google Ads API 获取关键词的搜索量数据和相关指标。它可以帮助你:
需要以下认证信息:
client_id: OAuth 2.0 客户端 ID
client_secret: OAuth 2.0 客户端密钥
refresh_token: 刷新令牌
developer-token: Google Ads API 开发者令牌
需要两个重要的 ID:
login-customer-id: 管理员账户 ID
customer_id: 客户账户 ID
get_access_token():
get_keyword_ideas():
analyze_search_volumes():
获取的关键词数据包括:
pip install requests
python google_keywords_raw.py
脚本会生成一个包含以下内容的分析报告:
以上,我是睡飞,我在 6 群,大家多交流一起成长进步!!!
睡觉想飞


看了 https://new.web.cafe/tutorial/detail/y347cg5g3f 然后想到的一个小办法,
import requests import xml.etree.ElementTree as ET from typing import List def get_suggestions(query: str) -> List[str]: """ 获取 Google 搜索建议 Args: query: 搜索关键词 Returns: 包含搜索建议的字符串列表 """ url = "https://suggestqueries.google.com/complete/search" params = { "output": "toolbar", "hl": "en", "q": query } try: response = requests.get(url, params=params) response.raise_for_status() # 检查请求是否成功 # 解析 XML 响应 root = ET.fromstring(response.text) suggestions = [suggestion.get('data') for suggestion in root.findall('.//suggestion')] return suggestions except requests.RequestException as e: print(f"请求出错: {e}") return [] except ET.ParseError as e: print(f"XML 解析出错: {e}") return [] def main(): # 示例使用 query = input("请输入搜索关键词: ") suggestions = get_suggestions(query) print("\n搜索建议:") for i, suggestion in enumerate(suggestions, 1): print(f"{i}. {suggestion}") if __name__ == "__main__": main()
批量,复杂的版本

import requests import xml.etree.ElementTree as ET from typing import List, Set from queue import Queue from threading import Thread import time import os from datetime import datetime class SuggestionWorker: def __init__(self, main_keyword: str, output_dir: str = "results", num_workers: int = 2): """ 初始化搜索建议爬虫 Args: main_keyword: 主要关键词,必须包含在结果中 output_dir: 输出目录 num_workers: 并发工作线程数 """ self.main_keyword = main_keyword.lower() self.num_workers = num_workers # 创建输出目录 self.output_dir = output_dir os.makedirs(output_dir, exist_ok=True) # 创建带时间戳的输出文件 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") self.output_file = os.path.join(output_dir, f"suggestions_{main_keyword}_{timestamp}.txt") # 初始化队列和集合 self.queue = Queue() self.results: Set[str] = set() self.processed_queries: Set[str] = set() self.depth_map = {} # 记录每个关键词的深度 def get_suggestions(self, query: str) -> List[str]: """获取 Google 搜索建议""" url = "https://suggestqueries.google.com/complete/search" params = { "output": "toolbar", "hl": "en", "q": query } try: response = requests.get(url, params=params) response.raise_for_status() root = ET.fromstring(response.text) suggestions = [suggestion.get('data') for suggestion in root.findall('.//suggestion')] # 只保留包含主关键词的建议 filtered_suggestions = [s for s in suggestions if self.main_keyword in s.lower()] return filtered_suggestions except (requests.RequestException, ET.ParseError) as e: print(f"处理查询 '{query}' 时出错: {e}") return [] def save_suggestion(self, suggestion: str): """保存建议词到文件""" with open(self.output_file, 'a', encoding='utf-8') as f: f.write(f"{suggestion}\n") def worker(self): """工作线程函数""" while True: try: query = self.queue.get() if query is None: break if query in self.processed_queries: self.queue.task_done() continue print(f"正在处理: {query}") self.processed_queries.add(query) suggestions = self.get_suggestions(query) # 保存新的建议并添加到队列 for suggestion in suggestions: if suggestion not in self.results: self.results.add(suggestion) self.save_suggestion(suggestion) # 将新的建议加入队列继续扩展 self.queue.put(suggestion) time.sleep(1) # 避免请求过快 except Exception as e: print(f"处理时出错: {e}") finally: self.queue.task_done() def run(self): """运行爬虫""" print(f"开始收集包含 '{self.main_keyword}' 的搜索建议...") print(f"结果将保存到: {self.output_file}") # 清空或创建输出文件 with open(self.output_file, 'w', encoding='utf-8') as f: f.write(f"关键词\n") # 写入表头 # 添加初始关键词 self.queue.put(self.main_keyword) # 启动工作线程 threads = [] for _ in range(self.num_workers): t = Thread(target=self.worker) t.start() threads.append(t) # 等待队列处理完成 self.queue.join() # 停止工作线程 for _ in range(self.num_workers): self.queue.put(None) for t in threads: t.join() print(f"\n已完成! 共收集到 {len(self.results)} 个建议关键词") print(f"结果已保存到: {self.output_file}") def main(): main_keyword = input("请输入主要关键词: ").strip() crawler = SuggestionWorker( main_keyword=main_keyword, num_workers=2 ) crawler.run() if __name__ == "__main__": main()
这是一个用于收集 Google 搜索建议的爬虫工具。它可以递归地获取所有包含指定关键词的搜索建议。
3. 输入主关键词,例如 "python" ## 工作原理 程序会按以下步骤工作: 1. 输入主关键词(如 "python") 2. 第一次获取包含主关键词的建议词,例如: - python programming - python tutorial - python for beginners 3. 然后对每个获取到的建议词继续搜索: - 用 "python programming" 继续搜索 - 用 "python tutorial" 继续搜索 - 用 "python for beginners" 继续搜索 4. 每次搜索都只保留包含主关键词的结果 5. 这个过程会一直持续,直到没有新的建议词 ## 输出说明 - 结果保存在 `results` 目录下 - 文件名格式:`suggestions_关键词_时间戳.txt` - 每行一个关键词 - 所有关键词都包含主关键词 - 结果自动去重 ## 技术细节 - 使用 Google Suggest API - 多线程并发(默认 2 个线程) - 请求延迟 1 秒,避免 API 限制 - 使用队列(Queue)管理待处理关键词 - 使用集合(Set)实现结果去重 ## 注意事项 1. 确保网络可以访问 Google 服务 2. 程序会一直运行到没有新的建议词 3. 可以随时中断,已处理的结果会保存在文件中 4. 每次运行会创建新的结果文件,不会覆盖旧结果 ## 依赖要求 - Python 3.6+ - requests>=2.31.0 ## 目录结构
. ├── google_suggest.py # 主程序 ├── requirements.txt # 依赖文件 └── results/ # 结果目录 └── suggestions_*.txt # 结果文件
## 示例运行 ```bash $ python google_suggest.py 请输入主要关键词: python 开始收集包含 'python' 的搜索建议... 正在处理: python 正在处理: python programming 正在处理: python tutorial ... 已完成! 共收集到 xxx 个建议关键词 结果已保存到: results/suggestions_python_20240321_123456.txt
我叫肥坚
香港开户
本人于 2025 年 2月 5 日 赴香港开卡,分享一些经验:
#中银香港 只需要香港网络+香港定位+近期通关记录就可以在线开卡了,不需要线下激活,貌似没有等待审核。
#汇丰银行 也能线上开户,但是我第一次选成了汇丰卓越(大额理财的),打电话过来问我一堆开户的问题。审核期间又不能重复申请汇丰 one 卡,所以不知道汇丰 one 卡好不好开。官方公众号有开户教程。
#天星银行(虚拟卡) 也是线上申请,半天不到就通过审核了。
#众安银行(虚拟卡) 也是线上申请,目前过了 1 天半了还没审核通过。听群友说,众安银行申请时填推荐码,审核会加快,2小时内。
#建行亚洲 可以线上申请(繁琐),但是要线下激活,而且会问一堆问题。不推荐。
#工银亚洲 虽然可以线上办理,但是最后几步让你选线下网点预约,可选时间都是 5-7 天后,所以我没办成。
总结下来就是: *中银香港、天星银行、汇丰银行(估计)线上办理很流畅,推荐优先搞这三个。
*不推荐线下办理,2 月 5 号去尖沙咀的汇丰银行,听员工说,他们 9 点上班,开户的号 10 分钟就拿完了。
*我接触过的所有银行(建行亚洲除外)的线上办理,都需要近 7 天(或者是 30 天,我忘了)的香港通关记录。通关记录在移民局 12367 小程序查询。
*去香港前提前开通漫游,打开漫游就能识别成香港网络了,不一定要连当地 wifi。(但有群友指出,用漫游查手机ip始终不是香港,换成地铁wifi后就顺利了)
*所推荐的 3 家银行,过关后再在线申请就可以。
*西九龍站附近的银行不办理开户业务。
*尖沙咀地铁站附近有很多家不同的银行,有疑问可以直接去银行问。

哥飞
工具分享
这个生成 ICON 的工具,做得很好,真的是为用户考虑了,月访问量20万。 https://realfavicongenerator.net/
你上传一张图片之后,他会给你预览,在各种场景下,ICON的显示效果。 点击下一步,还给你代码,告诉你在不同的框架下,代码要怎么写。
不过注意,这不是帮你从零创作一个图标,而是基于你上传的图标,帮你生成 Favicon icon 索需要的各种尺寸格式图标。
6
经验
香港 Stripe + 万里汇港卡 + 万里付卡 World Card,收款不提现,直接消费万里汇余额。
使用香港 Stripe + 万里汇港卡收款的话,提现需要上传 Stripe 交易记录等,作为人民币结汇的依据,审核通过后,才有可结汇额度。
我自己只结过一笔,是机器审核的,即刻看到有小伙伴说提现多了,后续会人工审核,总之比较麻烦。
后来我申请了万里付卡 World Card,是一张支持多币种结算的 Mastercard,直接消费万里汇余额。无需提现。不过我的金额很少,一般就用于买域名或一些线上服务,目前是没问题的。

还可以绑定支付宝查看,也比较方便。支付宝搜索“万里汇”。

如果你也暂时没有别的更好的方式的话,可以试一下,希望能帮助到你!
Cy
经验
如果你也用香港Stripe+香港银行卡海外收款美金,添加香港银行的港币账户就够了,如非必要,不要添加香港银行卡的美金账户。
如果添加了美金账户又收款美金,美金不会进行货币转换直接进入美金余额,最后提现时美金余额提现有门槛,提现费用还比港币要高(1%或最少5刀)。
如果Stripe里只有港币账户,Stripe会在收到每一笔美金的时候进行货币转换,付1%的货币转换费,就可以无门槛免费提现到银行卡中。(不确定不同银行会不会不一样,我的香港民生是免费的)
如果已经添加了美金账户,到银行账户设置的地方,把美金货币Disable掉也行。


哥飞
GSC
GSC页面索引里,有一个类别是“备用网页(有适当的规范标记)”,这个是不用担心的,正常的。
GSC谷歌会把发现的一些异常给你提示出来,但并不是提示出来的,都是不好的情况。
仅仅只是谷歌发现了,就告诉你了。
对于截图这种,属于是你已经设置好了Canonical,就不用管的。

但还有另一个类别“重复网页,用户未选定规范网页”,这种是需要处理的,需要去设置 Canonical 。

哥飞
网站数据
数据分析
我最近常用的一个功能,Similarweb关键词研究里的竞争对手分析,可以看到每一个关键词,一段时间内,各个网站的市场占比。可以清晰的看到,谁家流量起来了,谁家流量掉下去了。

路漫漫
经验

谷歌搜索结果中,点击网站标题后面的三点,可以在右侧打开一个侧边栏,显示“您的搜索内容和此搜索结果”等内容。 可以得到以下信息: 1、这条结果(或者自己的网站)和搜索关键词的匹配度,也就是命中了哪些关键词 2、这条结果(或者自己的网站)和搜索关键词相关的关键词,也就是可以添加的关键词 3、这条结果(竞对网站)的更新时间 4、搜索这条结果的用户,主要分布在哪些地区 5、鼠标滑过下划线单词,有一些搜索技巧的提示