Last Updated June 8, 2026
Storytelling frameworks help communicators organize change. They give structure to movement: from confusion to recognition, from problem to response, from conflict to consequence, from lived experience to shared meaning, and from passive awareness to responsible action. In content systems, storytelling is not merely decoration. It is a way of arranging evidence, context, stakes, agency, sequence, and transformation so readers can understand why something matters.
Storytelling Frameworks for Transformation and Action examines how narrative structures can support learning, persuasion, public reasoning, strategic communication, institutional memory, and ethical engagement. It treats stories as structured frameworks rather than as emotional packaging. A responsible story does not simply make content more compelling. It clarifies who is involved, what changes, why the change matters, how movement happens, and what kind of action is appropriate.

This article examines storytelling frameworks as models for transformation, action, meaning-making, narrative sequence, audience agency, ethical communication, and content-system design. It explains how story arcs, character roles, conflict, stakes, setting, evidence, turning points, resolution, and calls to action can support structured communication without collapsing into manipulation or formula. It also shows how storytelling frameworks differ from AIDA, PAS, BAB, 5W1H, hierarchy-of-effects models, funnels, buyer journeys, and generic campaign narratives. The article includes advanced Python and R workflows for narrative-structure audits, transformation-claim review, agency scoring, evidence-support checks, ethical-risk flags, and governance-ready storytelling reports.
Why Storytelling Frameworks Matter
Storytelling frameworks matter because people often understand change through sequence, agency, and consequence. A disconnected list of facts may inform, but it may not help readers understand what changed, who was affected, why the change matters, or what action follows. A story framework gives explanatory movement to information.
This does not mean every communication task should become a dramatic narrative. Some content should define, compare, document, calculate, audit, or preserve information without narrative embellishment. The value of storytelling frameworks is more precise: they help organize complex material when transformation, conflict, decision, experience, identity, learning, or action is central to the communication problem.
In research communication, story structure can help readers follow a question from problem to method to finding to implication. In public policy, it can connect lived experience to institutional choices. In education, it can help learners move from orientation to practice. In strategy, it can clarify why a future direction matters. In content frameworks, storytelling can connect article maps, internal links, evidence layers, examples, and calls to action into a coherent reader journey.
| Communication challenge | Storytelling-framework response | Content-system benefit |
|---|---|---|
| The audience sees facts but not meaning. | Connect facts through context, stakes, and consequence. | Readers understand why the information matters. |
| The issue feels abstract. | Introduce actors, experiences, examples, and decision points. | Readers can locate human relevance without losing complexity. |
| The transformation claim feels unsupported. | Show sequence, mechanism, evidence, limits, and effort. | Readers see how change happens. |
| The call to action feels abrupt. | Build movement from context to tension to judgment to action. | Readers understand the logic of the next step. |
| The message risks manipulation. | Review agency, evidence, proportionality, and representation. | Story supports trust rather than pressure. |
Storytelling frameworks help communication become memorable, but memorability alone is not enough. The story must also be accurate, fair, evidence-aware, and responsible.
What Storytelling Frameworks Are
Storytelling frameworks are structured models for organizing narrative communication. They define how a story establishes context, introduces actors, creates tension, develops movement, presents change, and supports meaning. They may appear as story arcs, journey models, case-study structures, transformation narratives, problem-solution stories, origin stories, learning journeys, public-interest narratives, or institutional memory patterns.
Storytelling frameworks can be simple or complex. A basic story may move from situation to complication to resolution. A transformation story may move from before to disruption to struggle to insight to change. A public-interest story may move from lived experience to structural context to policy consequence to collective action. A research story may move from question to method to evidence to interpretation to limitation.
The common thread is sequence. Story frameworks organize movement. They help writers decide what comes first, what changes, who experiences the change, what is at stake, what evidence supports the claim, and what the audience is being asked to understand or do.
| Storytelling framework element | Core question | Communication function |
|---|---|---|
| Setting | Where does the story begin? | Provides context, scope, and initial conditions. |
| Actors | Who experiences, causes, resists, or enables change? | Makes agency, responsibility, and perspective visible. |
| Tension | What problem, conflict, gap, risk, or uncertainty drives movement? | Clarifies stakes and relevance. |
| Sequence | How does change unfold over time? | Creates logical and emotional movement. |
| Transformation | What changes, and under what conditions? | Defines outcome, learning, decision, or adaptation. |
| Action | What can the audience understand, choose, support, or do? | Connects meaning to responsible next steps. |
A storytelling framework is not the same as a slogan, anecdote, testimonial, or emotional hook. It is the architecture that makes a story coherent and accountable.
Storytelling as Structure, Not Decoration
Storytelling is often treated as a surface layer added after the “real” information has been assembled. In this view, facts come first and story makes them more engaging. That can produce shallow content: a dramatic opening, a human anecdote, a few emotional cues, and then a return to disconnected claims.
A stronger approach treats storytelling as structure. The story helps determine which facts matter, how evidence is sequenced, where context belongs, how conflict is framed, what transformation is credible, and how action is justified. Story is not a decorative wrapper. It is a way of organizing explanation around change.
This distinction matters for content frameworks. A story can clarify evidence, but it can also distort evidence. It can humanize a system, but it can also reduce a system to one experience. It can support action, but it can also pressure action before understanding. Treating storytelling as structure allows editors to audit it.
| Decorative storytelling | Structural storytelling |
|---|---|
| Adds an anecdote to make content feel human. | Uses narrative structure to clarify actors, context, stakes, and change. |
| Uses emotion to attract attention. | Connects emotion to evidence, consequence, and agency. |
| Emphasizes drama or inspiration. | Explains how transformation happens and what limits remain. |
| May simplify complexity for impact. | Preserves complexity while making it navigable. |
| Ends with a generic call to action. | Builds a next step that fits the story’s evidence and audience readiness. |
Storytelling becomes more useful when it can be reviewed as an explanatory and ethical structure.
Core Functions of Storytelling Frameworks
Storytelling frameworks help content systems organize transformation, agency, conflict, meaning, and action without reducing communication to formula.
They create orientation
Stories establish where the audience is, what situation matters, and why the subject deserves attention.
They clarify agency
They identify who acts, who is affected, who decides, who benefits, and who carries risk.
They organize tension
They make conflict, uncertainty, friction, contradiction, or unmet need visible.
They support transformation
They show what changes, how change happens, and what conditions make change credible.
They connect evidence to meaning
They help readers understand why evidence matters rather than encountering facts in isolation.
They support audience movement
They guide readers from context to judgment, decision, learning, participation, or action.
They enable ethical review
They can be audited for overdramatization, agency distortion, emotional pressure, representation risk, and unsupported transformation claims.
These functions make storytelling frameworks useful for content strategy, research communication, public-interest messaging, institutional communication, and knowledge-system design.
Setting and Context: Where Meaning Begins
Every story begins somewhere. In explanatory and strategic communication, setting is not just physical place. It may be a social context, institutional environment, policy landscape, market condition, research field, technical system, historical moment, or knowledge domain. Setting tells the audience what world the story takes place in.
Context matters because transformation cannot be understood without starting conditions. A success story without context becomes myth. A failure story without context becomes blame. A policy story without institutional setting becomes abstraction. A technology story without user environment becomes hype.
In content frameworks, setting is often established through article introductions, series context, article maps, timelines, definitions, source notes, and explanatory tables. Strong setting helps readers understand the boundaries of the story before they are asked to interpret tension or action.
| Context dimension | Question | Why it matters |
|---|---|---|
| Historical context | What came before this situation? | Prevents the story from appearing sudden or isolated. |
| Institutional context | What organization, system, or rule structure shapes the story? | Clarifies constraints and authority. |
| Audience context | What does the audience already know or need? | Shapes explanation and pacing. |
| Technical context | What process, platform, or method is involved? | Supports accurate mechanism explanation. |
| Ethical context | Who is affected, represented, or at risk? | Prevents the story from becoming extractive or one-sided. |
Setting is the ground beneath the story. Without it, transformation floats without explanation.
Actors and Agency: Who Moves the Story
Storytelling frameworks depend on actors. Actors may be individuals, communities, organizations, institutions, publics, researchers, designers, regulators, users, learners, or decision-makers. The key question is not merely who appears in the story, but who has agency.
Agency means the capacity to perceive, decide, act, resist, adapt, or be affected. A story can distort reality by assigning too much agency to one actor and too little to others. It can turn structural problems into personal failures. It can make institutions disappear. It can use affected communities as examples while giving them no voice or decision-making role.
Responsible storytelling requires actor mapping. Who experiences the problem? Who defines the problem? Who benefits from the proposed change? Who bears cost or risk? Who has authority? Who is missing from the story?
| Actor type | Role in story | Governance question |
|---|---|---|
| Protagonist | The actor whose experience anchors the story. | Is this perspective represented fairly and with context? |
| Affected group | People or communities who experience consequences. | Are they visible as agents, not merely examples? |
| Institution | Organization or system with authority or responsibility. | Is responsibility accurately assigned? |
| Guide or helper | Actor, tool, method, or institution that supports movement. | Does the story avoid savior framing? |
| Audience | The reader, viewer, learner, citizen, user, or decision-maker. | Is the audience invited to act responsibly rather than pressured? |
Agency is one of the main ethical tests of a storytelling framework. A story should not hide power behind narrative simplicity.
Tension and Stakes: Why Change Matters
Stories move through tension. Tension may appear as conflict, uncertainty, contradiction, risk, friction, injustice, tradeoff, loss, opportunity, or unanswered question. In communication frameworks, tension explains why the audience should continue paying attention.
Responsible tension differs from manufactured drama. It should be grounded in evidence, lived reality, structural context, or legitimate uncertainty. It should not exaggerate threat, shame the audience, invent pain, or simplify complexity to create emotional pressure.
Stakes explain why the tension matters. What happens if nothing changes? What becomes possible if change occurs? Who is affected? What values are involved? What tradeoffs must be considered? Without stakes, the story may be interesting but not meaningful.
| Tension type | Responsible use | Risk |
|---|---|---|
| Problem tension | Names a real difficulty, gap, or unmet need. | Can become invented pain. |
| Conflict tension | Clarifies competing interests or values. | Can reduce complexity to villain framing. |
| Uncertainty tension | Shows what is unknown and why it matters. | Can be exploited as fear. |
| Transformation tension | Shows the gap between current and desired states. | Can overpromise change. |
| Decision tension | Clarifies tradeoffs and consequences. | Can hide alternatives or pressure premature action. |
Good storytelling does not avoid tension. It makes tension truthful, proportionate, and useful.
Sequence and Turning Points: How Movement Happens
Sequence is the architecture of story movement. It determines how the audience moves from situation to complication, from complication to response, from response to consequence, and from consequence to learning or action. A story is not only a collection of events. It is an ordered relationship among events.
Turning points matter because they mark change. A turning point may be a discovery, decision, failure, policy shift, intervention, insight, feedback loop, crisis, experiment, or threshold. It explains why the story does not remain static.
In content frameworks, sequence appears in article structure, section order, article maps, learning pathways, internal links, case studies, and repository workflows. A strong sequence helps readers understand how a situation develops over time and how movement becomes possible.
| Sequence element | Question | Content use |
|---|---|---|
| Opening state | What situation begins the story? | Introduction, background, context, initial condition. |
| Complication | What disrupts, challenges, or reveals the problem? | Problem framing, evidence gap, conflict, risk. |
| Response | What action, decision, method, or inquiry follows? | Strategy, intervention, method, investigation. |
| Turning point | What changes the direction of the story? | Finding, insight, crisis, threshold, decision. |
| Consequence | What happens because of the response? | Outcome, implication, lesson, tradeoff, next step. |
Sequence makes transformation understandable. It shows that change has structure, not just sentiment.
Transformation and Resolution: What Changes
Transformation is central to many storytelling frameworks. Something changes: a character learns, a community adapts, a system fails, a policy shifts, a method clarifies, an organization realigns, or an audience understands differently. But transformation must be defined carefully.
Not every story needs a complete resolution. Some stories end with partial progress, unresolved tension, new questions, or a call for continued inquiry. In public-interest and research communication, a false sense of closure can be misleading. A responsible resolution should clarify what changed and what remains uncertain.
Transformation claims should be supported. If the story says a framework changed understanding, what evidence shows that? If a policy improved outcomes, what data support the claim? If a method improved clarity, what comparison or diagnostic demonstrates improvement? If an action is recommended, what makes it plausible?
| Transformation claim | Review question | Evidence support |
|---|---|---|
| Learning changed | What does the audience understand now that was unclear before? | Examples, summaries, assessments, comprehension signals. |
| Behavior changed | What action occurred and under what conditions? | Action records, adoption data, process evidence. |
| System changed | Which structure, rule, relationship, or feedback loop changed? | Systems analysis, policy records, model outputs, process documentation. |
| Trust changed | What increased credibility, confidence, or legitimacy? | Transparency, references, governance records, audience feedback. |
| Capacity changed | What became possible that was not possible before? | Skills evidence, workflow outputs, tool use, institutional practice. |
Transformation is strongest when it is credible, bounded, and connected to mechanism.
Action and Follow-Through: What the Audience Can Do
Storytelling frameworks often end with action, but action should not be treated as a generic closing gesture. The action should follow from the story’s evidence, stakes, audience readiness, and ethical context. A story may invite a reader to learn more, compare options, support a policy, apply a method, revise a workflow, join a conversation, donate, register, build, test, or reflect.
Follow-through matters because transformation rarely ends with one action. A reader who downloads a checklist may need guidance to use it. A learner who understands a framework may need practice. A community that supports change may need institutional pathways. A technical user who opens a repository may need documentation, data, tests, and examples.
Content frameworks can support action through internal links, GitHub repositories, templates, tutorials, summaries, case studies, review checklists, and governance records. The action should be accessible, transparent, and proportionate.
| Action type | Story function | Follow-through support |
|---|---|---|
| Learn more | Moves the audience toward deeper understanding. | Related articles, article maps, definitions, examples. |
| Apply a method | Turns understanding into practice. | Templates, code, workflows, checklists, documentation. |
| Compare options | Supports judgment and choice. | Comparison tables, criteria, tradeoff notes. |
| Participate | Connects story to public or institutional action. | Clear process, eligibility, expectations, feedback channels. |
| Maintain change | Supports durable transformation. | Review cycles, governance notes, revision queues, measurement plans. |
A responsible story does not simply inspire. It gives the audience a clear and honest way to continue.
Storytelling vs AIDA, PAS, BAB, 5W1H, and Response Models
Storytelling frameworks overlap with persuasive and explanatory frameworks, but they are not identical. AIDA structures movement from attention to action. PAS structures problem, agitation, and solution. BAB structures before, after, and bridge. 5W1H structures explanatory completeness. Hierarchy-of-effects models structure audience response stages.
Storytelling frameworks organize narrative movement. They ask how context, actors, tension, sequence, transformation, and action fit together. They can include persuasion, explanation, and response modeling, but their primary function is to make change meaningful and coherent.
| Framework | Main focus | Primary diagnostic question |
|---|---|---|
| Storytelling frameworks | Narrative movement, agency, transformation, and meaning. | How does change unfold, and why does it matter? |
| AIDA | Attention, interest, desire, and action. | Does the message support movement toward action? |
| PAS | Problem, agitation, and solution. | Is the problem real, the tension proportionate, and the solution clear? |
| BAB | Before, after, and bridge. | Is the transformation credible and the bridge visible? |
| 5W1H | Explanatory completeness. | Does the content answer who, what, when, where, why, and how? |
| Hierarchy of Effects | Response stages. | Where is the audience in the response pathway? |
These frameworks can complement one another. A responsible story may use 5W1H for completeness, PAS for tension, BAB for transformation, hierarchy-of-effects thinking for audience readiness, and evidence architecture for trust.
Storytelling in Content Frameworks
Storytelling frameworks can strengthen content frameworks by connecting individual articles into meaningful progression. A content system should not be a pile of isolated posts. It should help readers move through orientation, foundations, methods, examples, applications, critique, and action. Storytelling can help make that movement visible.
At the article level, storytelling helps structure introductions, case studies, examples, method explanations, and calls to action. At the series level, it helps organize article maps and reader progression. At the repository level, it connects code workflows to practical use. At the governance level, it helps preserve institutional memory about why content exists and how it should be maintained.
Storytelling can support content frameworks through:
- article openings that establish meaningful context;
- case studies that show method, evidence, consequence, and limitation;
- article maps that create cumulative learning arcs;
- internal links that guide readers from one stage of understanding to another;
- GitHub blocks that connect explanation to reproducible practice;
- metadata that records story role, audience state, and transformation claim;
- governance notes that preserve why a content pathway exists;
- revision workflows that check whether stories remain accurate and fair.
In content frameworks, storytelling is not only about narrative voice. It is about organizing knowledge so readers can follow change responsibly.
Ethical Risks in Story-Based Communication
Stories are powerful because they can make abstract issues concrete. That power creates risk. A story can humanize, but it can also exploit. It can clarify, but it can also oversimplify. It can motivate, but it can also manipulate. It can represent a community, but it can also appropriate experience or erase complexity.
The main ethical risks in story-based communication include overdramatization, false heroism, savior framing, selective evidence, emotional pressure, missing consent, agency distortion, stereotype reinforcement, and unsupported transformation claims. These risks are especially serious in nonprofit, health, policy, environmental, educational, and public-interest communication.
A responsible storytelling framework should preserve agency, context, evidence, proportionality, representation, and audience choice. It should distinguish a single example from a general pattern. It should avoid using one person’s story to make claims that require broader evidence.
| Ethical risk | What goes wrong | Responsible review question |
|---|---|---|
| Overdramatization | The story intensifies conflict beyond evidence. | Are stakes proportionate and supported? |
| Savior framing | The helper becomes central while affected people lose agency. | Who is allowed to act, decide, and speak? |
| Selective evidence | One vivid example substitutes for broader support. | Does the example fairly represent the pattern? |
| False transformation | The story promises change without mechanism or limitation. | Is the transformation credible and bounded? |
| Emotional pressure | The story pushes action before understanding. | Does the audience retain agency and context? |
| Representation harm | People or communities are simplified, stereotyped, or used instrumentally. | Is representation accurate, respectful, and contextual? |
Ethical storytelling is not weaker storytelling. It is more trustworthy storytelling.
Governance and Review
Storytelling frameworks should be governed because stories can drift over time. A case example may become outdated. A transformation claim may outgrow the evidence. A personal story may be reused outside its original context. A campaign narrative may become more dramatic as teams optimize for attention. Governance helps prevent narrative drift.
A storytelling governance process should review story purpose, actor representation, consent, evidence support, transformation claims, emotional tone, action fit, and update needs. It should ask whether the story still supports the content framework’s mission and whether it remains fair to the people, systems, and evidence it represents.
| Governance task | Review question | Why it matters |
|---|---|---|
| Story purpose review | Why is this story being used? | Prevents decorative or manipulative story use. |
| Actor review | Who is represented, missing, or given agency? | Protects fairness and accountability. |
| Evidence review | Which claims does the story support, and which require additional evidence? | Prevents anecdote from replacing proof. |
| Transformation review | Is the change credible, bounded, and current? | Prevents overclaiming. |
| Consent and representation review | Are permissions, context, and dignity preserved? | Protects subjects and communities. |
| Action review | Does the next step match audience readiness and evidence? | Prevents pressure and false urgency. |
Governance turns story from a persuasive asset into accountable communication infrastructure.
Risks and Limits
Storytelling frameworks are useful, but limited. Not every explanation should become a story. Some subjects require taxonomy, calculation, legal precision, documentation, procedural clarity, or model comparison more than narrative movement. Story can make complexity accessible, but it can also distort complexity if used carelessly.
One limit is narrative bias. Stories tend to favor sequence, agency, causality, and closure. Complex systems may involve feedback loops, delayed effects, distributed responsibility, uncertainty, and no simple resolution. A story may make such systems easier to understand, but it may also make them seem more linear than they are.
Another limit is emotional salience. A vivid example can dominate reader judgment even when it is not representative. A strong story can make weak evidence feel stronger than it is. A moving narrative can make a policy, product, or intervention seem more effective than the data support.
| Limit | What goes wrong | Better practice |
|---|---|---|
| Linear simplification | Complex systems appear as simple sequences. | Use systems explanation alongside narrative structure. |
| False closure | The story resolves uncertainty too neatly. | Preserve open questions, limits, and unresolved tensions. |
| Anecdotal dominance | One vivid case substitutes for evidence. | Separate example, pattern, and proof. |
| Hero bias | Individuals are overemphasized while structures disappear. | Map institutions, systems, constraints, and collective agency. |
| Emotional overreach | Feeling is used to bypass judgment. | Connect emotion to evidence, context, and choice. |
The best storytelling frameworks help readers understand complexity without pretending complexity is simple.
Mathematics, Computation, and Modeling
Storytelling frameworks can be modeled computationally by treating narrative structure as a set of content signals. A story audit can evaluate whether an asset includes context, actors, tension, sequence, transformation, evidence, agency, action, and ethical review. These models do not determine story quality by themselves, but they can identify structural gaps and governance risks.
N_i = \frac{C_i + A_i + T_i + S_i + X_i + R_i}{6}
\]
Interpretation: Narrative completeness \(N_i\) can average context \(C_i\), agency \(A_i\), tension \(T_i\), sequence \(S_i\), transformation \(X_i\), and resolution or action \(R_i\) for content asset \(i\).
E_i = \frac{\text{supported narrative claims}_i}{\text{total narrative claims}_i}
\]
Interpretation: Evidence support \(E_i\) estimates how many story claims have appropriate source, example, method, or data support.
G_i = 1 – \frac{\text{ethical risk flags}_i}{\text{maximum risk flags}}
\]
Interpretation: Governance score \(G_i\) decreases as ethical-risk flags increase.
Q = \{i : N_i < \tau \lor E_i < \epsilon \lor G_i < \gamma\}
\]
Interpretation: A review queue \(Q\) can flag stories whose narrative completeness, evidence support, or governance score falls below defined thresholds.
These formulas support editorial review, not automatic judgment. Human review is still required to assess representation, consent, tone, power, evidence quality, cultural context, and audience impact.
Python Workflow: Professional Storytelling Framework Audit
A professional storytelling audit should evaluate narrative completeness, actor representation, agency, tension proportionality, transformation credibility, evidence support, action fit, and ethical-risk flags. The Python workflow below uses only the standard library and produces CSV and JSON outputs.
#!/usr/bin/env python3
"""
Storytelling framework audit workflow.
This workflow evaluates:
- context, actor, tension, sequence, transformation, and action coverage
- agency and representation support
- evidence support for narrative claims
- transformation credibility
- ethical-risk flags
- governance queues
- catalog exports
Uses only the Python standard library.
"""
from __future__ import annotations
from pathlib import Path
from dataclasses import dataclass, asdict
from collections import defaultdict
from datetime import datetime, timezone
import csv
import json
import math
ROOT = Path(__file__).resolve().parents[1]
DATA = ROOT / "data"
TABLES = ROOT / "outputs" / "tables"
REPORTS = ROOT / "outputs" / "reports"
AUDIT_LOGS = ROOT / "outputs" / "audit_logs"
CATALOG_EXPORTS = ROOT / "outputs" / "catalog_exports"
DIMENSIONS = ["context", "actors", "tension", "sequence", "transformation", "action"]
READINESS_THRESHOLD = 0.78
EVIDENCE_MINIMUM = 0.70
GOVERNANCE_MINIMUM = 0.70
WEIGHTS = {
"narrative_completeness": 0.24,
"evidence_support": 0.22,
"agency_score": 0.18,
"transformation_credibility": 0.16,
"governance_score": 0.12,
"ethical_review": 0.08
}
@dataclass(frozen=True)
class Finding:
severity: str
category: str
identifier: str
message: str
recommended_action: str
def ensure_dirs() -> None:
for directory in [TABLES, REPORTS, AUDIT_LOGS, CATALOG_EXPORTS]:
directory.mkdir(parents=True, exist_ok=True)
def read_csv(path: Path) -> list[dict[str, str]]:
with path.open(newline="", encoding="utf-8") as handle:
return list(csv.DictReader(handle))
def write_csv(path: Path, rows: list[dict[str, object]]) -> None:
if not rows:
return
path.parent.mkdir(parents=True, exist_ok=True)
with path.open("w", newline="", encoding="utf-8") as handle:
writer = csv.DictWriter(handle, fieldnames=list(rows[0].keys()))
writer.writeheader()
writer.writerows(rows)
def write_json(path: Path, payload: object) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
def yes(value: str) -> bool:
return str(value).strip().lower() in {"yes", "true", "1", "ready", "complete"}
def average(values: list[float]) -> float:
return sum(values) / len(values) if values else 0.0
def balance_score(values: list[float]) -> float:
mean_value = average(values)
if mean_value == 0:
return 0.0
variance = average([(value - mean_value) ** 2 for value in values])
standard_deviation = math.sqrt(variance)
balance = 1 - min(standard_deviation / mean_value, 1)
return max(0.0, min(balance, 1.0))
def severity_rank(severity: str) -> int:
return {"critical": 0, "high": 1, "medium": 2, "low": 3, "info": 4}.get(severity, 99)
def score_asset(asset: dict[str, str]) -> dict[str, float]:
dimension_values = [int(yes(asset[f"{dimension}_present"])) for dimension in DIMENSIONS]
supported_values = [
int(yes(asset[f"{dimension}_supported"]))
for dimension in DIMENSIONS
if yes(asset[f"{dimension}_present"])
]
narrative_completeness = sum(dimension_values) / len(DIMENSIONS)
evidence_support = average(supported_values) if supported_values else 0.0
narrative_balance = balance_score(dimension_values)
agency_score = (
int(yes(asset["affected_people_have_agency"])) +
int(yes(asset["institutional_responsibility_visible"])) +
int(yes(asset["audience_agency_preserved"]))
) / 3
transformation_credibility = (
int(yes(asset["transformation_bounded"])) +
int(yes(asset["mechanism_visible"])) +
int(yes(asset["limitations_present"]))
) / 3
governance_score = (
int(yes(asset["review_owner_present"])) +
int(yes(asset["consent_or_source_context_present"])) +
int(yes(asset["last_review_date_present"])) +
int(yes(asset["revision_queue_checked"]))
) / 4
ethical_review = (
int(not yes(asset["uses_savior_framing"])) +
int(not yes(asset["overdramatizes_tension"])) +
int(not yes(asset["uses_unsupported_anecdote"])) +
int(not yes(asset["uses_pressure_cta"]))
) / 4
readiness = (
WEIGHTS["narrative_completeness"] * narrative_completeness +
WEIGHTS["evidence_support"] * evidence_support +
WEIGHTS["agency_score"] * agency_score +
WEIGHTS["transformation_credibility"] * transformation_credibility +
WEIGHTS["governance_score"] * governance_score +
WEIGHTS["ethical_review"] * ethical_review
)
return {
"narrative_completeness_score": round(narrative_completeness, 4),
"evidence_support_score": round(evidence_support, 4),
"narrative_balance_score": round(narrative_balance, 4),
"agency_score": round(agency_score, 4),
"transformation_credibility_score": round(transformation_credibility, 4),
"governance_score": round(governance_score, 4),
"ethical_review_score": round(ethical_review, 4),
"storytelling_readiness_score": round(readiness, 4)
}
def audit_assets(assets: list[dict[str, str]]):
rows = []
findings = []
for asset in assets:
scores = score_asset(asset)
missing_dimensions = [
dimension for dimension in DIMENSIONS
if not yes(asset[f"{dimension}_present"])
]
unsupported_dimensions = [
dimension for dimension in DIMENSIONS
if yes(asset[f"{dimension}_present"]) and not yes(asset[f"{dimension}_supported"])
]
status = (
"ready"
if scores["storytelling_readiness_score"] >= READINESS_THRESHOLD
and scores["evidence_support_score"] >= EVIDENCE_MINIMUM
and scores["governance_score"] >= GOVERNANCE_MINIMUM
else "governance review"
)
row = {
"asset_id": asset["asset_id"],
"asset_name": asset["asset_name"],
"asset_type": asset["asset_type"],
"story_purpose": asset["story_purpose"],
"audience": asset["audience"],
**scores,
"missing_dimensions": ";".join(missing_dimensions),
"unsupported_dimensions": ";".join(unsupported_dimensions),
"storytelling_status": status
}
rows.append(row)
if missing_dimensions:
findings.append(Finding(
"medium",
"narrative_completeness",
asset["asset_id"],
f"Missing narrative dimensions: {', '.join(missing_dimensions)}.",
"Add the missing dimensions or mark them intentionally out of scope."
))
if unsupported_dimensions:
findings.append(Finding(
"high",
"evidence_support",
asset["asset_id"],
f"Narrative dimensions lack support: {', '.join(unsupported_dimensions)}.",
"Add evidence, examples, source context, method notes, or limitation language."
))
if scores["agency_score"] < 0.67:
findings.append(Finding(
"high",
"agency",
asset["asset_id"],
"Agency representation is weak.",
"Review affected people, institutional responsibility, and audience agency."
))
if scores["ethical_review_score"] < 0.75:
findings.append(Finding(
"high",
"ethical_review",
asset["asset_id"],
"Ethical storytelling score is below standard.",
"Remove savior framing, overdramatization, unsupported anecdote, or pressure CTA."
))
if status != "ready":
findings.append(Finding(
"medium",
"storytelling_readiness",
asset["asset_id"],
f"Storytelling readiness is {scores['storytelling_readiness_score']:.2f}.",
"Review narrative completeness, evidence, agency, transformation credibility, governance, and ethical-risk flags."
))
return rows, findings
def dimension_summary(assets: list[dict[str, str]]):
rows = []
for dimension in DIMENSIONS:
present = sum(1 for asset in assets if yes(asset[f"{dimension}_present"]))
supported = sum(
1 for asset in assets
if yes(asset[f"{dimension}_present"]) and yes(asset[f"{dimension}_supported"])
)
rows.append({
"narrative_dimension": dimension,
"assets_with_dimension": present,
"assets_with_support": supported,
"presence_rate": round(present / len(assets), 4) if assets else 0,
"support_rate": round(supported / present, 4) if present else 0
})
return rows
def audience_summary(readiness_rows):
grouped = defaultdict(list)
for row in readiness_rows:
grouped[row["audience"]].append(float(row["storytelling_readiness_score"]))
return [{
"audience": audience,
"asset_count": len(scores),
"average_storytelling_readiness": round(average(scores), 4)
} for audience, scores in sorted(grouped.items())]
def governance_queue(manual_queue, findings):
rows = []
for item in manual_queue:
rows.append({
"source": "manual_review_queue",
"severity": item["severity"],
"category": item["issue_type"],
"identifier": item["record_id"],
"message": item["review_note"],
"recommended_action": "Resolve through storytelling framework governance."
})
for finding in findings:
rows.append({
"source": "automated_storytelling_audit",
"severity": finding.severity,
"category": finding.category,
"identifier": finding.identifier,
"message": finding.message,
"recommended_action": finding.recommended_action
})
rows.sort(key=lambda row: (severity_rank(row["severity"]), row["category"], row["identifier"]))
return rows
def main():
ensure_dirs()
assets = read_csv(DATA / "storytelling_framework_inventory.csv")
manual_queue = read_csv(DATA / "editorial_review_queue.csv")
readiness_rows, findings = audit_assets(assets)
dimension_rows = dimension_summary(assets)
audience_rows = audience_summary(readiness_rows)
queue_rows = governance_queue(manual_queue, findings)
catalog_rows = [{
"series": "Content Frameworks",
"article_slug": "storytelling-frameworks-for-transformation-and-action",
"asset_id": row["asset_id"],
"asset_name": row["asset_name"],
"asset_type": row["asset_type"],
"story_purpose": row["story_purpose"],
"audience": row["audience"],
"storytelling_readiness_score": row["storytelling_readiness_score"],
"storytelling_status": row["storytelling_status"],
"github_path": "articles/storytelling-frameworks-for-transformation-and-action/"
} for row in readiness_rows]
write_csv(TABLES / "storytelling_readiness_report.csv", readiness_rows)
write_csv(TABLES / "storytelling_dimension_summary_report.csv", dimension_rows)
write_csv(TABLES / "storytelling_audience_summary_report.csv", audience_rows)
write_csv(TABLES / "storytelling_governance_queue.csv", queue_rows)
write_csv(CATALOG_EXPORTS / "storytelling_catalog_export.csv", catalog_rows)
report = {
"article": "Storytelling Frameworks for Transformation and Action",
"generated_at": datetime.now(timezone.utc).isoformat(),
"counts": {
"assets": len(assets),
"findings": len(findings),
"governance_queue": len(queue_rows)
},
"dimension_summary": dimension_rows,
"readiness": readiness_rows,
"governance_queue": queue_rows
}
write_json(REPORTS / "storytelling_framework_audit.json", report)
write_json(AUDIT_LOGS / "storytelling_framework_findings.json", [asdict(finding) for finding in findings])
print("Storytelling framework audit complete.")
print(TABLES / "storytelling_readiness_report.csv")
print(TABLES / "storytelling_governance_queue.csv")
print(REPORTS / "storytelling_framework_audit.json")
if __name__ == "__main__":
main()
This workflow treats storytelling as auditable communication infrastructure. It evaluates whether narrative assets include context, actors, tension, sequence, transformation, action, evidence support, agency, governance, and ethical review.
R Workflow: Narrative Balance, Agency, and Ethical-Risk Reporting
An R workflow can summarize narrative completeness, evidence support, agency, transformation credibility, and ethical-risk indicators across content assets. The example below uses base R so it can run in lightweight environments.
# storytelling_framework_analysis.R
# Base R workflow for storytelling framework audits.
args <- commandArgs(trailingOnly = FALSE)
file_arg <- grep("^--file=", args, value = TRUE)
if (length(file_arg) > 0) {
script_path <- normalizePath(sub("^--file=", "", file_arg[1]), mustWork = TRUE)
article_root <- normalizePath(file.path(dirname(script_path), ".."), mustWork = TRUE)
} else {
article_root <- getwd()
}
data_dir <- file.path(article_root, "data")
tables_dir <- file.path(article_root, "outputs", "tables")
figures_dir <- file.path(article_root, "outputs", "figures")
reports_dir <- file.path(article_root, "outputs", "reports")
catalog_dir <- file.path(article_root, "outputs", "catalog_exports")
dir.create(tables_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(figures_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(reports_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(catalog_dir, recursive = TRUE, showWarnings = FALSE)
assets <- read.csv(file.path(data_dir, "storytelling_framework_inventory.csv"), stringsAsFactors = FALSE)
review_queue <- read.csv(file.path(data_dir, "editorial_review_queue.csv"), stringsAsFactors = FALSE)
yes <- function(x) {
tolower(trimws(x)) %in% c("yes", "true", "1", "ready", "complete")
}
balance_score <- function(values) {
mean_value <- mean(values)
if (mean_value == 0) return(0)
balance <- 1 - min(sd(values) / mean_value, 1)
max(0, min(balance, 1))
}
dimensions <- c("context", "actors", "tension", "sequence", "transformation", "action")
dimension_matrix <- sapply(dimensions, function(dimension) yes(assets[[paste0(dimension, "_present")]]))
support_matrix <- sapply(dimensions, function(dimension) yes(assets[[paste0(dimension, "_supported")]]))
assets$narrative_completeness_score <- round(rowMeans(dimension_matrix), 4)
supported_dimension_counts <- rowSums(dimension_matrix & support_matrix)
present_dimension_counts <- rowSums(dimension_matrix)
assets$evidence_support_score <- ifelse(
present_dimension_counts == 0,
0,
supported_dimension_counts / present_dimension_counts
)
assets$evidence_support_score <- round(assets$evidence_support_score, 4)
assets$narrative_balance_score <- apply(dimension_matrix, 1, balance_score)
assets$narrative_balance_score <- round(assets$narrative_balance_score, 4)
assets$agency_score <- round(
(
yes(assets$affected_people_have_agency) +
yes(assets$institutional_responsibility_visible) +
yes(assets$audience_agency_preserved)
) / 3,
4
)
assets$transformation_credibility_score <- round(
(
yes(assets$transformation_bounded) +
yes(assets$mechanism_visible) +
yes(assets$limitations_present)
) / 3,
4
)
assets$governance_score <- round(
(
yes(assets$review_owner_present) +
yes(assets$consent_or_source_context_present) +
yes(assets$last_review_date_present) +
yes(assets$revision_queue_checked)
) / 4,
4
)
assets$ethical_review_score <- round(
(
!yes(assets$uses_savior_framing) +
!yes(assets$overdramatizes_tension) +
!yes(assets$uses_unsupported_anecdote) +
!yes(assets$uses_pressure_cta)
) / 4,
4
)
assets$storytelling_readiness_score <- round(
0.24 * assets$narrative_completeness_score +
0.22 * assets$evidence_support_score +
0.18 * assets$agency_score +
0.16 * assets$transformation_credibility_score +
0.12 * assets$governance_score +
0.08 * assets$ethical_review_score,
4
)
assets$storytelling_status <- ifelse(
assets$storytelling_readiness_score >= 0.78 &
assets$evidence_support_score >= 0.70 &
assets$governance_score >= 0.70,
"ready",
"governance review"
)
dimension_summary <- data.frame(
narrative_dimension = dimensions,
assets_with_dimension = colSums(dimension_matrix),
assets_with_support = colSums(dimension_matrix & support_matrix)
)
dimension_summary$presence_rate <- round(dimension_summary$assets_with_dimension / nrow(assets), 4)
dimension_summary$support_rate <- ifelse(
dimension_summary$assets_with_dimension == 0,
0,
round(dimension_summary$assets_with_support / dimension_summary$assets_with_dimension, 4)
)
audience_summary <- aggregate(
storytelling_readiness_score ~ audience,
data = assets,
FUN = mean
)
names(audience_summary) <- c("audience", "average_storytelling_readiness")
audience_summary$average_storytelling_readiness <- round(audience_summary$average_storytelling_readiness, 4)
story_purpose_summary <- aggregate(
storytelling_readiness_score ~ story_purpose,
data = assets,
FUN = mean
)
names(story_purpose_summary) <- c("story_purpose", "average_storytelling_readiness")
story_purpose_summary$average_storytelling_readiness <- round(story_purpose_summary$average_storytelling_readiness, 4)
governance_queue <- subset(assets, storytelling_status == "governance review")
catalog <- assets[, c(
"asset_id",
"asset_name",
"asset_type",
"story_purpose",
"audience",
"storytelling_readiness_score",
"storytelling_status"
)]
catalog$series <- "Content Frameworks"
catalog$article_slug <- "storytelling-frameworks-for-transformation-and-action"
catalog$github_path <- "articles/storytelling-frameworks-for-transformation-and-action/"
write.csv(assets, file.path(tables_dir, "r_storytelling_readiness_report.csv"), row.names = FALSE)
write.csv(dimension_summary, file.path(tables_dir, "r_storytelling_dimension_summary_report.csv"), row.names = FALSE)
write.csv(audience_summary, file.path(tables_dir, "r_storytelling_audience_summary_report.csv"), row.names = FALSE)
write.csv(story_purpose_summary, file.path(tables_dir, "r_storytelling_purpose_summary_report.csv"), row.names = FALSE)
write.csv(governance_queue, file.path(tables_dir, "r_storytelling_governance_queue.csv"), row.names = FALSE)
write.csv(catalog, file.path(catalog_dir, "r_storytelling_catalog_export.csv"), row.names = FALSE)
png(file.path(figures_dir, "r_storytelling_readiness_scores.png"), width = 1200, height = 800)
barplot(
assets$storytelling_readiness_score,
names.arg = assets$asset_id,
las = 2,
main = "Storytelling Framework Readiness Scores",
ylab = "Readiness score"
)
dev.off()
png(file.path(figures_dir, "r_storytelling_dimension_presence.png"), width = 1100, height = 750)
barplot(
dimension_summary$presence_rate,
names.arg = dimension_summary$narrative_dimension,
las = 2,
main = "Narrative Dimension Presence",
ylab = "Presence rate"
)
dev.off()
writeLines(c(
"# Storytelling Frameworks for Transformation and Action: R Audit",
"",
paste0("- Content assets: ", nrow(assets)),
paste0("- Manual review queue records: ", nrow(review_queue)),
paste0("- Average storytelling readiness score: ", round(mean(assets$storytelling_readiness_score), 4)),
paste0("- Assets requiring governance review: ", nrow(governance_queue))
), file.path(reports_dir, "r_storytelling_framework_report.md"))
print("Storytelling framework R analysis complete.")
print(assets[, c("asset_id", "story_purpose", "storytelling_readiness_score", "storytelling_status")])
This R workflow summarizes narrative dimension coverage, evidence support, agency, transformation credibility, audience fit, story purpose, and governance review needs across storytelling assets.
GitHub repository
The companion repository provides a reproducible technical scaffold for the article’s computational examples, including storytelling inventories, narrative completeness analysis, evidence-support review, agency scoring, transformation-claim checks, ethical-risk flags, governance queues, synthetic data, generated outputs, and reproducibility documentation.
The full code distribution for this article, including selected article examples, expanded computational workflows, reusable HTML/CSS/PHP components, Java content models, Python and R workflows, SQL schemas, synthetic datasets, generated outputs, governance documentation, and notebook placeholders, is available on GitHub.
A Practical Method for Using Storytelling Frameworks Responsibly
A practical storytelling method begins with purpose. The question is not “How do we make this more dramatic?” The question is “What transformation, decision, learning, or action does the audience need to understand, and what story structure can represent it responsibly?”
1. Define the story purpose
Clarify whether the story is meant to explain, teach, persuade, document, mobilize, preserve memory, or support action.
2. Establish setting and context
Describe the conditions, system, institution, history, audience state, or environment in which the story begins.
3. Map actors and agency
Identify who acts, who is affected, who decides, who benefits, who carries risk, and who may be missing.
4. Define truthful tension
Name the conflict, gap, uncertainty, risk, injustice, friction, or decision without exaggeration.
5. Build sequence
Organize events, evidence, decisions, or learning steps so the audience can follow how movement happens.
6. Identify transformation
Clarify what changes, what does not change, what conditions apply, and what evidence supports the claim.
7. Connect evidence to narrative claims
Distinguish examples, anecdotes, data, methods, testimony, and interpretation.
8. Define responsible action
Offer a next step that matches audience readiness, evidence, accessibility, and ethical context.
9. Review representation and consent
Check whether people, communities, and institutions are represented fairly and with appropriate permission or source context.
10. Govern and revise
Track story purpose, evidence, actor representation, transformation claims, review dates, and revision queues.
| Design step | Question | Output |
|---|---|---|
| Purpose definition | Why is this story being used? | Story-purpose note. |
| Context mapping | Where does the story begin? | Setting and boundary record. |
| Actor mapping | Who has agency, responsibility, and risk? | Actor and representation map. |
| Tension design | What real conflict or uncertainty drives movement? | Proportionate tension statement. |
| Sequence design | How does movement unfold? | Narrative sequence outline. |
| Transformation review | What changes, and what evidence supports that change? | Transformation and limitation note. |
| Action design | What should the audience understand or do next? | Agency-preserving next step. |
| Governance | How will the story remain accurate and fair? | Review status and update queue. |
This method turns storytelling into a responsible content-framework practice rather than an attention tactic.
Common Pitfalls
Storytelling frameworks often fail when writers treat story as a shortcut to emotion. Strong storytelling requires discipline. It needs evidence, proportion, structure, representation, and respect for audience agency.
| Pitfall | What goes wrong | Better practice |
|---|---|---|
| Using story as decoration | An anecdote is added without structural purpose. | Define how the story supports explanation, transformation, or action. |
| Creating a false hero | One actor is credited while systems and communities disappear. | Map agency, institutions, constraints, and collective work. |
| Overdramatizing tension | The story escalates stakes beyond evidence. | Use proportional tension and clear source support. |
| Overpromising transformation | The ending implies change that evidence does not support. | Bound the transformation claim and show mechanism. |
| Letting anecdote replace evidence | A vivid example is treated as proof of a broader pattern. | Separate story, evidence, and generalization. |
| Using emotional pressure | The story pushes action before understanding. | Preserve audience choice and context. |
| Skipping governance | Stories become stale, reused out of context, or misaligned. | Track review dates, consent, source context, and revision needs. |
Storytelling works best when it deepens understanding rather than bypassing it.
Why This Matters Now
Storytelling frameworks matter now because digital communication is crowded with narratives competing for attention, trust, and action. Brands, institutions, campaigns, public agencies, nonprofits, educators, creators, and AI systems all use story structures to frame meaning. Some stories clarify. Others distort.
AI-assisted publishing makes this more urgent. AI can generate polished stories quickly, but fluency does not guarantee accuracy, representation, evidence, consent, or ethical action. A generated narrative may sound coherent while hiding missing context, exaggerated transformation, false agency, or unsupported claims.
For public-interest communication, storytelling should support informed judgment and responsible action. It should help people understand complex problems without reducing them to simple heroes and villains. It should make systems visible without removing human experience. It should motivate without manipulation.
For Content Catalyst’s knowledge architecture, storytelling frameworks can help connect article maps, research communication, educational scaffolding, evidence architecture, repository workflows, and ethical governance. They can turn a growing publication into a navigable system of meaning, not just a database of articles.
Story gives movement to knowledge. Governance keeps that movement honest.
Conclusion
Storytelling Frameworks for Transformation and Action help writers, editors, researchers, educators, strategists, and public communicators organize change. They connect setting, actors, tension, sequence, transformation, evidence, and action into a coherent structure.
Used well, storytelling frameworks clarify meaning, support learning, strengthen evidence communication, preserve institutional memory, guide audience movement, and connect complex ideas to responsible action. They help readers understand not only what happened, but why it matters and how change becomes possible.
Used poorly, storytelling can oversimplify systems, exaggerate stakes, erase agency, exploit emotion, overpromise transformation, and substitute vivid examples for evidence. That is why storytelling frameworks should be paired with evidence architecture, audience research, accessibility, ethical review, representation checks, and editorial governance.
For content frameworks, storytelling is not merely a creative technique. It is a structured method for helping knowledge move from context to meaning, from meaning to judgment, and from judgment to responsible action.
Related articles
- Content Frameworks
- Hierarchy of Effects and Communication Response Models
- Ethical Risks in Persuasive Frameworks
- AIDA and the Logic of Persuasive Sequence
- PAS, BAB, and the Structure of Tension and Transformation
- 5W1H and the Architecture of Explanatory Completeness
- Evidence Architecture in Explanatory Content
- Audience Journey Frameworks and Content Sequencing
- Public Reasoning and Framework Design
- Strategic Narratives and the Logic of Direction
Further reading
- Bruner, J. (1991) ‘The Narrative Construction of Reality’, Critical Inquiry, 18(1), pp. 1–21. Available at: https://doi.org/10.1086/448619
- Campbell, J. (2008) The Hero with a Thousand Faces. 3rd edn. Novato, CA: New World Library.
- Fisher, W.R. (1984) ‘Narration as a Human Communication Paradigm: The Case of Public Moral Argument’, Communication Monographs, 51(1), pp. 1–22. Available at: https://doi.org/10.1080/03637758409390180
- Green, M.C. and Brock, T.C. (2000) ‘The Role of Transportation in the Persuasiveness of Public Narratives’, Journal of Personality and Social Psychology, 79(5), pp. 701–721. Available at: https://www.communicationcache.com/uploads/1/0/8/8/10887248/the_role_of_transportation_in_the_persuasiveness_of_public_narratives.pdf
- Heath, C. and Heath, D. (2007) Made to Stick: Why Some Ideas Survive and Others Die. New York: Random House. Available at: https://heathbrothers.com/books/made-to-stick/
- National Academies of Sciences, Engineering, and Medicine (2017) Communicating Science Effectively: A Research Agenda. Washington, DC: The National Academies Press. Available at: https://doi.org/10.17226/23674
- Vogler, C. (2007) The Writer’s Journey: Mythic Structure for Writers. 3rd edn. Studio City, CA: Michael Wiese Productions.
- World Wide Web Consortium (2024) Web Content Accessibility Guidelines (WCAG) 2.2. Available at: https://www.w3.org/TR/WCAG22/
References
- Bruner, J. (1991) ‘The Narrative Construction of Reality’, Critical Inquiry, 18(1), pp. 1–21. Available at: https://doi.org/10.1086/448619
- Campbell, J. (2008) The Hero with a Thousand Faces. 3rd edn. Novato, CA: New World Library.
- Fisher, W.R. (1984) ‘Narration as a Human Communication Paradigm: The Case of Public Moral Argument’, Communication Monographs, 51(1), pp. 1–22. Available at: https://doi.org/10.1080/03637758409390180
- Green, M.C. and Brock, T.C. (2000) ‘The Role of Transportation in the Persuasiveness of Public Narratives’, Journal of Personality and Social Psychology, 79(5), pp. 701–721. Available at: https://www.communicationcache.com/uploads/1/0/8/8/10887248/the_role_of_transportation_in_the_persuasiveness_of_public_narratives.pdf
- Heath, C. and Heath, D. (2007) Made to Stick: Why Some Ideas Survive and Others Die. New York: Random House. Available at: https://heathbrothers.com/books/made-to-stick/
- National Academies of Sciences, Engineering, and Medicine (2017) Communicating Science Effectively: A Research Agenda. Washington, DC: The National Academies Press. Available at: https://doi.org/10.17226/23674
- Vogler, C. (2007) The Writer’s Journey: Mythic Structure for Writers. 3rd edn. Studio City, CA: Michael Wiese Productions.
- World Wide Web Consortium (2024) Web Content Accessibility Guidelines (WCAG) 2.2. W3C Recommendation. Available at: https://www.w3.org/TR/WCAG22/
