crisis-communications
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCrisis communications
危机沟通
Frameworks for accurate, rapid communication during high-pressure situations.
高压场景下精准、快速沟通的框架体系。
When to activate
适用场景
- Breaking news requires immediate coverage
- Organization faces public crisis or controversy
- Misinformation is spreading rapidly and needs countering
- Emergency situation requires coordinated communication
- Rapid fact-checking is needed before publication
- Preparing crisis response plans before incidents occur
- 突发新闻需要即时报道
- 企业面临公共危机或争议事件
- 虚假信息快速传播,需要予以驳斥
- 紧急情况需要协同沟通
- 发布前需要快速事实核查
- 提前制定危机应对预案
Breaking news protocol
突发新闻响应流程
First 30 minutes checklist
前30分钟检查清单
markdown
undefinedmarkdown
undefinedBreaking news response
突发新闻响应
Event: [Brief description]
Time detected: [HH:MM]
Initial source: [Where we learned of this]
事件: [简要描述]
发现时间: [HH:MM]
初始来源: [信息获取渠道]
Immediate actions (0-10 min)
即时行动(0-10分钟)
- Verify event is real (minimum 2 independent sources)
- Alert editor/team lead
- Check wire services (AP, Reuters, AFP)
- Monitor official accounts (agencies, officials)
- DO NOT publish unverified claims
- 验证事件真实性(至少2个独立来源)
- 通知编辑/团队负责人
- 查看通讯社消息(AP、Reuters、AFP)
- 监控官方账号(机构、官员)
- 不得发布未经核实的内容
Verification phase (10-30 min)
核实阶段(10-30分钟)
- Primary source contacted/confirmed
- Location verified (if applicable)
- Official statement obtained or requested
- Eyewitness accounts gathered (note: unverified)
- Social media claims flagged for verification
- 联系并确认主要来源
- 核实事件地点(如适用)
- 获取或请求官方声明
- 收集目击者陈述(注:未核实)
- 标记社交媒体上需要核实的主张
First publication decision
首次发布决策
- What we KNOW (confirmed facts only)
- What we DON'T know (be explicit)
- What we're working to confirm
- Attribution clear for every claim
undefined- 已确认事实(仅包含已核实内容)
- 未知信息(明确说明)
- 待确认事项
- 所有主张均明确标注来源
undefinedNewsroom escalation matrix
新闻编辑室升级矩阵
python
from enum import Enum
from dataclasses import dataclass
from typing import List
class CrisisLevel(Enum):
LEVEL_1 = "routine" # Single reporter can handle
LEVEL_2 = "elevated" # Editor involvement needed
LEVEL_3 = "major" # Multiple reporters, editor oversight
LEVEL_4 = "critical" # All hands, executive involvement
@dataclass
class BreakingEvent:
description: str
level: CrisisLevel
confirmed_facts: List[str]
unconfirmed_claims: List[str]
sources_contacted: List[str]
assigned_reporters: List[str]
def escalation_needed(self) -> bool:
"""Determine if event needs escalation."""
triggers = [
len(self.unconfirmed_claims) > 5, # Too many unknowns
"fatalities" in self.description.lower(),
"official" in self.description.lower(),
"government" in self.description.lower(),
]
return any(triggers)
ESCALATION_TRIGGERS = {
CrisisLevel.LEVEL_2: [
"Multiple fatalities confirmed",
"Major public figure involved",
"Legal/liability concerns",
"Significant local impact",
],
CrisisLevel.LEVEL_3: [
"National news potential",
"Active danger to public",
"Major institution affected",
"Coordinated misinformation detected",
],
CrisisLevel.LEVEL_4: [
"Mass casualty event",
"Government/democracy implications",
"Our organization directly involved",
"Imminent physical threat",
],
}python
from enum import Enum
from dataclasses import dataclass
from typing import List
class CrisisLevel(Enum):
LEVEL_1 = "routine" # Single reporter can handle
LEVEL_2 = "elevated" # Editor involvement needed
LEVEL_3 = "major" # Multiple reporters, editor oversight
LEVEL_4 = "critical" # All hands, executive involvement
@dataclass
class BreakingEvent:
description: str
level: CrisisLevel
confirmed_facts: List[str]
unconfirmed_claims: List[str]
sources_contacted: List[str]
assigned_reporters: List[str]
def escalation_needed(self) -> bool:
"""Determine if event needs escalation."""
triggers = [
len(self.unconfirmed_claims) > 5, # Too many unknowns
"fatalities" in self.description.lower(),
"official" in self.description.lower(),
"government" in self.description.lower(),
]
return any(triggers)
ESCALATION_TRIGGERS = {
CrisisLevel.LEVEL_2: [
"Multiple fatalities confirmed",
"Major public figure involved",
"Legal/liability concerns",
"Significant local impact",
],
CrisisLevel.LEVEL_3: [
"National news potential",
"Active danger to public",
"Major institution affected",
"Coordinated misinformation detected",
],
CrisisLevel.LEVEL_4: [
"Mass casualty event",
"Government/democracy implications",
"Our organization directly involved",
"Imminent physical threat",
],
}Rapid verification framework
快速核查框架
The 5-minute verification
5分钟快速核查法
When time is critical, prioritize these checks:
markdown
undefined时间紧迫时,优先完成以下检查:
markdown
undefinedRapid verification checklist
快速核查清单
Source check (1 min)
来源核查(1分钟)
- Who is claiming this?
- Are they in position to know?
- Have they been reliable before?
- 提出该主张的主体是谁?
- 他们是否有知情权限?
- 过往是否可靠?
Corroboration (2 min)
交叉验证(2分钟)
- Does anyone else confirm?
- Check wire services
- Check official sources
- 是否有其他主体确认该内容?
- 查看通讯社消息
- 查看官方来源
Red flags (1 min)
风险预警(1分钟)
- Too perfect/dramatic?
- Matches known false narratives?
- Single source only?
- 内容是否过于完美/戏剧化?
- 是否匹配已知虚假叙事?
- 是否仅单一来源?
Decision (1 min)
决策(1分钟)
- PUBLISH: Multiple credible sources, no red flags
- HOLD: Needs more verification
- MONITOR: Developing, don't publish yet
undefined- 发布:多可信来源,无风险预警
- 暂缓:需进一步核实
- 监控:事件在发展,暂不发布
undefinedVerification triage system
核查优先级排序系统
python
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
from enum import Enum
class VerificationStatus(Enum):
UNVERIFIED = "unverified"
PARTIALLY_VERIFIED = "partially_verified"
VERIFIED = "verified"
DEBUNKED = "debunked"
UNCERTAIN = "uncertain"
@dataclass
class Claim:
text: str
source: str
first_seen: datetime
urgency: int # 1-5, higher = more urgent to verify
status: VerificationStatus = VerificationStatus.UNVERIFIED
verification_notes: str = ""
verifier: Optional[str] = None
class VerificationQueue:
"""Manage claims awaiting verification."""
def __init__(self):
self.claims = []
def add_claim(self, claim: Claim):
self.claims.append(claim)
self._sort_by_priority()
def _sort_by_priority(self):
"""Urgent claims first, then by time seen."""
self.claims.sort(
key=lambda c: (-c.urgency, c.first_seen)
)
def next_claim(self) -> Optional[Claim]:
"""Get highest priority unverified claim."""
for claim in self.claims:
if claim.status == VerificationStatus.UNVERIFIED:
return claim
return None
def update_status(self, claim: Claim,
status: VerificationStatus,
notes: str,
verifier: str):
claim.status = status
claim.verification_notes = notes
claim.verifier = verifierpython
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
from enum import Enum
class VerificationStatus(Enum):
UNVERIFIED = "unverified"
PARTIALLY_VERIFIED = "partially_verified"
VERIFIED = "verified"
DEBUNKED = "debunked"
UNCERTAIN = "uncertain"
@dataclass
class Claim:
text: str
source: str
first_seen: datetime
urgency: int # 1-5, higher = more urgent to verify
status: VerificationStatus = VerificationStatus.UNVERIFIED
verification_notes: str = ""
verifier: Optional[str] = None
class VerificationQueue:
"""Manage claims awaiting verification."""
def __init__(self):
self.claims = []
def add_claim(self, claim: Claim):
self.claims.append(claim)
self._sort_by_priority()
def _sort_by_priority(self):
"""Urgent claims first, then by time seen."""
self.claims.sort(
key=lambda c: (-c.urgency, c.first_seen)
)
def next_claim(self) -> Optional[Claim]:
"""Get highest priority unverified claim."""
for claim in self.claims:
if claim.status == VerificationStatus.UNVERIFIED:
return claim
return None
def update_status(self, claim: Claim,
status: VerificationStatus,
notes: str,
verifier: str):
claim.status = status
claim.verification_notes = notes
claim.verifier = verifierCrisis communication templates
危机沟通模板
Holding statement
占位声明
For when you need to say something but facts are incomplete:
markdown
undefined适用于需要发声但事实尚未明确的场景:
markdown
undefinedInitial statement template
初始声明模板
[Organization] is aware of [brief description of situation].
We are actively [gathering information / investigating / monitoring the situation].
[If applicable: The safety of [stakeholders] is our top priority.]
We will provide updates as verified information becomes available.
For media inquiries: [contact]
For [affected parties]: [resource/hotline]
Last updated: [timestamp]
undefined[企业名称]已获悉[事件简要描述]。
我们正在积极[收集信息/开展调查/监控事件进展]。
[如适用:相关方的安全是我们的首要任务。]
我们将在获取核实信息后及时更新。
媒体咨询:[联系方式]
[受影响方]咨询:[资源/热线]
最后更新时间:[时间戳]
undefinedCorrection/clarification
更正/澄清声明
markdown
undefinedmarkdown
undefinedCorrection notice
更正通知
Correction [or Clarification]: An earlier version of this [article/statement/post] [stated/implied] [incorrect information].
[If factual error]: The correct information is: [accurate facts].
[If misleading]: To clarify: [accurate context].
This [article/statement] has been updated to reflect accurate information.
We regret the error.
[Timestamp of correction]
undefined更正[或澄清]:此前发布的[文章/声明/帖子]中[表述/暗示]了[错误信息]。
[若为事实错误]:正确信息为:[准确事实]。
[若为表述误导]:特此澄清:[准确背景]。
该[文章/声明]已更新为准确内容。
我们对此次失误深表歉意。
[更正时间戳]
undefinedRetraction (when necessary)
撤回声明(必要时)
markdown
undefinedmarkdown
undefinedRetraction notice
撤回通知
Retraction: [Publication name] is retracting [article title], published on [date].
[Brief explanation of what was wrong]: Our reporting [stated/relied on] [problematic element]. Subsequent verification revealed [why it was wrong].
[What you're doing about it]: We have [removed/updated] the article and are reviewing our editorial processes.
[Accountability]: We apologize to [affected parties] and our readers.
The full text of the original article is available [here/on request] for transparency.
Questions: [contact]
undefined撤回声明:[发布平台名称]决定撤回于[日期]发布的[文章标题]。
[错误内容简要说明]:我们的报道[表述/依赖于]有问题的内容。后续核实发现[错误原因]。
[后续措施]:我们已[删除/更新]该文章,并正在审查编辑流程。
[问责说明]:我们向[受影响方]及读者致歉。
为保证透明度,原文全文可[在此查看/按需索取]。
疑问咨询:[联系方式]
undefinedSocial media crisis response
社交媒体危机响应
Monitoring during crisis
危机监控
python
from dataclasses import dataclass
from datetime import datetime
from typing import List, Dict
from collections import Counter
@dataclass
class CrisisMention:
platform: str
content: str
author: str
timestamp: datetime
sentiment: str # positive, negative, neutral, misinformation
reach: int # followers/potential impressions
requires_response: bool = False
class CrisisMonitor:
"""Track crisis-related social mentions."""
def __init__(self, crisis_keywords: List[str]):
self.keywords = crisis_keywords
self.mentions: List[CrisisMention] = []
def add_mention(self, mention: CrisisMention):
self.mentions.append(mention)
def get_dashboard(self) -> dict:
"""Real-time crisis overview."""
recent = [m for m in self.mentions
if (datetime.now() - m.timestamp).seconds < 3600]
return {
'total_mentions_1h': len(recent),
'sentiment_breakdown': self._sentiment_counts(recent),
'top_platforms': self._platform_counts(recent),
'misinformation_count': len([
m for m in recent
if m.sentiment == 'misinformation'
]),
'high_reach_negative': [
m for m in recent
if m.sentiment == 'negative' and m.reach > 10000
],
'pending_responses': len([
m for m in self.mentions
if m.requires_response
])
}
def _sentiment_counts(self, mentions: List[CrisisMention]) -> Dict:
return dict(Counter(m.sentiment for m in mentions))
def _platform_counts(self, mentions: List[CrisisMention]) -> Dict:
return dict(Counter(m.platform for m in mentions))python
from dataclasses import dataclass
from datetime import datetime
from typing import List, Dict
from collections import Counter
@dataclass
class CrisisMention:
platform: str
content: str
author: str
timestamp: datetime
sentiment: str # positive, negative, neutral, misinformation
reach: int # followers/potential impressions
requires_response: bool = False
class CrisisMonitor:
"""Track crisis-related social mentions."""
def __init__(self, crisis_keywords: List[str]):
self.keywords = crisis_keywords
self.mentions: List[CrisisMention] = []
def add_mention(self, mention: CrisisMention):
self.mentions.append(mention)
def get_dashboard(self) -> dict:
"""Real-time crisis overview."""
recent = [m for m in self.mentions
if (datetime.now() - m.timestamp).seconds < 3600]
return {
'total_mentions_1h': len(recent),
'sentiment_breakdown': self._sentiment_counts(recent),
'top_platforms': self._platform_counts(recent),
'misinformation_count': len([
m for m in recent
if m.sentiment == 'misinformation'
]),
'high_reach_negative': [
m for m in recent
if m.sentiment == 'negative' and m.reach > 10000
],
'pending_responses': len([
m for m in self.mentions
if m.requires_response
])
}
def _sentiment_counts(self, mentions: List[CrisisMention]) -> Dict:
return dict(Counter(m.sentiment for m in mentions))
def _platform_counts(self, mentions: List[CrisisMention]) -> Dict:
return dict(Counter(m.platform for m in mentions))Response decision tree
响应决策树
markdown
undefinedmarkdown
undefinedShould we respond to this?
是否需要回应?
High priority (respond quickly)
高优先级(快速回应)
- Factual misinformation spreading rapidly
- Direct question from journalist
- Affected party seeking help
- Influential account spreading false info
- 虚假信息快速传播
- 记者直接提问
- 受影响方寻求帮助
- 有影响力账号传播虚假信息
Medium priority (respond thoughtfully)
中优先级(审慎回应)
- General negative sentiment
- Questions about our response
- Comparisons to competitors' handling
- 普遍负面情绪
- 关于我们应对措施的疑问
- 与竞争对手应对方式的比较
Low priority / Do not engage
低优先级/不回应
- Obvious trolling
- Bad faith actors
- Pile-on with no new claims
- Emotional venting (let it pass)
- 明显恶意挑衅
- 不良行为主体
- 无新主张的跟风评论
- 情绪宣泄(任其发展)
Never respond
绝对不回应的情况
- While angry
- With unverified information
- In a way that escalates conflict
- By deleting legitimate criticism
undefined- 情绪激动时
- 信息未核实
- 回应会加剧冲突
- 删除合理批评
undefinedInternal crisis coordination
内部危机协调
Communication chain
沟通链路
python
from dataclasses import dataclass
from typing import List, Optional
from datetime import datetime
@dataclass
class CrisisTeamMember:
name: str
role: str
phone: str
email: str
backup: Optional['CrisisTeamMember'] = None
@dataclass
class CrisisLog:
"""Maintain record of all crisis decisions."""
entries: List[dict] = None
def __post_init__(self):
self.entries = self.entries or []
def log(self, action: str, decision_maker: str,
rationale: str, outcome: str = "pending"):
self.entries.append({
'timestamp': datetime.now().isoformat(),
'action': action,
'decision_maker': decision_maker,
'rationale': rationale,
'outcome': outcome
})
def export_for_postmortem(self) -> str:
"""Generate timeline for after-action review."""
lines = ["# Crisis Response Timeline\n"]
for entry in self.entries:
lines.append(
f"**{entry['timestamp']}** - {entry['action']}\n"
f"- Decision by: {entry['decision_maker']}\n"
f"- Rationale: {entry['rationale']}\n"
f"- Outcome: {entry['outcome']}\n"
)
return '\n'.join(lines)python
from dataclasses import dataclass
from typing import List, Optional
from datetime import datetime
@dataclass
class CrisisTeamMember:
name: str
role: str
phone: str
email: str
backup: Optional['CrisisTeamMember'] = None
@dataclass
class CrisisLog:
"""Maintain record of all crisis decisions."""
entries: List[dict] = None
def __post_init__(self):
self.entries = self.entries or []
def log(self, action: str, decision_maker: str,
rationale: str, outcome: str = "pending"):
self.entries.append({
'timestamp': datetime.now().isoformat(),
'action': action,
'decision_maker': decision_maker,
'rationale': rationale,
'outcome': outcome
})
def export_for_postmortem(self) -> str:
"""Generate timeline for after-action review."""
lines = ["# Crisis Response Timeline\n"]
for entry in self.entries:
lines.append(
f"**{entry['timestamp']}** - {entry['action']}\n"
f"- Decision by: {entry['decision_maker']}\n"
f"- Rationale: {entry['rationale']}\n"
f"- Outcome: {entry['outcome']}\n"
)
return '\n'.join(lines)Status update template
状态更新模板
For keeping stakeholders informed:
markdown
undefined用于向利益相关方同步信息:
markdown
undefinedCrisis status update #[X]
危机状态更新 #[X]
As of: [timestamp]
Next update: [scheduled time]
截至时间: [时间戳]
下次更新: [计划时间]
Current situation
当前态势
[2-3 sentence summary of where things stand]
[2-3句话总结当前进展]
What we know
已确认事实
- [Confirmed fact 1]
- [Confirmed fact 2]
- [已确认事实1]
- [已确认事实2]
What we're working on
正在推进的工作
- [Action item 1] - [owner]
- [Action item 2] - [owner]
- [行动项1] - [负责人]
- [行动项2] - [负责人]
Key decisions made
已做出的关键决策
- [Decision] - [rationale]
- [决策内容] - [决策依据]
Immediate next steps
下一步紧急行动
- [Next action]
- [Next action]
- [行动内容]
- [行动内容]
Resources needed
所需资源
- [Resource/support needed]
Contact: [Crisis lead name and number]
undefined- [所需资源/支持]
联系人: [危机负责人姓名及联系方式]
undefinedPost-crisis review
危机后复盘
After-action checklist
事后检查清单
markdown
undefinedmarkdown
undefinedPost-crisis review template
危机后复盘模板
Timeline reconstruction
时间线还原
- When did we first learn of the crisis?
- When did we first respond publicly?
- Key decision points and timing
- 我们首次获悉危机的时间?
- 首次公开回应的时间?
- 关键决策节点及时间
What went well
做得好的方面
- [Specific success 1]
- [Specific success 2]
- [具体成功点1]
- [具体成功点2]
What could improve
待改进之处
- [Gap or failure 1] → [Recommended fix]
- [Gap or failure 2] → [Recommended fix]
- [差距/不足1] → [建议改进方案]
- [差距/不足2] → [建议改进方案]
Process questions
流程问题
- Did escalation work as intended?
- Were the right people involved?
- Did we have accurate information when needed?
- Was external communication timely and accurate?
- 升级机制是否按预期运行?
- 参与人员是否合适?
- 需要时是否有准确信息?
- 对外沟通是否及时准确?
Specific improvements
具体改进措施
- Update crisis protocol to address [gap]
- Train team on [identified weakness]
- Add [resource/tool] for future incidents
- 更新危机应对流程以解决[差距]
- 针对[已识别弱点]开展团队培训
- 为未来事件添加[资源/工具]
Documentation
文档归档
- All communications archived: [ ] Yes
- Decision log complete: [ ] Yes
- Media coverage compiled: [ ] Yes
undefined- 所有沟通内容已归档:[ ] 是
- 决策日志完整:[ ] 是
- 媒体报道已整理:[ ] 是
undefinedMisinformation rapid response
虚假信息快速响应
Counter-messaging framework
反 messaging 框架
markdown
undefinedmarkdown
undefinedMisinformation response checklist
虚假信息响应检查清单
Before responding
回应前评估
- Is this claim spreading significantly?
- Will our response reach the affected audience?
- Could responding amplify the false claim?
- 该主张是否在大量传播?
- 我们的回应能否触达受影响受众?
- 回应是否会放大虚假主张?
The response formula
回应公式
- Lead with truth (don't repeat the myth first)
- Be specific about what's accurate
- Explain briefly why the false claim is wrong
- Provide source for accurate information
- 以真相开篇(不要先重复虚假信息)
- 明确说明准确内容
- 简要解释虚假主张错误的原因
- 提供准确信息的来源
Example structure
示例结构
GOOD: "The event starts at 7pm at City Hall. Some posts incorrectly listed the time as 5pm."
BAD: "Some people are saying the event is at 5pm. That's wrong. It's actually at 7pm."
(Repeating the myth first reinforces it)
undefined正确:“活动于晚7点在市政厅开始。部分帖子错误地将时间列为5点。”
错误:“有人说活动在5点开始,这是错误的,实际是7点。”
(先重复虚假信息会强化受众记忆)
undefinedJournalist safety during crisis
记者危机现场安全
markdown
undefinedmarkdown
undefinedField safety checklist
外勤安全检查清单
Before deployment
出发前
- Editor knows your location and check-in schedule
- Emergency contacts updated
- Phone charged, backup battery
- First aid basics reviewed
- Exit routes identified
- 编辑知晓你的位置及汇报时间表
- 紧急联系人已更新
- 手机已充电,备有充电宝
- 已复习基础急救知识
- 已确定撤离路线
During coverage
报道期间
- Regular check-ins maintained
- Location sharing active
- Press credentials visible
- Recording when safe to do so
- Not taking unnecessary risks for story
- 保持定期汇报
- 位置共享已开启
- 记者证可见
- 安全情况下进行记录
- 不为报道冒不必要的风险
If situation escalates
若局势升级
- Leave immediately if directed
- Follow crowd flow, don't fight it
- Protect equipment but not at personal risk
- Contact newsroom ASAP
undefined- 接到指令立即撤离
- 跟随人群流动,不要逆流
- 保护设备但不以个人安全为代价
- 立即联系新闻编辑室
undefinedRelated skills
相关技能
- source-verification - Verify claims during fast-moving events
- social-media-intelligence - Monitor spread of information
- interview-transcription - Document statements accurately
- source-verification - 快速事件中验证主张
- social-media-intelligence - 监控信息传播
- interview-transcription - 准确记录陈述
Skill metadata
技能元数据
| Field | Value |
|---|---|
| Version | 1.0.0 |
| Created | 2025-12-26 |
| Author | Claude Skills for Journalism |
| Domain | Communications, Journalism |
| Complexity | Advanced |
| 字段 | 值 |
|---|---|
| 版本 | 1.0.0 |
| 创建时间 | 2025-12-26 |
| 作者 | Claude Skills for Journalism |
| 领域 | 传播、新闻 |
| 复杂度 | 高级 |