keywords字段仅用于packagist页面人工标签展示,不影响搜索排名和安装;必须为小写、无空格/版本号的字符串数组,置于composer.json顶层,推荐填3–5个精准技术词。

keywords 字段不会提升搜索排名,只在 Packagist 页面作为人工标签展示;填错不影响安装,但填得太泛或太离谱会让别人一眼看不懂你的包是干啥的。
keywords 必须写在 composer.json 顶层,且是字符串数组
它不是 description 的补充,也不是 type 的重复,必须独立、正确地放在根级位置:
{
"name": "acme/http-client",
"description": "A PSR-18 HTTP client built on curl",
"keywords": ["http-client", "psr-18", "curl", "php"]
}
- ❌ 错误写法:
"keywords": "http-client, psr-18"(字符串,不是数组) - ❌ 错误写法:
"keywords": ["HTTP-Client", "PSR-18"](大小写混用,Packagist 不做归一) - ❌ 错误写法:
"keywords": ["php 8.1", "laravel v10"](含空格、版本号,应移入require) - ✅ 正确写法:
"keywords": ["http-client", "psr-18", "curl"](小写、短横线、无修饰)
填 3–5 个精准词,别堆砌,也别写“PHP”“library”这种废话
Packagist 实际只索引前 10 个关键词,但用户扫一眼能判断用途的,往往就前 3 个。重点选那些别人真会搜、且和你代码能力强相关的词:
Word报告自动生成神器。自动生成专业Word文档报告,支持模板填充、目录生成、表格/图表插入、页眉页脚、多级标题、样式主题、批量邮件合并。当用户需要生成Word报告、创建合同文档、批量生成通知/证书、填充Word模板、制作商业计划书时触发。
- 优先填技术栈:如
"laravel"、"symfony"、"psr-7" - 优先填核心能力:如
"rate-limiting"、"json-rpc"、"csv-export" - 优先填集成场景:如
"woocommerce"、"shopify-api" - 避免填泛词:
"php"、"tool"、"package"——90% 的包都这么写,等于没写 - 避免填主观词:
"fast"、"modern"、"awesome"——Packagist 过滤掉这类词
改了 keywords 后 Packagist 页面不更新?先查这三件事
不是配置无效,而是同步机制卡住了。常见断点就这几个:
- 没发新 tag 或没 push 到默认分支:Packagist 只在有新 commit 或新 tag 时抓取,仅改
composer.json不触发同步 - 手动点 Update 按钮失败:检查仓库 webhook 是否启用,以及 Packagist 绑定的 token 是否有读取权限
- 页面显示
["foo","bar"]这种原始数组:说明 JSON 格式错误(多逗号、少引号),运行composer validate能立刻发现 - 等不及?直接查 API 确认:
curl https://packagist.org/p2/acme/http-client.json | jq '.packages."acme/http-client"[0].keywords'
真正容易被忽略的是:keywords 和 name、description 是分工明确的三块拼图——name 是身份证,description 是自我介绍,keywords 是贴在包封面的便利贴。贴歪了不耽误人用,但贴准了,别人扫一眼就知道“哦,这就是我要的那个”。










