keywords 字段是 Packagist 搜索唯一索引的关键词来源,必须为小写、无空格、语义明确的 3–6 个字符串数组,需强关联实际功能并随版本迭代及时更新;type 字段虽不参与关键词搜索,但影响类型筛选可见性。

关键词写在 keywords 字段里,不是 description 或标签系统
Packagist 搜索只认 composer.json 中的 keywords 数组,其他地方写的词(比如 description 里堆砌“php laravel validation utility”)几乎不影响搜索排名。这个字段是唯一被索引的关键词来源。
实操建议:
-
keywords必须是字符串数组,不能是空格分隔的字符串或单个字符串 - 每个关键词尽量用小写、无空格、语义明确的词,比如
"laravel"、"validation"、"api",避免"php package"这类泛词 - 数量控制在 3–6 个,太多会稀释权重;优先放用户真正会搜的组合场景词,比如
"json-api"比"json"+"api"更精准 - 不要重复包名或作者名,Packagist 不索引
name和author字段做关键词匹配
关键词必须和实际功能强相关,否则反而拉低点击率
比如一个只做日期格式转换的包,硬塞 "calendar"、"timezone"、"schedule",虽然可能带来短期曝光,但用户安装后发现不支持日程调度,就会快速卸载——Packagist 会统计安装/卸载比,异常比值会影响后续推荐权重。
真实影响点:
- 用户搜
"laravel carbon helper",如果你的包真封装了Carbon常用方法,就该写"carbon"和"helper";如果只是调用了date(),写"carbon"就是误导 - 避免写竞品名(如
"illuminate"),除非你确实替换了其组件或提供桥接——否则搜索结果页里用户点进来发现不兼容,跳出率飙升 - 版本迭代后功能删减,记得同步清理过时关键词,比如 v2 移除了缓存模块,就该删掉
"cache"
别忽略 type 字段对搜索分类的影响
type 虽然不算关键词,但在 Packagist 的筛选器(如 “Packages of type: library”)中起关键作用,间接决定你的包是否出现在用户手动过滤后的结果页里。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
常见合理取值:
-
"library":通用工具类包(最常用) -
"laravel-package":Laravel 服务提供者类扩展(会被 Laravel 专用筛选收录) -
"wordpress-plugin":仅当包本身是 WP 插件且含wp-content兼容逻辑时才用 - 避免用模糊值如
"package"或留空,这会让包掉出所有类型筛选结果
注意:type 不影响关键词搜索本身,但影响“搜完再按类型筛选”这一高频路径的可见性。
提交后没有立即生效?检查 Packagist webhook 和自动更新机制
改完 composer.json 并 push 到 GitHub 后,Packagist 不一定立刻刷新。常见卡点:
- GitHub webhook 没配或失效(进 Packagist 包页点
Edit→Manage hooks查看状态) - 提交没带新 Git tag(Packagist 默认只抓 tagged release,
dev-main分支变更需手动触发更新) - 关键词修改后首次索引有延迟,通常 10–30 分钟,但不会超过 2 小时
- 可手动点包页右上角
Update强制抓取最新composer.json
验证是否生效:在 Packagist 搜索框直接输入某个你新加的关键词,看包是否出现在前两页——别只信“搜索量上升”的后台数据,那可能是缓存或误统计。
关键词这事,改一次不难,难的是持续匹配真实使用场景。很多人改完就忘了,半年后包功能变了、生态位移了,还挂着过时的 "symfony4",这种细节才是长期曝光掉队的主因。

















