keywords字段必须置于composer.json顶层,为小写字符串数组,仅影响packagist搜索匹配;填3–5个精准词如["laravel","redis","cache-driver"],避免泛化堆砌,改后需通过tag、webhook或手动update同步。

keywords字段必须写在composer.json顶层,不能嵌套
Packagist 只读取 composer.json 根级对象里的 keywords 字段,写在 extra、autoload 或 require 里完全无效。常见错误是把它当注释塞到文件末尾,或者加了多余缩进导致 JSON 解析失败——composer validate 会直接报 JSON decode error: Syntax error。
正确位置示例:
{
"name": "myvendor/my-package",
"description": "A lightweight PSR-14 event dispatcher",
"keywords": ["psr-14", "event-dispatcher", "events"],
"type": "library"
}
注意:keywords 必须是字符串数组,不是逗号分隔的字符串;每个词必须小写、无空格、无标点(连字符可接受,如 laravel-package)。
填什么关键词才真能被搜到?别堆砌,要精准匹配用户搜索习惯
Packagist 对 keywords 做的是**精确词匹配或前缀匹配**,不支持模糊、分词或语义扩展。用户搜 cache,你的包里有 "cache" 才可能被拉出来;搜 caching 就不会命中。
- 优先选用户真会输入的词:比如 Laravel 包就写
"laravel",不是"php-framework" - 组合技术栈 + 功能:一个 Redis 缓存驱动填
["laravel", "redis", "cache-driver"],比["php", "cache", "tool"]有效得多 - 避开泛化词:
"php"、"library"、"best"这类已被 Packagist 过滤,写了等于没写 - 别重复
name或vendor:spatie/laravel-permission不需要再写"laravel-permission"
改完keywords为什么Packagist上还是看不到?同步机制不是实时的
本地改完 composer.json 并 git push,Packagist 不会立刻更新。它依赖三种触发方式之一:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- GitHub/GitLab Webhook 正常回调(地址必须是
https://packagist.org/api/github,且勾选 Pushes) - 你手动打新 tag(如
v2.1.0),Packagist 默认从 tag 同步 - 登录 Packagist 页面,点右上角
Update按钮(需维护者权限)
如果点了 Update 却提示 No new commits,大概率是 Webhook 没配好或 token 权限不足。检查包页右上角的 Last updated 时间——比你 push 时间晚超过 24 小时,基本可以确定同步卡住了。
keywords和description不是一回事,别指望靠keywords撑起搜索曝光
keywords 本质是人工浏览时的快速标签,不是 SEO 字段。Packagist 搜索主要靠 name 和 description 全文索引,keywords 权重极低,且只在用户**主动输入该词**时起微弱辅助作用。
所以更关键的是写好 description:
- 控制在 120 字以内,Packagist 列表页只显示前两行
- 开头就写清“这是什么”,比如
A PSR-14 compliant event dispatcher for Laravel,别写“Best and modern…” - 把核心关键词自然嵌入描述中,比如
laravel、psr-14、events出现在description里,比只塞进keywords更有效
真正容易被忽略的一点:Packagist 不会因为你在 keywords 里写了 8 个词就提升排名,它只索引前 10 个,但超过 5 个反而稀释重点——留 3–5 个最硬核的就够了。










