跳转到正文
报告库
用途分类 / 其他用途

Public Relations Skill 安全审计

作者说它能做什么(原文)

When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the user mentions 'PR,' 'public relations,' 'press,' 'press release,' 'press coverage,' 'media outreach,' 'pitch a journalist,' 'get featured,' 'media list,' 'media kit,' 'press kit,' 'newsjacking,' 'news hijack,' 'HARO,' 'Qwoted,' 'Featured,' 'Hel

第三方安全检查结论

先别安装或运行

已检查文件
8
发现的风险
5
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

将原始主题文本替换进示例 shell 命令可能造成命令注入

原文依据:3 处
发现了什么

工具说明让代理把 QUERY 或 SUBREDDIT 直接替换到 shell 示例中,却没有规定 URL 编码、参数校验或安全的参数传递方式。如果替换过程是文本拼接,包含引号或 shell 运算符的输入可改变原命令。

为什么需要注意

恶意或意外构造的主题可能在代理权限范围内执行额外 shell 命令,读取可访问文件、修改工作区或发起非预期网络请求。

这段证据能说明什么

这些是文档中的示例命令,不是可见的自动执行脚本。Google News 示例还要求用 `+` 和 `%22` 编码部分字符;若代理正确做完整 URL 编码,主题文本不会改变 shell 结构。但文档没有说明完整编码或安全参数传递,Reddit 的 SUBREDDIT 也无校验,所以把不可信文本直接替换进命令时存在注入可能。用户可禁止拼接 shell,要求使用 URL 编码库、固定允许字符,并在执行前展示最终命令。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
references/newsjacking.md:149来自说明文档打开原文件
```bash# Replace QUERY with topic (use + for spaces, %22 for quotes)curl -s "https://news.google.com/rss/search?q=QUERY&hl=en-US&gl=US&ceid=US:en" \  | xmllint --xpath "//item[position()<11]" - 2>/dev/null```
查看另外 2 个位置
references/newsjacking.md:157来自说明文档打开原文件
```bashSINCE=$(($(date +%s) - 86400))curl -s "https://hn.algolia.com/api/v1/search_by_date?query=QUERY&tags=story&numericFilters=created_at_i>${SINCE}" \  | jq '.hits[] | {title, url, points, num_comments, created_at, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'```
references/newsjacking.md:165来自说明文档打开原文件
```bashcurl -s -A "newsjack/1.0" \  "https://www.reddit.com/r/SUBREDDIT/top.json?t=day&limit=15" \  | jq '.data.children[].data | {title, url, score, num_comments, created_utc}'```
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 2 项风险
高风险

投稿流程可能向记者披露内部数据、客户身份和联系方式

原文依据:6 处
发现了什么

技能先读取内部产品营销材料,随后要求投稿包含数据、引语、客户姓名和联系人,并提供共享原始数据集或安排客户采访的模板。它没有要求逐项确认这些材料可公开,也没有要求取得客户同意。

为什么需要注意

如果代理直接使用项目上下文,未公开指标、客户关系、个人联系方式或原始数据可能被发送给记者或上传到媒体平台,造成保密、隐私、合同和声誉风险。

该技能会先读取内部产品营销文件,再建议把数据、客户姓名、联系方式、原始数据集及客户采访机会放入记者投稿。PR 工作确实需要这些材料,但可见流程没有逐项核实公开权限或客户同意;若代理进一步起草或发送,可能泄露未公开商业数据或客户信息。用户可要求作者加入“仅生成草稿”,并在披露每项数据、客户身份和联系方式前取得明确批准。

SKILL.md:14来自说明文档打开原文件
**Check for product marketing context first:**If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
查看另外 5 个位置
SKILL.md:92来自说明文档打开原文件
- [ ] Does this journalist cover this beat? (Check their last 5 articles.)- [ ] Is there a clear news hook — something that just happened or is about to?- [ ] Could this journalist write a complete story from this email alone? (Data, quotes, customer name, contact.)- [ ] Is the subject line specific enough to predict the article's headline?- [ ] Is the pitch under 150 words?- [ ] Did you avoid the words "revolutionary," "game-changing," "disruptive," and "synergy"?- [ ] Is the ask clear? (Interview? Embargo? Exclusive? Quote?)
references/journalist-pitching.md:84来自说明文档打开原文件
We [analyzed N / surveyed N / tracked N] and found:• [Stat 1 with surprise factor]• [Stat 2]• [Stat 3]The most interesting pattern: [one-sentence insight].Full data + methodology here: [link to one-pager, not your homepage]Happy to share the raw dataset, jump on a call, or connect you with[customer who's relevant].
references/press-platforms.md:77来自说明文档打开原文件
[Specific credential — 1 sentence. "Built X for 5 years" / "Led marketing at Y" / "Have analyzed N companies in space"]The most important thing about [topic]: [your actual point in 2 sentences].[A specific example, story, or data point — this is what gets quoted.][If applicable: a contrarian or surprising angle that differentiates from typical answers.]Happy to expand on any of this, share data, or be quoted directly.Feel free to use this attribution:[Your name], [your title], [your company]Contact for follow-up: [email + phone]```
references/journalist-pitching.md:91来自说明文档打开原文件
Full data + methodology here: [link to one-pager, not your homepage]Happy to share the raw dataset, jump on a call, or connect you with[customer who's relevant].
references/journalist-pitching.md:158来自说明文档打开原文件
Customer details:• Name: [name, title, company]• Available: [windows]• Willing to share: [data points / screenshots / metrics]Happy to coordinate the intro.
中风险

记者个人资料和邮箱会被收集、推测并长期保存在项目中

原文依据:4 处
发现了什么

技能要求收集记者的社交活动、任职信息和邮箱,甚至建议按常见格式猜测邮箱并进行退信验证,再将名单保存在 `.agents/media-list.md` 或 CSV 中。没有规定数据来源、保留期、访问范围或删除机制。

为什么需要注意

这会在代码库或共享工作区形成可持续传播的联系人数据库;猜测或验证邮箱还可能把个人标识符交给 Hunter.io、RocketReach 等第三方,并带来隐私、合规和误投风险。

这是合法的定向媒体研究,但流程会汇集记者的近期文章、社交活动、任职和邮箱,还建议按常见格式猜测邮箱并做退信检查,最后长期写入项目文件。集中保存的数据可能被项目协作者看到,猜测地址也可能导致邮件发错人或被视为骚扰。用户可要求只使用记者公开发布的联系方式、禁止猜测和退信探测,并限定文件访问者、保存期限及删除方式。

references/journalist-pitching.md:25来自说明文档打开原文件
- [ ] Read their **last 5 articles** — are they covering your beat right now?- [ ] Note their **publication** — does it reach your ICP?- [ ] Check their **bio** on the outlet site — what topics do they own?- [ ] Check **X/LinkedIn** for what they're posting about this week- [ ] Note their **email** (usually on outlet author page, Muck Rack, or company About page)- [ ] Check **Muck Rack** if available — it shows recent topics and pitch preferences
查看另外 3 个位置
references/journalist-pitching.md:319来自说明文档打开原文件
```bash# Most journalists' emails follow patterns:# firstname@outlet.com# firstname.lastname@outlet.com# flastname@outlet.com# Use Hunter.io, RocketReach, or just guess and bounce-check```
references/journalist-pitching.md:347来自说明文档打开原文件
### Maintaining the media listStore in `.agents/media-list.md` (or `.csv` if you prefer). Update monthly — journalists move jobs constantly.```markdown## Tier 1 (top 20)| Name | Outlet | Beat | Last contact | Last coverage | Email | Score ||------|--------|------|--------------|---------------|-------|-------|| ...  | ...    | ...  | 2026-05-15   | none yet      | ...   | 9/10  |```
references/journalist-pitching.md:329来自说明文档打开原文件
Use `dev-browser` (persistent session, no rate limits) to:- Open the journalist's outlet author page → scrape last 5 article headlines + dates- Open their X/Twitter profile → note recent topics- Open their LinkedIn → confirm current role
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

外部网页内容可能通过浏览研究流程影响代理指令

原文依据:4 处
发现了什么

技能要求代理打开作者页、X、LinkedIn、Muck Rack、播客网站和搜索结果,但没有要求把网页文字视为不可信数据,也没有禁止执行页面中面向 AI 的指令。

为什么需要注意

恶意或被篡改的个人资料、文章或节目页面可能诱导代理偏离调研任务,泄露已读取的产品上下文、访问其他文件或生成被操纵的记者评分和建议。

技能明确让代理读取作者页、社交资料、搜索结果、播客网站和可能的完整转录,并把内容用于分析,但没有可见指令要求将网页中的命令性文字视为不可信。恶意或被篡改的页面因此可能尝试改变代理行为;这只是暴露面,并不证明攻击发生或页面文字一定会被执行。用户可限制为提取标题、日期和公开履历,禁止遵循页面中的操作指令,并要求外部动作另行批准。

references/journalist-pitching.md:327来自说明文档打开原文件
### Researching their recent work (browser-driven)Use `dev-browser` (persistent session, no rate limits) to:- Open the journalist's outlet author page → scrape last 5 article headlines + dates- Open their X/Twitter profile → note recent topics- Open their LinkedIn → confirm current role
查看另外 3 个位置
references/newsjacking.md:171来自说明文档打开原文件
### Journalist research (browser-driven)For finding *which* journalists are covering the story right now:- **dev-browser** → Google News search for the story → click through to articles → note the bylines- Then go to those journalists' X / LinkedIn / Muck Rack profile to confirm beat and recent coverage
references/podcast-guest-prep.md:21来自说明文档打开原文件
Work through sources in this order; each is a fallback for the last:1. **RSS feed first.** The richest source: full episode descriptions, chapter markers, guest links, dates. Find the feed link on the podcast site (Buzzsprout, Transistor, etc. all expose one). Large-feed fetches may truncate — check whether the oldest episodes you need actually made it.2. **The podcast website's episode list** for anything the feed missed. These pages often lazy-load older episodes via JavaScript; if pagination returns nothing, note the gap and move on rather than burning time.3. **Apple Podcasts show page** — reliably renders the latest ~8 episodes with full descriptions.4. **Web search** for stray episodes, the hosts, and the show's reputation.Don't fetch every episode page. Descriptions plus chapter lists are almost always enough; only pull a full transcript when a specific episode is central (e.g., a debate the guest should have a position on). Check for published transcript links in the feed.
references/newsjacking.md:173来自说明文档打开原文件
For finding *which* journalists are covering the story right now:- **dev-browser** → Google News search for the story → click through to articles → note the bylines- Then go to those journalists' X / LinkedIn / Muck Rack profile to confirm beat and recent coverage
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
中风险

新闻借势流程可能在没有最终批准的情况下对外发稿

原文依据:6 处
发现了什么

流程把向记者投稿以及在博客、LinkedIn、X 发布内容列为执行步骤,并强调必须在很短窗口内完成。文档没有在这些外部动作前设置明确的用户确认、账号选择或最终内容审批。

为什么需要注意

若具备已登录的邮件或社交账号,代理可能发布尚未核实的数据、敏感立场或不合品牌口径的内容,引发公开纠错、关系受损或品牌争议。

这段证据能说明什么

新闻借势文档把“Pitch”和“Post”列为流程步骤,并以短时限施压;其中“Post”可被理解为实际对外发布。不过“Pitch”步骤明确说是起草,主技能的对应工作流也只要求起草投稿,且没有可见的发送或账号操作实现。因此无法确认它会自动发稿,但授权边界含糊。用户可将其限制为研究和草稿,并要求任何邮件、博客或社交发布前单独确认目标账号和最终内容。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
references/newsjacking.md:37来自说明文档打开原文件
1. **Detect** — surface trending stories in your category (see [Sources & Tooling](#sources--tooling))2. **Score** — apply the [newsworthiness rubric](#newsworthiness-scoring-rubric); drop anything below threshold3. **Angle** — generate 2–3 angles per story using the [angle library](#story-angle-library)4. **Validate** — sanity-check: do you actually have the expertise/data to back this angle?5. **Pitch** — draft a tight pitch to 3–5 journalists who cover this beat (see [journalist-pitching.md](journalist-pitching.md))6. **Post** — also publish on your blog, LinkedIn, X — it builds the trail journalists check before quoting you
查看另外 5 个位置
references/newsjacking.md:127来自说明文档打开原文件
## Speed: The Only Thing That MattersNewsjacking decays fast. Approximate windows:| Story type | Effective window ||-----------|------------------|| Breaking tech news | 4–12 hours || Major regulation / policy | 24–48 hours || Industry report / data drop | 24–72 hours || Conference announcement | Same day || Acquisition / funding news | 12–24 hours |**Implication:** if you can't draft and send within the window, don't bother. Set up the loop so detection → pitch takes <2 hours.
references/newsjacking.md:212来自说明文档打开原文件
Every newsjack pitch is stronger if the journalist can find evidence you've been thinking about this publicly. Before pitching:1. Publish a short post (blog, LinkedIn, X thread) with your take2. Reference it in the pitch ("more thinking here: [link]")3. This signals you're not opportunistic — you're an actual voice in the space
references/newsjacking.md:35来自说明文档打开原文件
A repeatable workflow Claude can run on demand or daily.1. **Detect** — surface trending stories in your category (see [Sources & Tooling](#sources--tooling))2. **Score** — apply the [newsworthiness rubric](#newsworthiness-scoring-rubric); drop anything below threshold3. **Angle** — generate 2–3 angles per story using the [angle library](#story-angle-library)4. **Validate** — sanity-check: do you actually have the expertise/data to back this angle?5. **Pitch** — draft a tight pitch to 3–5 journalists who cover this beat (see [journalist-pitching.md](journalist-pitching.md))6. **Post** — also publish on your blog, LinkedIn, X — it builds the trail journalists check before quoting you
references/newsjacking.md:139来自说明文档打开原文件
**Implication:** if you can't draft and send within the window, don't bother. Set up the loop so detection → pitch takes <2 hours.
SKILL.md:123来自说明文档打开原文件
### "Help me newsjack [trending story]"Go to [newsjacking.md](references/newsjacking.md), run the scoring rubric, draft 2–3 angles, pick the best, draft the pitch.

Skill 逻辑拆解

7 个说明模块

该技能用于制定软件产品的媒体关系策略,包括新闻借势、记者名单、投稿、媒体请求回复和播客准备。

查看原文
SKILL.md:8来自说明文档打开原文件
# Public Relations & Earned MediaYou are an expert in earned media for software products. Your goal is to help the user get covered by journalists, podcasts, and newsletters — efficiently, with respect for the people on the other end of the pitch.

开始工作前,它会读取项目中的产品营销文档;播客流程还会收集创始人经历、带数字的故事和争议性观点,并提议将答案保存回该文档。

查看原文
SKILL.md:14来自说明文档打开原文件
**Check for product marketing context first:**If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
references/podcast-guest-prep.md:9来自说明文档打开原文件
Read `.agents/product-marketing.md` (or `.claude/product-marketing.md`) for the company, positioning, and ICP. That file usually won't have the guest's *story bank*, so also collect — in one batch, not a drip:1. What did you build before this that comes up in conversation?2. What are 2–3 stories you tell well, with real numbers attached?3. What's one opinion you hold that most people in your space disagree with?Offer to save the answers into the product-marketing context doc so future runs skip the interview.

记者调研会访问媒体作者页、X、LinkedIn 和 Muck Rack,收集近期主题、任职信息和邮箱,并建议把联系人名单长期保存在项目文件中。

查看原文
references/journalist-pitching.md:25来自说明文档打开原文件
- [ ] Read their **last 5 articles** — are they covering your beat right now?- [ ] Note their **publication** — does it reach your ICP?- [ ] Check their **bio** on the outlet site — what topics do they own?- [ ] Check **X/LinkedIn** for what they're posting about this week- [ ] Note their **email** (usually on outlet author page, Muck Rack, or company About page)- [ ] Check **Muck Rack** if available — it shows recent topics and pitch preferences
references/journalist-pitching.md:347来自说明文档打开原文件
### Maintaining the media listStore in `.agents/media-list.md` (or `.csv` if you prefer). Update monthly — journalists move jobs constantly.

新闻监测使用 curl 请求 Google News、Hacker News 和 Reddit,并要求安装 jq;因此使用该流程会产生对外网络请求,安装步骤还会修改本机软件环境。

查看原文
references/newsjacking.md:143来自说明文档打开原文件
## Sources & ToolingReuses tooling from the `social` skill's listening workflow. Same install: `brew install jq`.### Google News RSS (no auth)```bash# Replace QUERY with topic (use + for spaces, %22 for quotes)curl -s "https://news.google.com/rss/search?q=QUERY&hl=en-US&gl=US&ceid=US:en" \  | xmllint --xpath "//item[position()<11]" - 2>/dev/null
references/newsjacking.md:155来自说明文档打开原文件
### Hacker News (Algolia) for tech stories```bashSINCE=$(($(date +%s) - 86400))curl -s "https://hn.algolia.com/api/v1/search_by_date?query=QUERY&tags=story&numericFilters=created_at_i>${SINCE}" \  | jq '.hits[] | {title, url, points, num_comments, created_at, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'```### Reddit (for category-specific subs)```bashcurl -s -A "newsjack/1.0" \  "https://www.reddit.com/r/SUBREDDIT/top.json?t=day&limit=15" \  | jq '.data.children[].data | {title, url, score, num_comments, created_utc}'```
从这里开始 · 工作说明SKILL.md
public-relations
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

12 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录8 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • references/journalist-pitching.md已纳入全文
  • references/media-outlets.md已纳入全文
  • references/newsjacking.md已纳入全文
  • references/podcast-guest-prep.md已纳入全文
  • references/press-platforms.md已纳入全文
  • references/story-angles.md已纳入全文
  • evals/evals.json已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • evals/evals.json配套文件
  • references/journalist-pitching.md配套文件
  • references/media-outlets.md配套文件
  • references/newsjacking.md配套文件
  • references/podcast-guest-prep.md配套文件
  • references/press-platforms.md配套文件
  • references/story-angles.md配套文件

代码和说明中提到的操作

连接外部网站
SKILL.md:3来自说明文档打开原文件
name: public-relationsdescription: "When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the user mentions 'PR,' 'public relations,' 'press,' 'press release,' 'press coverage,' 'media outreach,' 'pitch a journalist,' 'get featured,' 'media list,' 'media kit,' 'press kit,' 'newsjacking,' 'news hijack,' 'HARO,' 'Qwoted,' 'Featured,' 'Help A Reporter,' 'reporter request,' 'tech press,' 'TechCrunch,' 'earned media,' 'thought leadership placement,' 'op-ed,' 'guest article,' 'press contacts,' 'podcast prep,' 'going on a podcast,' 'podcast guest,' 'prep me for this podcast,' or 'how do I get press.' Use this for earned media work — finding journalists, pitching stories, newsjacking, prepping podcast appearances, and responding to press requests. For startup/SaaS/AI directory submissions, see directory-submissions. For product launches, see launch. For social-media engagement, see social. For cold-email outreach to prospects, see cold-email."metadata:
references/newsjacking.md:151来自说明文档打开原文件
# Replace QUERY with topic (use + for spaces, %22 for quotes)curl -s "https://news.google.com/rss/search?q=QUERY&hl=en-US&gl=US&ceid=US:en" \  | xmllint --xpath "//item[position()<11]" - 2>/dev/null
references/newsjacking.md:159来自说明文档打开原文件
SINCE=$(($(date +%s) - 86400))curl -s "https://hn.algolia.com/api/v1/search_by_date?query=QUERY&tags=story&numericFilters=created_at_i>${SINCE}" \  | jq '.hits[] | {title, url, points, num_comments, created_at, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'
读取文件
SKILL.md:139来自说明文档打开原文件
### "I'm going on [podcast] next week — help me prep"Go to [podcast-guest-prep.md](references/podcast-guest-prep.md): research the show (RSS feed → site → Apple Podcasts → web), extract the recurring threads and host profiles, map the guest's stories onto them, deliver the brief.
运行命令
references/journalist-pitching.md:319来自说明文档打开原文件
```bash# Most journalists' emails follow patterns:
references/newsjacking.md:149来自说明文档打开原文件
```bash# Replace QUERY with topic (use + for spaces, %22 for quotes)
references/newsjacking.md:157来自说明文档打开原文件
```bashSINCE=$(($(date +%s) - 86400))
安装其他软件包
references/newsjacking.md:145来自说明文档打开原文件
Reuses tooling from the `social` skill's listening workflow. Same install: `brew install jq`.
读取了多少行
1,299
文件校验值(用于核对版本)
385894969a2f09811583d97288a8dddf3e9f9af2bd78daf7d61d3f8326ca4c34